diff options
Diffstat (limited to 'test/dialect/oracle/test_compiler.py')
-rw-r--r-- | test/dialect/oracle/test_compiler.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/test/dialect/oracle/test_compiler.py b/test/dialect/oracle/test_compiler.py index 931079240..f11daebb4 100644 --- a/test/dialect/oracle/test_compiler.py +++ b/test/dialect/oracle/test_compiler.py @@ -9,6 +9,7 @@ from sqlalchemy import ForeignKey from sqlalchemy import func from sqlalchemy import Index from sqlalchemy import Integer +from sqlalchemy import literal_column from sqlalchemy import MetaData from sqlalchemy import or_ from sqlalchemy import outerjoin @@ -25,6 +26,7 @@ from sqlalchemy.dialects.oracle import base as oracle from sqlalchemy.dialects.oracle import cx_oracle from sqlalchemy.engine import default from sqlalchemy.sql import column +from sqlalchemy.sql import quoted_name from sqlalchemy.sql import table from sqlalchemy.testing import assert_raises_message from sqlalchemy.testing import AssertsCompiledSQL @@ -260,6 +262,62 @@ class CompileTest(fixtures.TestBase, AssertsCompiledSQL): "UPDATE", ) + def test_limit_special_quoting(self): + """Oracle-specific test for #4730. + + Even though this issue is generic, test the originally reported Oracle + use case. + + """ + + col = literal_column("SUM(ABC)").label("SUM(ABC)") + tbl = table("my_table") + query = select([col]).select_from(tbl).order_by(col).limit(100) + + self.assert_compile( + query, + 'SELECT anon_1."SUM(ABC)" FROM ' + '(SELECT SUM(ABC) AS "SUM(ABC)" ' + "FROM my_table ORDER BY SUM(ABC)) anon_1 " + "WHERE ROWNUM <= :param_1", + ) + + col = literal_column("SUM(ABC)").label(quoted_name("SUM(ABC)", True)) + tbl = table("my_table") + query = select([col]).select_from(tbl).order_by(col).limit(100) + + self.assert_compile( + query, + 'SELECT anon_1."SUM(ABC)" FROM ' + '(SELECT SUM(ABC) AS "SUM(ABC)" ' + "FROM my_table ORDER BY SUM(ABC)) anon_1 " + "WHERE ROWNUM <= :param_1", + ) + + col = literal_column("SUM(ABC)").label("SUM(ABC)_") + tbl = table("my_table") + query = select([col]).select_from(tbl).order_by(col).limit(100) + + self.assert_compile( + query, + 'SELECT anon_1."SUM(ABC)_" FROM ' + '(SELECT SUM(ABC) AS "SUM(ABC)_" ' + "FROM my_table ORDER BY SUM(ABC)) anon_1 " + "WHERE ROWNUM <= :param_1", + ) + + col = literal_column("SUM(ABC)").label(quoted_name("SUM(ABC)_", True)) + tbl = table("my_table") + query = select([col]).select_from(tbl).order_by(col).limit(100) + + self.assert_compile( + query, + 'SELECT anon_1."SUM(ABC)_" FROM ' + '(SELECT SUM(ABC) AS "SUM(ABC)_" ' + "FROM my_table ORDER BY SUM(ABC)) anon_1 " + "WHERE ROWNUM <= :param_1", + ) + def test_for_update(self): table1 = table( "mytable", column("myid"), column("name"), column("description") |