summaryrefslogtreecommitdiff
path: root/test/sql/test_defaults.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2016-09-30 09:23:50 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2016-09-30 09:23:50 -0400
commit079df65dc0f71ea4d1771b6ae17e13242c766517 (patch)
tree2b42abaa29461b6839b1c7115bad9a7faa3beae9 /test/sql/test_defaults.py
parent800a18aff2927433163afec3b7a4671eabe1c2e3 (diff)
downloadsqlalchemy-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.py28
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(