# HG changeset patch # User catherine@dellzilla # Date 1227570831 18000 # Node ID 4a3af9ac215fca1799f4ce5794a52560b8529c8a # Parent 932893dcf0c90210a424f380a51a0361d2b127d6 wow, parsing is broken diff -r 932893dcf0c9 -r 4a3af9ac215f sqlpython/sqlpyPlus.py --- a/sqlpython/sqlpyPlus.py Mon Nov 24 16:26:11 2008 -0500 +++ b/sqlpython/sqlpyPlus.py Mon Nov 24 18:53:51 2008 -0500 @@ -350,9 +350,6 @@ if not givenBindVars.has_key(varname): print 'Bind variable %s not defined.' % (varname) return result - -def copyStatementEnding(newString, parsedOldStatement): - return newString + (parsedOldStatement.terminator or ';') + str(parsedOldStatement.rowlimit or '') class sqlpyPlus(sqlpython.sqlpython): defaultExtension = 'sql' @@ -372,8 +369,8 @@ self.stdoutBeforeSpool = sys.stdout self.spoolFile = None self.autobind = False - def default(self, arg): - sqlpython.sqlpython.default(self, arg) + #def default(self, arg): + # sqlpython.sqlpython.default(self, arg) # overrides cmd's parseline def parseline(self, line): @@ -545,8 +542,8 @@ def do_pull(self, arg, opts): """Displays source code.""" - arg = self.parsed(arg).unterminated.upper() - object_type, owner, object_name = self.resolve(arg) + target = arg.upper() + object_type, owner, object_name = self.resolve(target) if not object_type: return self.stdout.write("%s %s.%s\n" % (object_type, owner, object_name)) @@ -677,8 +674,8 @@ return object_type, owner, object_name, colName def do_resolve(self, arg): - arg = self.parsed(arg).unterminated.upper() - self.stdout.write(','.join(self.resolve(arg))+'\n') + target = arg.upper() + self.stdout.write(','.join(self.resolve(target))+'\n') def spoolstop(self): if self.spoolFile: @@ -793,8 +790,8 @@ self.do_select(self.parsed(sql, useTerminatorFrom=arg)) def do_head(self, arg): - sql = self.parsed('SELECT * FROM %s' % arg, useTerminatorFrom=arg) - sql.parsed.suffix = sql.parsed.suffix or '10' + sql = self.parsed('SELECT * FROM %s;' % arg, useTerminatorFrom=arg) + sql.parsed['suffix'] = sql.parsed.suffix or '10' self.do_select(sql) def do_print(self, arg): @@ -814,7 +811,6 @@ def do_setbind(self, arg): if not arg: return self.do_print(arg) - arg = self.parsed(arg).unterminated try: assigner, startat, endat = self.assignmentScanner.scanner.scanString(arg).next() except StopIteration: @@ -841,7 +837,6 @@ if arg[0] == ':': self.do_setbind(arg[1:]) else: - arg = self.parsed(arg).unterminated varsUsed = findBinds(arg, self.binds, {}) try: self.curs.execute('begin\n%s;end;' % arg, varsUsed) @@ -901,8 +896,7 @@ def do_grep(self, arg, opts): """grep PATTERN TABLE - search for term in any of TABLE's fields""" - arg = self.parsed(arg) - targetnames = arg.unterminated.split() + targetnames = arg.split() pattern = targetnames.pop(0) targets = [] for target in targetnames: @@ -932,8 +926,6 @@ def do_refs(self, arg): result = [] - parsed = self.parsed(arg) - arg = parsed.unterminated.upper() (type, owner, table_name) = self.resolve(arg) self.curs.execute("""SELECT constraint_name, r_owner, r_constraint_name FROM all_constraints diff -r 932893dcf0c9 -r 4a3af9ac215f sqlpython/sqlpython.py --- a/sqlpython/sqlpython.py Mon Nov 24 16:26:11 2008 -0500 +++ b/sqlpython/sqlpython.py Mon Nov 24 18:53:51 2008 -0500 @@ -94,10 +94,8 @@ terminatorSearchString = '|'.join('\\' + d.split()[0] for d in do_terminators.__doc__.splitlines()) def default(self, arg): - statement = self.parsed(arg) - self.query = statement.unterminated - self.varsUsed = sqlpyPlus.findBinds(self.query, self.binds, givenBindVars={}) - self.curs.execute(self.query, self.varsUsed) + self.varsUsed = sqlpyPlus.findBinds(arg, self.binds, givenBindVars={}) + self.curs.execute('%s %s' % (arg.parsed.command, arg.parsed.args), self.varsUsed) print '\nExecuted%s\n' % ((self.curs.rowcount > 0) and ' (%d rows)' % self.curs.rowcount or '') def do_commit(self, arg): @@ -106,7 +104,7 @@ self.default('rollback %s;' % (arg)) def do_quit(self, arg): if self.commit_on_exit and hasattr(self, 'curs'): - self.default('commit;') + self.default('commit') return cmd2.Cmd.do_quit(self, None) do_exit = do_quit do_q = do_quit