diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-08-31 11:30:03 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-08-31 11:30:03 -0400 |
| commit | c39ff9978dbb77cbea4f1ee08234887d8aa1b165 (patch) | |
| tree | f0d21317e0fc58a0eb3dc5c3487cd8d75a0fd7ec /test/sql/test_defaults.py | |
| parent | 956907a4b15f6dcc492582a7ad03706ff62d96fb (diff) | |
| download | sqlalchemy-c39ff9978dbb77cbea4f1ee08234887d8aa1b165.tar.gz | |
- Fixed regression in 1.0-released default-processor for multi-VALUES
insert statement, :ticket:`3288`, where the column type for the
default-holding column would not be propagated to the compiled
statement in the case where the default was being used,
leading to bind-level type handlers not being invoked.
fixes #3520
Diffstat (limited to 'test/sql/test_defaults.py')
| -rw-r--r-- | test/sql/test_defaults.py | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/test/sql/test_defaults.py b/test/sql/test_defaults.py index 7f4d5d30a..673085cf7 100644 --- a/test/sql/test_defaults.py +++ b/test/sql/test_defaults.py @@ -123,6 +123,14 @@ class DefaultTest(fixtures.TestBase): def gen_default(cls, ctx): return "hi" + class MyType(TypeDecorator): + impl = String(50) + + def process_bind_param(self, value, dialect): + if value is not None: + value = "BIND" + value + return value + # select "count(1)" returns different results on different DBs also # correct for "current_date" compatible as column default, value # differences @@ -211,7 +219,10 @@ class DefaultTest(fixtures.TestBase): server_default='ddl'), # python method w/ context - Column('col10', String(20), default=MyClass.gen_default) + Column('col10', String(20), default=MyClass.gen_default), + + # fixed default w/ type that has bound processor + Column('col11', MyType(), default='foo') ) t.create() @@ -391,7 +402,7 @@ class DefaultTest(fixtures.TestBase): today = datetime.date.today() eq_(l.fetchall(), [ (x, 'imthedefault', f, ts, ts, ctexec, True, False, - 12, today, 'py', 'hi') + 12, today, 'py', 'hi', 'BINDfoo') for x in range(51, 54)]) t.insert().execute(col9=None) @@ -401,7 +412,7 @@ class DefaultTest(fixtures.TestBase): eq_(t.select(t.c.col1 == 54).execute().fetchall(), [(54, 'imthedefault', f, ts, ts, ctexec, True, False, - 12, today, None, 'hi')]) + 12, today, None, 'hi', 'BINDfoo')]) def test_insertmany(self): t.insert().execute({}, {}, {}) @@ -411,11 +422,11 @@ class DefaultTest(fixtures.TestBase): today = datetime.date.today() eq_(l.fetchall(), [(51, 'imthedefault', f, ts, ts, ctexec, True, False, - 12, today, 'py', 'hi'), + 12, today, 'py', 'hi', 'BINDfoo'), (52, 'imthedefault', f, ts, ts, ctexec, True, False, - 12, today, 'py', 'hi'), + 12, today, 'py', 'hi', 'BINDfoo'), (53, 'imthedefault', f, ts, ts, ctexec, True, False, - 12, today, 'py', 'hi')]) + 12, today, 'py', 'hi', 'BINDfoo')]) @testing.requires.multivalues_inserts def test_insert_multivalues(self): @@ -427,11 +438,11 @@ class DefaultTest(fixtures.TestBase): today = datetime.date.today() eq_(l.fetchall(), [(51, 'imthedefault', f, ts, ts, ctexec, True, False, - 12, today, 'py', 'hi'), + 12, today, 'py', 'hi', 'BINDfoo'), (52, 'imthedefault', f, ts, ts, ctexec, True, False, - 12, today, 'py', 'hi'), + 12, today, 'py', 'hi', 'BINDfoo'), (53, 'imthedefault', f, ts, ts, ctexec, True, False, - 12, today, 'py', 'hi')]) + 12, today, 'py', 'hi', 'BINDfoo')]) def test_no_embed_in_sql(self): """Using a DefaultGenerator, Sequence, DefaultClause @@ -498,11 +509,11 @@ class DefaultTest(fixtures.TestBase): today = datetime.date.today() eq_(l.fetchall(), [(51, 'im the update', f2, ts, ts, ctexec, False, False, - 13, today, 'py', 'hi'), + 13, today, 'py', 'hi', 'BINDfoo'), (52, 'im the update', f2, ts, ts, ctexec, True, False, - 13, today, 'py', 'hi'), + 13, today, 'py', 'hi', 'BINDfoo'), (53, 'im the update', f2, ts, ts, ctexec, True, False, - 13, today, 'py', 'hi')]) + 13, today, 'py', 'hi', 'BINDfoo')]) @testing.fails_on('firebird', 'Data type unknown') def test_update(self): @@ -514,7 +525,7 @@ class DefaultTest(fixtures.TestBase): l = l.first() eq_(l, (pk, 'im the update', f2, None, None, ctexec, True, False, - 13, datetime.date.today(), 'py', 'hi')) + 13, datetime.date.today(), 'py', 'hi', 'BINDfoo')) eq_(11, f2) @testing.fails_on('firebird', 'Data type unknown') |
