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