From: Mike Bayer Date: Mon, 6 Dec 2010 23:45:19 +0000 (-0500) Subject: - hardwire the huge LIMIT number on MySQL. this might fix the OurSQL py3k X-Git-Tag: rel_0_7b1~192 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=83be34c047ca6caf484c7aaaefe58fb078b3e81d;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - 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. --- diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index a6e8f8c21b..42072699e0 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -1224,9 +1224,19 @@ class MySQLCompiler(compiler.SQLCompiler): 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 --git a/test/dialect/test_mysql.py b/test/dialect/test_mysql.py index 7b06f412a5..02b888fed9 100644 --- a/test/dialect/test_mysql.py +++ b/test/dialect/test_mysql.py @@ -1073,8 +1073,8 @@ class SQLTest(TestBase, AssertsCompiledSQL): 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):