diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-09-30 09:23:50 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-09-30 09:23:50 -0400 |
commit | 079df65dc0f71ea4d1771b6ae17e13242c766517 (patch) | |
tree | 2b42abaa29461b6839b1c7115bad9a7faa3beae9 /test/sql/test_defaults.py | |
parent | 800a18aff2927433163afec3b7a4671eabe1c2e3 (diff) | |
download | sqlalchemy-079df65dc0f71ea4d1771b6ae17e13242c766517.tar.gz |
Escape literal string values passed to server_default
A string sent as a column default via the
:paramref:`.Column.server_default` parameter is now escaped for quotes.
This change is backwards compatible with code that may have been
working around this previously.
Change-Id: I341298a76cc67bc0a53df4ab51ab9379f2294cdd
Fixes: #3809
Diffstat (limited to 'test/sql/test_defaults.py')
-rw-r--r-- | test/sql/test_defaults.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/sql/test_defaults.py b/test/sql/test_defaults.py index 57af1e536..1b033fce8 100644 --- a/test/sql/test_defaults.py +++ b/test/sql/test_defaults.py @@ -24,6 +24,9 @@ class DDLTest(fixtures.TestBase, AssertsCompiledSQL): __dialect__ = 'default' def test_string(self): + # note: that the datatype is an Integer here doesn't matter, + # the server_default is interpreted independently of the + # column's datatype. m = MetaData() t = Table('t', m, Column('x', Integer, server_default='5')) self.assert_compile( @@ -31,6 +34,14 @@ class DDLTest(fixtures.TestBase, AssertsCompiledSQL): "CREATE TABLE t (x INTEGER DEFAULT '5')" ) + def test_string_w_quotes(self): + m = MetaData() + t = Table('t', m, Column('x', Integer, server_default="5'6")) + self.assert_compile( + CreateTable(t), + "CREATE TABLE t (x INTEGER DEFAULT '5''6')" + ) + def test_text(self): m = MetaData() t = Table('t', m, Column('x', Integer, server_default=text('5 + 8'))) @@ -39,6 +50,23 @@ class DDLTest(fixtures.TestBase, AssertsCompiledSQL): "CREATE TABLE t (x INTEGER DEFAULT 5 + 8)" ) + def test_text_w_quotes(self): + m = MetaData() + t = Table('t', m, Column('x', Integer, server_default=text("5 ' 8"))) + self.assert_compile( + CreateTable(t), + "CREATE TABLE t (x INTEGER DEFAULT 5 ' 8)" + ) + + def test_literal_binds_w_quotes(self): + m = MetaData() + t = Table('t', m, Column('x', Integer, + server_default=literal("5 ' 8"))) + self.assert_compile( + CreateTable(t), + """CREATE TABLE t (x INTEGER DEFAULT '5 '' 8')""" + ) + def test_text_literal_binds(self): m = MetaData() t = Table( |