summaryrefslogtreecommitdiff
path: root/test/sql/test_compiler.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/sql/test_compiler.py')
-rw-r--r--test/sql/test_compiler.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/test/sql/test_compiler.py b/test/sql/test_compiler.py
index 6330ee34e..528a49558 100644
--- a/test/sql/test_compiler.py
+++ b/test/sql/test_compiler.py
@@ -2855,6 +2855,50 @@ class CRUDTest(fixtures.TestBase, AssertsCompiledSQL):
self.assert_compile(i, "INSERT INTO foo (x, y) VALUES ((:param_1 + :x2), :y)",
params={'x2':1, 'y':2})
+ def test_unconsumed_names(self):
+ t = table("t", column("x"), column("y"))
+ t2 = table("t2", column("q"), column("z"))
+ assert_raises_message(
+ exc.SAWarning,
+ "Unconsumed column names: z",
+ t.insert().values(x=5, z=5).compile,
+ )
+ assert_raises_message(
+ exc.SAWarning,
+ "Unconsumed column names: z",
+ t.update().values(x=5, z=5).compile,
+ )
+
+ assert_raises_message(
+ exc.SAWarning,
+ "Unconsumed column names: j",
+ t.update().values(x=5, j=7).values({t2.c.z:5}).
+ where(t.c.x==t2.c.q).compile,
+ )
+
+ # bindparam names don't get counted
+ i = t.insert().values(x=3 + bindparam('x2'))
+ self.assert_compile(
+ i,
+ "INSERT INTO t (x) VALUES ((:param_1 + :x2))"
+ )
+
+ # even if in the params list
+ i = t.insert().values(x=3 + bindparam('x2'))
+ self.assert_compile(
+ i,
+ "INSERT INTO t (x) VALUES ((:param_1 + :x2))",
+ params={"x2":1}
+ )
+
+ assert_raises_message(
+ exc.SAWarning,
+ "Unconsumed column names: j",
+ t.update().values(x=5, j=7).compile,
+ column_keys=['j']
+ )
+
+
def test_labels_no_collision(self):
t = table('foo', column('id'), column('foo_id'))