@@ -407,36 +407,26 @@ def test_get_param_types_none(self):
407407 self .assertEqual (get_param_types (None ), None )
408408
409409 def test_ensure_where_clause (self ):
410+ from google .cloud .spanner_dbapi .exceptions import ProgrammingError
410411 from google .cloud .spanner_dbapi .parse_utils import ensure_where_clause
411412
412- cases = [
413- (
414- "UPDATE a SET a.b=10 FROM articles a JOIN d c ON a.ai = c.ai WHERE c.ci = 1" ,
415- "UPDATE a SET a.b=10 FROM articles a JOIN d c ON a.ai = c.ai WHERE c.ci = 1" ,
416- ),
417- (
418- "UPDATE (SELECT * FROM A JOIN c ON ai.id = c.id WHERE cl.ci = 1) SET d=5" ,
419- "UPDATE (SELECT * FROM A JOIN c ON ai.id = c.id WHERE cl.ci = 1) SET d=5 WHERE 1=1" ,
420- ),
421- (
422- "UPDATE T SET A = 1 WHERE C1 = 1 AND C2 = 2" ,
423- "UPDATE T SET A = 1 WHERE C1 = 1 AND C2 = 2" ,
424- ),
425- (
426- "UPDATE T SET r=r*0.9 WHERE id IN (SELECT id FROM items WHERE r / w >= 1.3 AND q > 100)" ,
427- "UPDATE T SET r=r*0.9 WHERE id IN (SELECT id FROM items WHERE r / w >= 1.3 AND q > 100)" ,
428- ),
429- (
430- "UPDATE T SET r=r*0.9 WHERE id IN (SELECT id FROM items WHERE r / w >= 1.3 AND q > 100)" ,
431- "UPDATE T SET r=r*0.9 WHERE id IN (SELECT id FROM items WHERE r / w >= 1.3 AND q > 100)" ,
432- ),
433- ("DELETE * FROM TABLE" , "DELETE * FROM TABLE WHERE 1=1" ),
434- ]
413+ cases = (
414+ "UPDATE a SET a.b=10 FROM articles a JOIN d c ON a.ai = c.ai WHERE c.ci = 1" ,
415+ "UPDATE T SET A = 1 WHERE C1 = 1 AND C2 = 2" ,
416+ "UPDATE T SET r=r*0.9 WHERE id IN (SELECT id FROM items WHERE r / w >= 1.3 AND q > 100)" ,
417+ )
418+ err_cases = (
419+ "UPDATE (SELECT * FROM A JOIN c ON ai.id = c.id WHERE cl.ci = 1) SET d=5" ,
420+ "DELETE * FROM TABLE" ,
421+ )
422+ for sql in cases :
423+ with self .subTest (sql = sql ):
424+ ensure_where_clause (sql )
435425
436- for sql , want in cases :
426+ for sql in err_cases :
437427 with self .subTest (sql = sql ):
438- got = ensure_where_clause ( sql )
439- self . assertEqual ( got , want )
428+ with self . assertRaises ( ProgrammingError ):
429+ ensure_where_clause ( sql )
440430
441431 def test_escape_name (self ):
442432 from google .cloud .spanner_dbapi .parse_utils import escape_name
0 commit comments