xref: /sqlite-3.40.0/test/normalize.test (revision 16fd04cd)
191694dbdSdrh# 2018-01-08
291694dbdSdrh#
391694dbdSdrh# The author disclaims copyright to this source code.  In place of
491694dbdSdrh# a legal notice, here is a blessing:
591694dbdSdrh#
691694dbdSdrh#    May you do good and not evil.
791694dbdSdrh#    May you find forgiveness for yourself and forgive others.
891694dbdSdrh#    May you share freely, never taking more than you give.
991694dbdSdrh#
1091694dbdSdrh#***********************************************************************
1191694dbdSdrh#
1291694dbdSdrh# Tests for the sqlite3_normalize() extension function.
1391694dbdSdrh#
1491694dbdSdrh
1591694dbdSdrhset testdir [file dirname $argv0]
1691694dbdSdrhsource $testdir/tester.tcl
1791694dbdSdrhset testprefix normalize
1891694dbdSdrh
1991694dbdSdrhforeach {tnum sql norm} {
2091694dbdSdrh  100
2191694dbdSdrh  {SELECT * FROM t1 WHERE a IN (1) AND b=51.42}
2291694dbdSdrh  {select*from t1 where a in(?,?,?)and b=?;}
2391694dbdSdrh
2491694dbdSdrh  110
2591694dbdSdrh  {SELECT a, b+15, c FROM t1 WHERE d NOT IN (SELECT x FROM t2);}
2691694dbdSdrh  {select a,b+?,c from t1 where d not in(select x from t2);}
2791694dbdSdrh
2891694dbdSdrh  120
2991694dbdSdrh  { SELECT NULL, b FROM t1 -- comment text
3091694dbdSdrh     WHERE d IN (WITH t(a) AS (VALUES(5)) /* CTE */
3191694dbdSdrh                 SELECT a FROM t)
3291694dbdSdrh        OR e='hello';
3391694dbdSdrh  }
3491694dbdSdrh  {select?,b from t1 where d in(with t(a)as(values(?))select a from t)or e=?;}
3591694dbdSdrh
3691694dbdSdrh  121
3791694dbdSdrh  {/*Initial comment*/
3891694dbdSdrh   -- another comment line
3991694dbdSdrh   SELECT NULL  /* comment */ , b FROM t1 -- comment text
4091694dbdSdrh     WHERE d IN (WITH t(a) AS (VALUES(5)) /* CTE */
4191694dbdSdrh                 SELECT a FROM t)
4291694dbdSdrh        OR e='hello';
4391694dbdSdrh  }
4491694dbdSdrh  {select?,b from t1 where d in(with t(a)as(values(?))select a from t)or e=?;}
4591694dbdSdrh
4691694dbdSdrh  130
4791694dbdSdrh  {/* Query containing parameters */
4891694dbdSdrh   SELECT x,$::abc(15),y,@abc,z,?99,w FROM t1 /* Trailing comment */}
4991694dbdSdrh  {select x,?,y,?,z,?,w from t1;}
5091694dbdSdrh
5191694dbdSdrh  140
5291694dbdSdrh  {/* Long list on the RHS of IN */
5391694dbdSdrh   SELECT 15 IN (1,2,3,(SELECT * FROM t1),'xyz',x'abcd',22*(x+5),null);}
5491694dbdSdrh  {select?in(?,?,?);}
5591694dbdSdrh
5691694dbdSdrh  150
5791694dbdSdrh  {SELECT x'abc'; -- illegal token}
5891694dbdSdrh  {}
5991694dbdSdrh
6091694dbdSdrh  160
6191694dbdSdrh  {SELECT a,NULL,b FROM t1 WHERE c IS NOT NULL or D is null or e=5}
6291694dbdSdrh  {select a,?,b from t1 where c is not null or d is null or e=?;}
6391694dbdSdrh
6491694dbdSdrh  170
6591694dbdSdrh  {/* IN list exactly 5 bytes long */
6691694dbdSdrh   SELECT * FROM t1 WHERE x IN (1,2,3);}
6791694dbdSdrh  {select*from t1 where x in(?,?,?);}
683a6b258eSdan  180
693a6b258eSdan  {    }
703a6b258eSdan  {}
7191694dbdSdrh} {
7291694dbdSdrh  do_test $tnum [list sqlite3_normalize $sql] $norm
7391694dbdSdrh}
7491694dbdSdrh
758bee11a4Smistachkinifcapable normalize {
768bee11a4Smistachkindo_test 200 {
778bee11a4Smistachkin  execsql {
788bee11a4Smistachkin    CREATE TABLE t1(a,b);
798bee11a4Smistachkin  }
808bee11a4Smistachkin} {}
818bee11a4Smistachkindo_test 201 {
828bee11a4Smistachkin  set STMT [sqlite3_prepare_v3 $DB \
838bee11a4Smistachkin      "SELECT a, b FROM t1 WHERE b = ? ORDER BY a;" -1 0 TAIL]
848bee11a4Smistachkin
858bee11a4Smistachkin  sqlite3_bind_null $STMT 1
868bee11a4Smistachkin} {}
878bee11a4Smistachkindo_test 202 {
888bee11a4Smistachkin  sqlite3_normalized_sql $STMT
89d4a4dd6eSdrh} {SELECT a,b FROM t1 WHERE b=?ORDER BY a;}
908bee11a4Smistachkindo_test 203 {
918bee11a4Smistachkin  sqlite3_finalize $STMT
928bee11a4Smistachkin} {SQLITE_OK}
938bee11a4Smistachkin
948bee11a4Smistachkindo_test 210 {
958bee11a4Smistachkin  set STMT [sqlite3_prepare_v3 $DB \
968bee11a4Smistachkin      "SELECT a, b FROM t1 WHERE b = ? ORDER BY a;" -1 2 TAIL]
978bee11a4Smistachkin
988bee11a4Smistachkin  sqlite3_bind_null $STMT 1
998bee11a4Smistachkin} {}
1008bee11a4Smistachkindo_test 211 {
1018bee11a4Smistachkin  sqlite3_normalized_sql $STMT
1028bee11a4Smistachkin} {SELECT a,b FROM t1 WHERE b=?ORDER BY a;}
1038bee11a4Smistachkindo_test 212 {
1048bee11a4Smistachkin  sqlite3_finalize $STMT
1058bee11a4Smistachkin} {SQLITE_OK}
1068bee11a4Smistachkin
1078bee11a4Smistachkindo_test 220 {
1088bee11a4Smistachkin  set STMT [sqlite3_prepare_v3 $DB \
1098bee11a4Smistachkin      "SELECT a, b FROM t1 WHERE b = 'a' ORDER BY a;" -1 2 TAIL]
1108bee11a4Smistachkin} {/^[0-9A-Fa-f]+$/}
1118bee11a4Smistachkindo_test 221 {
1128bee11a4Smistachkin  sqlite3_normalized_sql $STMT
1138bee11a4Smistachkin} {SELECT a,b FROM t1 WHERE b=?ORDER BY a;}
1148bee11a4Smistachkindo_test 222 {
1158bee11a4Smistachkin  sqlite3_finalize $STMT
1168bee11a4Smistachkin} {SQLITE_OK}
1178bee11a4Smistachkin
1188bee11a4Smistachkindo_test 297 {
1198bee11a4Smistachkin  execsql {
1208bee11a4Smistachkin    DROP TABLE t1;
1218bee11a4Smistachkin  }
1228bee11a4Smistachkin} {}
1238bee11a4Smistachkindo_test 298 {
1248bee11a4Smistachkin  execsql {
1258bee11a4Smistachkin    CREATE TABLE t1(a,b,c,d,e,"col f",w,x,y,z);
1268bee11a4Smistachkin    CREATE TABLE t2(x,"col y");
1278bee11a4Smistachkin  }
1288bee11a4Smistachkin} {}
1298bee11a4Smistachkindo_test 299 {
1308bee11a4Smistachkin  sqlite3_create_function db
1318bee11a4Smistachkin} {SQLITE_OK}
1328bee11a4Smistachkin
1338bee11a4Smistachkinforeach {tnum sql flags norm} {
1348bee11a4Smistachkin  300
1358bee11a4Smistachkin  {SELECT * FROM t1 WHERE a IN (1) AND b=51.42}
1368bee11a4Smistachkin  0x2
1378bee11a4Smistachkin  {0 {SELECT*FROM t1 WHERE a IN(?,?,?)AND b=?;}}
1388bee11a4Smistachkin
1398bee11a4Smistachkin  310
1408bee11a4Smistachkin  {SELECT a, b+15, c FROM t1 WHERE d NOT IN (SELECT x FROM t2);}
1418bee11a4Smistachkin  0x2
1428bee11a4Smistachkin  {0 {SELECT a,b+?,c FROM t1 WHERE d NOT IN(SELECT x FROM t2);}}
1438bee11a4Smistachkin
1448bee11a4Smistachkin  320
1458bee11a4Smistachkin  { SELECT NULL, b FROM t1 -- comment text
1468bee11a4Smistachkin     WHERE d IN (WITH t(a) AS (VALUES(5)) /* CTE */
1478bee11a4Smistachkin                 SELECT a FROM t)
1488bee11a4Smistachkin        OR e='hello';
1498bee11a4Smistachkin  }
1508bee11a4Smistachkin  0x2
1518bee11a4Smistachkin  {0 {SELECT?,b FROM t1 WHERE d IN(WITH t(a)AS(VALUES(?))SELECT a FROM t)OR e=?;}}
1528bee11a4Smistachkin
1538bee11a4Smistachkin  321
1548bee11a4Smistachkin  {/*Initial comment*/
1558bee11a4Smistachkin   -- another comment line
1568bee11a4Smistachkin   SELECT NULL  /* comment */ , b FROM t1 -- comment text
1578bee11a4Smistachkin     WHERE d IN (WITH t(a) AS (VALUES(5)) /* CTE */
1588bee11a4Smistachkin                 SELECT a FROM t)
1598bee11a4Smistachkin        OR e='hello';
1608bee11a4Smistachkin  }
1618bee11a4Smistachkin  0x2
1628bee11a4Smistachkin  {0 {SELECT?,b FROM t1 WHERE d IN(WITH t(a)AS(VALUES(?))SELECT a FROM t)OR e=?;}}
1638bee11a4Smistachkin
1648bee11a4Smistachkin  330
1658bee11a4Smistachkin  {/* Query containing parameters */
1668bee11a4Smistachkin   SELECT x,$::abc(15),y,@abc,z,?99,w FROM t1 /* Trailing comment */}
1678bee11a4Smistachkin  0x2
1688bee11a4Smistachkin  {0 {SELECT x,?,y,?,z,?,w FROM t1;}}
1698bee11a4Smistachkin
1708bee11a4Smistachkin  340
1718bee11a4Smistachkin  {/* Long list on the RHS of IN */
1728bee11a4Smistachkin   SELECT 15 IN (1,2,3,(SELECT * FROM t1),'xyz',x'abcd',22*(x+5),null);}
1738bee11a4Smistachkin  0x2
1748bee11a4Smistachkin  {1 {(1) no such column: x}}
1758bee11a4Smistachkin
1768bee11a4Smistachkin  350
1778bee11a4Smistachkin  {SELECT x'abc'; -- illegal token}
1788bee11a4Smistachkin  0x2
1798bee11a4Smistachkin  {1 {(1) unrecognized token: "x'abc'"}}
1808bee11a4Smistachkin
1818bee11a4Smistachkin  360
1828bee11a4Smistachkin  {SELECT a,NULL,b FROM t1 WHERE c IS NOT NULL or D is null or e=5}
1838bee11a4Smistachkin  0x2
1848bee11a4Smistachkin  {0 {SELECT a,?,b FROM t1 WHERE c IS NOT NULL OR d IS NULL OR e=?;}}
1858bee11a4Smistachkin
1868bee11a4Smistachkin  370
1878bee11a4Smistachkin  {/* IN list exactly 5 bytes long */
1888bee11a4Smistachkin   SELECT * FROM t1 WHERE x IN (1,2,3);}
1898bee11a4Smistachkin  0x2
1908bee11a4Smistachkin  {0 {SELECT*FROM t1 WHERE x IN(?,?,?);}}
1918bee11a4Smistachkin
1928bee11a4Smistachkin  400
1938bee11a4Smistachkin  {SELECT a FROM t1 WHERE x IN (1,2,3) AND sqlite_version();}
1948bee11a4Smistachkin  0x2
1958bee11a4Smistachkin  {0 {SELECT a FROM t1 WHERE x IN(?,?,?)AND sqlite_version();}}
1968bee11a4Smistachkin
1978bee11a4Smistachkin  410
1988bee11a4Smistachkin  {SELECT a FROM t1 WHERE x IN (1,2,3) AND hex8();}
1998bee11a4Smistachkin  0x2
2008bee11a4Smistachkin  {1 {(1) wrong number of arguments to function hex8()}}
2018bee11a4Smistachkin
2028bee11a4Smistachkin  420
2038bee11a4Smistachkin  {SELECT a FROM t1 WHERE x IN (1,2,3) AND hex8('abc');}
2048bee11a4Smistachkin  0x2
2058bee11a4Smistachkin  {0 {SELECT a FROM t1 WHERE x IN(?,?,?)AND hex8(?);}}
2068bee11a4Smistachkin
2078bee11a4Smistachkin  430
2088bee11a4Smistachkin  {SELECT "a" FROM t1 WHERE "x" IN ("1","2",'3');}
2098bee11a4Smistachkin  0x2
2109042ff21Sdrh  {0 {SELECT a FROM t1 WHERE x IN(?,?,?);}}
2118bee11a4Smistachkin
2128bee11a4Smistachkin  440
2138bee11a4Smistachkin  {SELECT 'a' FROM t1 WHERE 'x';}
2148bee11a4Smistachkin  0x2
2158bee11a4Smistachkin  {0 {SELECT?FROM t1 WHERE?;}}
2168bee11a4Smistachkin
2178bee11a4Smistachkin  450
2188bee11a4Smistachkin  {SELECT [a] FROM t1 WHERE [x];}
2198bee11a4Smistachkin  0x2
2209042ff21Sdrh  {0 {SELECT a FROM t1 WHERE x;}}
2218bee11a4Smistachkin
2228bee11a4Smistachkin  460
2238bee11a4Smistachkin  {SELECT * FROM t1 WHERE x IN (x);}
2248bee11a4Smistachkin  0x2
2258bee11a4Smistachkin  {0 {SELECT*FROM t1 WHERE x IN(x);}}
2268bee11a4Smistachkin
2278bee11a4Smistachkin  470
2288bee11a4Smistachkin  {SELECT * FROM t1 WHERE x IN (x,a);}
2298bee11a4Smistachkin  0x2
2308bee11a4Smistachkin  {0 {SELECT*FROM t1 WHERE x IN(x,a);}}
2318bee11a4Smistachkin
2328bee11a4Smistachkin  480
2338bee11a4Smistachkin  {SELECT * FROM t1 WHERE x IN ([x],"a");}
2348bee11a4Smistachkin  0x2
2359042ff21Sdrh  {0 {SELECT*FROM t1 WHERE x IN(x,a);}}
2368bee11a4Smistachkin
2378bee11a4Smistachkin  500
2388bee11a4Smistachkin  {SELECT * FROM t1 WHERE x IN ([x],"a",'b',sqlite_version());}
2398bee11a4Smistachkin  0x2
2409042ff21Sdrh  {0 {SELECT*FROM t1 WHERE x IN(x,a,?,sqlite_version());}}
2418bee11a4Smistachkin
2428bee11a4Smistachkin  520
2438bee11a4Smistachkin  {SELECT * FROM t1 WHERE x IN (SELECT x FROM t1);}
2448bee11a4Smistachkin  0x2
2458bee11a4Smistachkin  {0 {SELECT*FROM t1 WHERE x IN(SELECT x FROM t1);}}
2468bee11a4Smistachkin
2478bee11a4Smistachkin  540
2488bee11a4Smistachkin  {SELECT * FROM t1 WHERE x IN ((SELECT x FROM t1));}
2498bee11a4Smistachkin  0x2
2509042ff21Sdrh  {0 {SELECT*FROM t1 WHERE x IN((SELECT x FROM t1));}}
2518bee11a4Smistachkin
2528bee11a4Smistachkin  550
2538bee11a4Smistachkin  {SELECT a, a+1, a||'b', a+"b" FROM t1;}
2548bee11a4Smistachkin  0x2
2559042ff21Sdrh  {0 {SELECT a,a+?,a||?,a+b FROM t1;}}
2568bee11a4Smistachkin
2578bee11a4Smistachkin  570
2588bee11a4Smistachkin  {SELECT * FROM t1 WHERE x IN (1);}
2598bee11a4Smistachkin  0x2
2608bee11a4Smistachkin  {0 {SELECT*FROM t1 WHERE x IN(?,?,?);}}
2618bee11a4Smistachkin
2628bee11a4Smistachkin  580
2638bee11a4Smistachkin  {SELECT * FROM t1 WHERE x IN (1,2);}
2648bee11a4Smistachkin  0x2
2658bee11a4Smistachkin  {0 {SELECT*FROM t1 WHERE x IN(?,?,?);}}
2668bee11a4Smistachkin
2678bee11a4Smistachkin  590
2688bee11a4Smistachkin  {SELECT * FROM t1 WHERE x IN (1,2,3);}
2698bee11a4Smistachkin  0x2
2708bee11a4Smistachkin  {0 {SELECT*FROM t1 WHERE x IN(?,?,?);}}
2718bee11a4Smistachkin
2728bee11a4Smistachkin  600
2738bee11a4Smistachkin  {SELECT * FROM t1 WHERE x IN (1,2,3,4);}
2748bee11a4Smistachkin  0x2
2758bee11a4Smistachkin  {0 {SELECT*FROM t1 WHERE x IN(?,?,?);}}
2768bee11a4Smistachkin
2778bee11a4Smistachkin  610
2788bee11a4Smistachkin  {SELECT * FROM t1 WHERE x IN (SELECT x FROM t1);}
2798bee11a4Smistachkin  0x2
2808bee11a4Smistachkin  {0 {SELECT*FROM t1 WHERE x IN(SELECT x FROM t1);}}
2818bee11a4Smistachkin
2828bee11a4Smistachkin  620
2838bee11a4Smistachkin  {SELECT * FROM t1 WHERE x IN (SELECT x FROM t1 WHERE x IN (1,2,3));}
2848bee11a4Smistachkin  0x2
2858bee11a4Smistachkin  {0 {SELECT*FROM t1 WHERE x IN(SELECT x FROM t1 WHERE x IN(?,?,?));}}
2868bee11a4Smistachkin
2878bee11a4Smistachkin  630
2888bee11a4Smistachkin  {SELECT * FROM t1 WHERE x IN (SELECT x FROM t1 WHERE x IN (x));}
2898bee11a4Smistachkin  0x2
2908bee11a4Smistachkin  {0 {SELECT*FROM t1 WHERE x IN(SELECT x FROM t1 WHERE x IN(x));}}
2918bee11a4Smistachkin
2928bee11a4Smistachkin  640
2938bee11a4Smistachkin  {SELECT x FROM t1 WHERE x IN (SELECT x FROM t1 WHERE x IN (
2948bee11a4Smistachkin   SELECT x FROM t1 WHERE x IN (SELECT x FROM t1 WHERE x IN (
2958bee11a4Smistachkin   SELECT x FROM t1 WHERE x IN (x)))));}
2968bee11a4Smistachkin  0x2
2978bee11a4Smistachkin  {0 {SELECT x FROM t1 WHERE x IN(SELECT x FROM t1 WHERE x IN(SELECT x FROM t1 WHERE x IN(SELECT x FROM t1 WHERE x IN(SELECT x FROM t1 WHERE x IN(x)))));}}
2988bee11a4Smistachkin
2998bee11a4Smistachkin  650
3008bee11a4Smistachkin  {SELECT x FROM t1 WHERE x IN (SELECT x FROM t1 WHERE x IN (
3018bee11a4Smistachkin   SELECT x FROM t1 WHERE x IN (SELECT x FROM t1 WHERE x IN (
3028bee11a4Smistachkin   SELECT x FROM t1 WHERE x IN (1)))));}
3038bee11a4Smistachkin  0x2
3048bee11a4Smistachkin  {0 {SELECT x FROM t1 WHERE x IN(SELECT x FROM t1 WHERE x IN(SELECT x FROM t1 WHERE x IN(SELECT x FROM t1 WHERE x IN(SELECT x FROM t1 WHERE x IN(?,?,?)))));}}
3058bee11a4Smistachkin
3068bee11a4Smistachkin  660
3078bee11a4Smistachkin  {SELECT x FROM t1 WHERE x IN (1) UNION ALL SELECT x FROM t1 WHERE x IN (1);}
3088bee11a4Smistachkin  0x2
3098bee11a4Smistachkin  {0 {SELECT x FROM t1 WHERE x IN(?,?,?)UNION ALL SELECT x FROM t1 WHERE x IN(?,?,?);}}
3108bee11a4Smistachkin
3118bee11a4Smistachkin  670
3128bee11a4Smistachkin  {SELECT "col f", [col f] FROM t1;}
3138bee11a4Smistachkin  0x2
3148bee11a4Smistachkin  {0 {SELECT"col f","col f"FROM t1;}}
3158bee11a4Smistachkin
3168bee11a4Smistachkin  680
3178bee11a4Smistachkin  {SELECT a, "col f" FROM t1 LEFT OUTER JOIN t2 ON [t1].[col f] == [t2].[col y];}
3188bee11a4Smistachkin  0x2
3199042ff21Sdrh  {0 {SELECT a,"col f"FROM t1 LEFT OUTER JOIN t2 ON t1."col f"==t2."col y";}}
3208bee11a4Smistachkin
3218bee11a4Smistachkin  690
3228bee11a4Smistachkin  {SELECT * FROM ( WITH x AS ( SELECT * FROM t1 WHERE x IN ( 1)) SELECT 10);}
3238bee11a4Smistachkin  0x2
3248bee11a4Smistachkin  {0 {SELECT*FROM(WITH x AS(SELECT*FROM t1 WHERE x IN(?,?,?))SELECT?);}}
3258bee11a4Smistachkin
3268bee11a4Smistachkin  700
3278bee11a4Smistachkin  {SELECT rowid, oid, _rowid_ FROM t1;}
3288bee11a4Smistachkin  0x2
3298bee11a4Smistachkin  {0 {SELECT rowid,oid,_rowid_ FROM t1;}}
3308bee11a4Smistachkin
3318bee11a4Smistachkin  710
3328bee11a4Smistachkin  {SELECT x FROM t1 WHERE x IS NULL;}
3338bee11a4Smistachkin  0x2
3348bee11a4Smistachkin  {0 {SELECT x FROM t1 WHERE x IS NULL;}}
3358bee11a4Smistachkin
3368bee11a4Smistachkin  740
3378bee11a4Smistachkin  {SELECT x FROM t1 WHERE x IS NOT NULL;}
3388bee11a4Smistachkin  0x2
3398bee11a4Smistachkin  {0 {SELECT x FROM t1 WHERE x IS NOT NULL;}}
3408bee11a4Smistachkin
3418bee11a4Smistachkin  750
3428bee11a4Smistachkin  {SELECT x FROM t1 WHERE x = NULL;}
3438bee11a4Smistachkin  0x2
3448bee11a4Smistachkin  {0 {SELECT x FROM t1 WHERE x=?;}}
3458bee11a4Smistachkin
3468bee11a4Smistachkin  760
3478bee11a4Smistachkin  {SELECT x FROM t1 WHERE x IN ([x] IS NOT NULL, NULL, 1, 'a', "b", x'00');}
3488bee11a4Smistachkin  0x2
3499042ff21Sdrh  {0 {SELECT x FROM t1 WHERE x IN(x IS NOT NULL,?,?,?,b,?);}}
350*16fd04cdSmistachkin
351*16fd04cdSmistachkin  800
352*16fd04cdSmistachkin  {ATTACH "normalize800.db" AS somefile;}
353*16fd04cdSmistachkin  0x2
354*16fd04cdSmistachkin  {0 {ATTACH"normalize800.db"AS somefile;}}
355*16fd04cdSmistachkin
356*16fd04cdSmistachkin  810
357*16fd04cdSmistachkin  {ATTACH DATABASE "normalize810.db" AS somefile;}
358*16fd04cdSmistachkin  0x2
359*16fd04cdSmistachkin  {0 {ATTACH DATABASE"normalize810.db"AS somefile;}}
360*16fd04cdSmistachkin
361*16fd04cdSmistachkin  900
362*16fd04cdSmistachkin  {INSERT INTO t1 (x) VALUES("sl1"), (1), ("sl2"), ('i');}
363*16fd04cdSmistachkin  0x2
364*16fd04cdSmistachkin  {0 {INSERT INTO t1(x)VALUES(?),(?),(?),(?);}}
365*16fd04cdSmistachkin
366*16fd04cdSmistachkin  910
367*16fd04cdSmistachkin  {UPDATE t1 SET x = "sl1" WHERE x IN (1, "sl2", 'i');}
368*16fd04cdSmistachkin  0x2
369*16fd04cdSmistachkin  {0 {UPDATE t1 SET x=?WHERE x IN(?,?,?);}}
370*16fd04cdSmistachkin
371*16fd04cdSmistachkin  920
372*16fd04cdSmistachkin  {UPDATE t1 SET x = "y" WHERE x IN (1, "sl1", 'i');}
373*16fd04cdSmistachkin  0x2
374*16fd04cdSmistachkin  {0 {UPDATE t1 SET x=y WHERE x IN(?,?,?);}}
375*16fd04cdSmistachkin
376*16fd04cdSmistachkin  930
377*16fd04cdSmistachkin  {DELETE FROM t1 WHERE x IN (1, "sl1", 'i');}
378*16fd04cdSmistachkin  0x2
379*16fd04cdSmistachkin  {0 {DELETE FROM t1 WHERE x IN(?,?,?);}}
3808bee11a4Smistachkin} {
3818bee11a4Smistachkin  do_test $tnum {
3828bee11a4Smistachkin    set code [catch {
3838bee11a4Smistachkin      set STMT [sqlite3_prepare_v3 $DB $sql -1 $flags TAIL]
3848bee11a4Smistachkin      sqlite3_normalized_sql $STMT
3858bee11a4Smistachkin    } res]
3868bee11a4Smistachkin    if {[info exists STMT]} {
3878bee11a4Smistachkin      sqlite3_finalize $STMT; unset STMT
3888bee11a4Smistachkin    }
3898bee11a4Smistachkin    list $code $res
3908bee11a4Smistachkin  } $norm
3918bee11a4Smistachkin}
3928bee11a4Smistachkin}
3938bee11a4Smistachkin
39491694dbdSdrhfinish_test
395