diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2018-04-04 13:36:28 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2018-04-04 16:46:16 -0400 |
commit | b4eb29253cb29a069973503f36d1103d4a18311c (patch) | |
tree | d74797804981a1234b993569fa426e78ba7a6e00 /lib/sqlalchemy/testing/suite/test_sequence.py | |
parent | 9f986ce10c6755af3f347a56f9ea03e0e2c5943e (diff) | |
download | sqlalchemy-b4eb29253cb29a069973503f36d1103d4a18311c.tar.gz |
Ensure all visit_sequence accepts **kw args
Fixed issue where the compilation of an INSERT statement with the
"literal_binds" option that also uses an explicit sequence and "inline"
generation, as on Postgresql and Oracle, would fail to accommodate the
extra keyword argument within the sequence processing routine.
Change-Id: Ibdab7d340aea7429a210c9535ccf1a3e85f074fb
Fixes: #4231
Diffstat (limited to 'lib/sqlalchemy/testing/suite/test_sequence.py')
-rw-r--r-- | lib/sqlalchemy/testing/suite/test_sequence.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/lib/sqlalchemy/testing/suite/test_sequence.py b/lib/sqlalchemy/testing/suite/test_sequence.py index b2d52f27c..f1c00de6b 100644 --- a/lib/sqlalchemy/testing/suite/test_sequence.py +++ b/lib/sqlalchemy/testing/suite/test_sequence.py @@ -3,7 +3,7 @@ from ..config import requirements from ..assertions import eq_ from ... import testing -from ... import Integer, String, Sequence, schema +from ... import Integer, String, Sequence, schema, MetaData from ..schema import Table, Column @@ -71,6 +71,28 @@ class SequenceTest(fixtures.TablesTest): ) +class SequenceCompilerTest(testing.AssertsCompiledSQL, fixtures.TestBase): + __requires__ = ('sequences',) + __backend__ = True + + def test_literal_binds_inline_compile(self): + table = Table( + 'x', MetaData(), + Column('y', Integer, Sequence('y_seq')), + Column('q', Integer)) + + stmt = table.insert().values(q=5) + + seq_nextval = testing.db.dialect.statement_compiler( + statement=None, dialect=testing.db.dialect).visit_sequence( + Sequence("y_seq")) + self.assert_compile( + stmt, + "INSERT INTO x (y, q) VALUES (%s, 5)" % (seq_nextval, ), + literal_binds=True, + dialect=testing.db.dialect) + + class HasSequenceTest(fixtures.TestBase): __requires__ = 'sequences', __backend__ = True |