[Sqlalchemy-commits] sqlalchemy: oracle fixes
Brought to you by:
zzzeek
From: <co...@sq...> - 2010-12-06 23:45:40
|
details: http://hg.sqlalchemy.org/sqlalchemy/sqlalchemy/rev/7f5c3448c061 changeset: 7095:7f5c3448c061 user: zzzeek date: Mon Dec 06 17:05:32 2010 -0500 description: oracle fixes Subject: sqlalchemy: - hardwire the huge LIMIT number on MySQL. this might fix the OurSQL py3k details: http://hg.sqlalchemy.org/sqlalchemy/sqlalchemy/rev/7a820a5e2dd8 changeset: 7096:7a820a5e2dd8 user: zzzeek date: Mon Dec 06 18:45:19 2010 -0500 description: - hardwire the huge LIMIT number on MySQL. this might fix the OurSQL py3k bug we're having, though I'm not able to get a good run of OurSQL on OSX right now either Python 2 or 3. diffstat: lib/sqlalchemy/dialects/mysql/base.py | 14 ++++++++++++-- test/dialect/test_mysql.py | 4 ++-- test/engine/test_execute.py | 4 ++-- test/orm/inheritance/test_basic.py | 21 ++++++++++++++------- 4 files changed, 30 insertions(+), 13 deletions(-) diffs (116 lines): diff -r 7692fdf166b6 -r 7a820a5e2dd8 lib/sqlalchemy/dialects/mysql/base.py --- a/lib/sqlalchemy/dialects/mysql/base.py Mon Dec 06 13:29:13 2010 -0500 +++ b/lib/sqlalchemy/dialects/mysql/base.py Mon Dec 06 18:45:19 2010 -0500 @@ -1224,9 +1224,19 @@ elif offset is not None: # As suggested by the MySQL docs, need to apply an # artificial limit if one wasn't provided + # http://dev.mysql.com/doc/refman/5.0/en/select.html if limit is None: - limit = 18446744073709551615 - return ' \n LIMIT %s, %s' % ( + # hardwire the upper limit. Currently + # needed by OurSQL with Python 3 + # (https://bugs.launchpad.net/oursql/+bug/686232), + # but also is consistent with the usage of the upper + # bound as part of MySQL's "syntax" for OFFSET with + # no LIMIT + return ' \n LIMIT %s, %s' % ( + self.process(sql.literal(offset)), + "18446744073709551615") + else: + return ' \n LIMIT %s, %s' % ( self.process(sql.literal(offset)), self.process(sql.literal(limit))) else: diff -r 7692fdf166b6 -r 7a820a5e2dd8 test/dialect/test_mysql.py --- a/test/dialect/test_mysql.py Mon Dec 06 13:29:13 2010 -0500 +++ b/test/dialect/test_mysql.py Mon Dec 06 18:45:19 2010 -0500 @@ -1073,8 +1073,8 @@ self.assert_compile( select([t]).offset(10), - "SELECT t.col1, t.col2 FROM t LIMIT %s, %s", - {'param_1':10, 'param_2':18446744073709551615} + "SELECT t.col1, t.col2 FROM t LIMIT %s, 18446744073709551615", + {'param_1':10} ) def test_varchar_raise(self): diff -r 7692fdf166b6 -r 7a820a5e2dd8 test/engine/test_execute.py --- a/test/engine/test_execute.py Mon Dec 06 13:29:13 2010 -0500 +++ b/test/engine/test_execute.py Mon Dec 06 18:45:19 2010 -0500 @@ -286,7 +286,7 @@ # do an initial execute to clear out 'first connect' # messages - e.execute("select 10") + e.execute(select([10])) self.buf.flush() return e @@ -563,7 +563,7 @@ event.listen(engine, "on_before_execute", on_execute, retval=True) event.listen(engine, "on_before_cursor_execute", on_cursor_execute, retval=True) - engine.execute("select 1") + engine.execute(select([1])) eq_( canary, ['execute', 'cursor_execute'] ) diff -r 7692fdf166b6 -r 7a820a5e2dd8 test/orm/inheritance/test_basic.py --- a/test/orm/inheritance/test_basic.py Mon Dec 06 13:29:13 2010 -0500 +++ b/test/orm/inheritance/test_basic.py Mon Dec 06 18:45:19 2010 -0500 @@ -209,15 +209,18 @@ @classmethod def define_tables(cls, metadata): Table('table_a', metadata, - Column('id', Integer, primary_key=True), + Column('id', Integer, primary_key=True, + test_needs_autoincrement=True), Column('class_name', String(50)) ) Table('table_b', metadata, - Column('id', Integer, ForeignKey('table_a.id'), primary_key=True), + Column('id', Integer, ForeignKey('table_a.id'), + primary_key=True), Column('class_name', String(50)) ) Table('table_c', metadata, - Column('id', Integer, ForeignKey('table_b.id'),primary_key=True) + Column('id', Integer, ForeignKey('table_b.id'), + primary_key=True) ) @classmethod @@ -280,22 +283,26 @@ def define_tables(cls, metadata): global t1, t2, t3, t4 t1= Table('t1', metadata, - Column('id', Integer, primary_key=True, test_needs_autoincrement=True), + Column('id', Integer, primary_key=True, + test_needs_autoincrement=True), Column('data', String(30)) ) t2 = Table('t2', metadata, - Column('id', Integer, primary_key=True, test_needs_autoincrement=True), + Column('id', Integer, primary_key=True, + test_needs_autoincrement=True), Column('t1id', Integer, ForeignKey('t1.id')), Column('type', String(30)), Column('data', String(30)) ) t3 = Table('t3', metadata, - Column('id', Integer, ForeignKey('t2.id'), primary_key=True), + Column('id', Integer, ForeignKey('t2.id'), + primary_key=True), Column('moredata', String(30))) t4 = Table('t4', metadata, - Column('id', Integer, primary_key=True, test_needs_autoincrement=True), + Column('id', Integer, primary_key=True, + test_needs_autoincrement=True), Column('t3id', Integer, ForeignKey('t3.id')), Column('data', String(30))) |