1 | #include "catch.hpp" |
2 | #include "test_helpers.hpp" |
3 | |
4 | using namespace duckdb; |
5 | using namespace std; |
6 | |
7 | TEST_CASE("Test IN statement" , "[sql]" ) { |
8 | unique_ptr<QueryResult> result; |
9 | DuckDB db(nullptr); |
10 | Connection con(db); |
11 | con.EnableQueryVerification(); |
12 | |
13 | REQUIRE_NO_FAIL(con.Query("CREATE TABLE integers(i INTEGER)" )); |
14 | REQUIRE_NO_FAIL(con.Query("INSERT INTO integers VALUES (1), (2), (3), (NULL);" )); |
15 | |
16 | result = con.Query("SELECT * FROM integers WHERE i IN (1, 2) ORDER BY i" ); |
17 | REQUIRE(CHECK_COLUMN(result, 0, {1, 2})); |
18 | |
19 | result = con.Query("SELECT * FROM integers WHERE i IN (1, 2, 3, 4, 5, 6, 7, 8) ORDER BY i" ); |
20 | REQUIRE(CHECK_COLUMN(result, 0, {1, 2, 3})); |
21 | |
22 | result = con.Query("SELECT i, i IN (1, 2, 3, 4, 5, 6, 7, 8) FROM integers ORDER BY i" ); |
23 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
24 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), true, true, true})); |
25 | |
26 | result = con.Query("SELECT i, i NOT IN (1, 2, 3, 4, 5, 6, 7, 8) FROM integers ORDER BY i" ); |
27 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
28 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), false, false, false})); |
29 | |
30 | result = con.Query("SELECT i, i IN (1, 2, NULL, 4, 5, 6, 7, 8) FROM integers ORDER BY i" ); |
31 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
32 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), true, true, Value()})); |
33 | |
34 | result = con.Query("SELECT i, i IN (i + 1) FROM integers ORDER BY i" ); |
35 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
36 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), false, false, false})); |
37 | |
38 | result = con.Query("SELECT i, i IN (i + 1, 42, i) FROM integers ORDER BY i" ); |
39 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
40 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), true, true, true})); |
41 | |
42 | result = con.Query("SELECT i, 1 IN (i - 1, i, i + 1) FROM integers ORDER BY i" ); |
43 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
44 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), true, true, false})); |
45 | |
46 | result = con.Query("SELECT i, 1 NOT IN (i - 1, i, i + 1) FROM integers ORDER BY i" ); |
47 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
48 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), false, false, true})); |
49 | |
50 | result = con.Query("SELECT i, i IN (11, 12, 13, 14, 15, 16, 17, 18, 1, i) FROM integers ORDER BY i" ); |
51 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
52 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), true, true, true})); |
53 | |
54 | result = con.Query("SELECT i, i NOT IN (11, 12, 13, 14, 15, 16, 17, 18, 1, i) FROM integers ORDER BY i" ); |
55 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
56 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), false, false, false})); |
57 | |
58 | result = con.Query("SELECT i, 1 IN (11, 12, 13, 14, 15, 16, 17, 18, 1, i) FROM integers ORDER BY i" ); |
59 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
60 | REQUIRE(CHECK_COLUMN(result, 1, {true, true, true, true})); |
61 | |
62 | result = con.Query("SELECT i, 1 NOT IN (11, 12, 13, 14, 15, 16, 17, 18, 1, i) FROM integers ORDER BY i" ); |
63 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
64 | REQUIRE(CHECK_COLUMN(result, 1, {false, false, false, false})); |
65 | |
66 | // multiple subqueries in IN-clause |
67 | result = con.Query( |
68 | "SELECT i, i IN ((SELECT MAX(i) FROM integers), (SELECT MIN(i) FROM integers)) FROM integers ORDER BY i" ); |
69 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
70 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), true, false, true})); |
71 | |
72 | // multiple correlated subqueries in IN-clause |
73 | result = con.Query("SELECT i, (SELECT MAX(i) FROM integers WHERE i <> i1.i), (SELECT MIN(i) FROM integers WHERE i " |
74 | "<= i1.i) FROM integers i1 ORDER BY i" ); |
75 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
76 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), 3, 3, 2})); |
77 | REQUIRE(CHECK_COLUMN(result, 2, {Value(), 1, 1, 1})); |
78 | |
79 | // multiple correlated subqueries in IN-clause |
80 | result = con.Query("SELECT i, i IN ((SELECT MAX(i) FROM integers WHERE i <> i1.i), (SELECT MIN(i) FROM integers " |
81 | "WHERE i <= i1.i)) FROM integers i1 ORDER BY i" ); |
82 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3})); |
83 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), true, false, false})); |
84 | } |
85 | |
86 | TEST_CASE("Test large IN statement with varchar" , "[sql][.]" ) { |
87 | unique_ptr<QueryResult> result; |
88 | DuckDB db(nullptr); |
89 | Connection con(db); |
90 | con.EnableQueryVerification(); |
91 | |
92 | REQUIRE_NO_FAIL(con.Query("CREATE TABLE strings(s VARCHAR)" )); |
93 | REQUIRE_NO_FAIL(con.Query("INSERT INTO strings VALUES ('HXR'), ('NUT'), ('ZZZ'), (NULL);" )); |
94 | |
95 | string in_list = |
96 | "'QOY', 'AAZ', 'AOR', 'VJR', 'ROL', 'KOS', 'JBC', 'EMZ', 'LQT', 'HYX', " |
97 | "'IYA', 'YAA', 'XMR', 'HGJ', 'LDR', 'MVT', 'XEQ', 'NPX', 'ZKV', 'HET', 'GZI', 'PLI', 'ABK', 'LOJ', 'KYB', " |
98 | "'UKG', 'PNY', 'SBV', 'VSJ', 'FAR', 'AXH', 'XWO', 'NKA', 'CPE', 'GSC', 'TWK', 'SXK', 'SUU', 'KPX', 'NXU', " |
99 | "'ZMR', 'BZG', 'CBO', 'SQA', 'VNE', 'NUT', 'LKF', 'IWL', 'CQE', 'UED', 'BHQ', 'RQR', 'FVG', 'EZZ', 'SRJ', " |
100 | "'UPA', 'JUV', 'AXP', 'JGL', 'HKC', 'CYM', 'AAK', 'WUM', 'NWK', 'DCQ', 'YXT', 'DQZ', 'WXB', 'YVG', 'YXL', " |
101 | "'FWG', 'PLN', 'YPK', 'UPA', 'GIC', 'IPS', 'WQB', 'NSR', 'WRT', 'WOP', 'JAX', 'XWZ', 'TIM', 'EAO', 'ANC', " |
102 | "'NAT', 'KFL', 'XJA', 'HUG', 'SVP', 'HVX', 'APA', 'RJI', 'QKP', 'MZB', 'MME', 'GJW', 'TBX', 'TRT', 'IRL', " |
103 | "'BUR', 'OWP', 'DAK', 'IGZ', 'OJL', 'BON', 'KLG', 'SSI', 'UOD', 'SCW', 'LGT', 'KTL', 'DPA', 'WTC', 'NSW', " |
104 | "'TEQ', 'HNU', 'GEI', 'OFK', 'UQB', 'QWI', 'ACS', 'MMR', 'EHZ', 'PXR', 'SPK', 'POO', 'CMF', 'UEE', 'QUK', " |
105 | "'BZR', 'ZBH', 'KJV', 'RIV', 'HOX', 'GZU', 'PQO', 'NLU', 'BRV', 'XND', 'APA', 'QXV', 'QEW', 'AJR', 'OYC', " |
106 | "'YTA', 'FMS', 'GSK', 'MCC', 'QVQ', 'FYD', 'QQJ', 'VBM', 'EYV', 'ELQ', 'KHI', 'HTU', 'KDQ', 'YRI', 'CEB', " |
107 | "'WGP', 'HIY', 'XSM', 'FTD', 'EHU', 'KFE', 'FCN', 'YRC', 'WFC', 'YRC', 'PZH', 'ZAG', 'AAM', 'UBM', 'JIH', " |
108 | "'CRQ', 'BOE', 'KLI', 'SAB', 'TYY', 'AGX', 'FEH', 'ZPX', 'PRU', 'GXA', 'HDC', 'UJG', 'OCO', 'BLZ', 'ZFH', " |
109 | "'LRN', 'GYF', 'FBR', 'OVH', 'XTL', 'FQZ', 'MKP', 'UKA', 'RMN', 'IWX', 'RYF', 'WTB', 'KWU', 'MKN', 'JFM', " |
110 | "'VUU', 'UTU', 'CLW', 'HKQ', 'SJA', 'ADT', 'RTN', 'ZPJ', 'NUX', 'HMY', 'RDA', 'YQQ', 'COL', 'JRB', 'PYV', " |
111 | "'YAU', 'AYM', 'STV', 'BDC', 'PIZ', 'CAK', 'VWS', 'GNU', 'SZA', 'PMP', 'WOV', 'LPL', 'PJY', 'FWV', 'CLH', " |
112 | "'IVC', 'YHN', 'QWB', 'SCE', 'PFN', 'WDI', 'PIN', 'QSN', 'WDE', 'JOZ', 'DPZ', 'WFX', 'IQS', 'TBZ', 'FXQ', " |
113 | "'PLM', 'WQH', 'BEJ', 'KFM', 'KLH', 'ZVT', 'MBV', 'JQT', 'RIR', 'FDB', 'AOV', 'GZV', 'CTN', 'YCY', 'XSB', " |
114 | "'UUI', 'EWM', 'MQR', 'SKE', 'ACO', 'AGP', 'RWD', 'XGR', 'PCO', 'OSY', 'QHG', 'YEW', 'DHQ', 'FNH', 'QWX', " |
115 | "'RSL', 'GKL', 'VEP', 'SME', 'TKH', 'JOQ', 'XZY', 'ZBF', 'UJP', 'UKD', 'QIZ', 'VQF', 'QUW', 'XGX', 'TPG', " |
116 | "'LYD', 'WBX', 'GRI', 'YDC', 'PJU', 'EFU', 'MZV', 'GBN', 'EJE', 'JYH', 'XTC', 'ZNI', 'JJE', 'XJD', 'SJU', " |
117 | "'SNP', 'ZLL', 'ZRL', 'CUC', 'EOQ', 'IZU', 'MZH', 'UMQ', 'ULS', 'ETH', 'AUT', 'NPL', 'IYB', 'OXQ', 'CXH', " |
118 | "'QRI', 'RHM', 'PNO', 'QGF', 'THK', 'KYU', 'OIE', 'OGO', 'UDS', 'OIS', 'DXJ', 'ETV', 'UWI', 'VLX', 'SOG', " |
119 | "'KNW', 'FOR', 'CCT', 'PHH', 'YNI', 'BOW', 'AJR', 'LJE', 'PUB', 'NPF', 'ELB', 'SIE', 'NAC', 'IZD', 'BQE', " |
120 | "'SUH', 'YQE', 'AVC', 'CIV', 'SOK', 'VRB', 'YUG', 'JFO', 'FCB', 'LEY', 'IPX', 'PEZ', 'BFV', 'BCV', 'RWZ', " |
121 | "'BHX', 'OJV', 'QPZ', 'QQX', 'ECG', 'MCD', 'UEI', 'IAE', 'VKD', 'QUJ', 'WYL', 'UOI', 'XDP', 'JTW', 'LFJ', " |
122 | "'AHH', 'XRL', 'QQM', 'AGA', 'RLE', 'MFI', 'UYI', 'HEM', 'KKJ', 'VLN', 'PYN', 'ZZA', 'WGI', 'PTH', 'BMR', " |
123 | "'MZK', 'IPY', 'SLA', 'JOS', 'ZLT', 'ZDF', 'XWY', 'OHJ', 'RPL', 'BPE', 'NVZ', 'YIF', 'HWM', 'BGM', 'VUO', " |
124 | "'YIW', 'UBS', 'EAW', 'AYN', 'UCE', 'UIB', 'DNV', 'YAQ', 'TBE', 'GMT', 'EOW', 'RWL', 'TYU', 'UTX', 'SRJ', " |
125 | "'FZZ', 'RJU', 'QJB', 'MFY', 'PID', 'RWM', 'PWH', 'PJS', 'BNK', 'IUO', 'POW', 'MBL', 'XMH', 'YWN', 'FTC', " |
126 | "'XME', 'MUS', 'XYD', 'BVI', 'FGU', 'BCJ', 'KRH', 'XPM', 'HDV', 'SQS', 'PFE', 'SIU', 'PZL', 'APT', 'CZK', " |
127 | "'HHL', 'EVI', 'GOE', 'RWG', 'PZF', 'DPS', 'GXN', 'WVC', 'ZDE', 'BDQ', 'WYP', 'PLB', 'SZZ', 'HPM', 'BUL', " |
128 | "'VRY', 'ZNG', 'XUS', 'SLU', 'SLQ', 'UOH', 'YHR', 'FGE', 'RJY', 'CMO', 'NGZ', 'PCG', 'PFN', 'EPG', 'ILE', " |
129 | "'RXF', 'NLD', 'PYW', 'WTG', 'HKL', 'IGB', 'YNF', 'TAL', 'MBR', 'YEK', 'VKO', 'ZGO', 'UKH', 'GJN', 'QCD', " |
130 | "'OQD', 'HEU', 'GWT', 'THS', 'LAS', 'JLU', 'TNV', 'UQB', 'YDO', 'ZFI', 'XBV', 'VYI', 'GAC', 'GDU', 'DLL', " |
131 | "'JXX', 'GUP', 'FUF', 'KQI', 'TLC', 'DAQ', 'OMN', 'FYT', 'GIZ', 'NON', 'UGU', 'CSI', 'NEO', 'SVA', 'ZBM', " |
132 | "'GGU', 'PFF', 'QFB', 'JZH', 'OBB', 'VHM', 'PAJ', 'BKD', 'JEI', 'ZQG', 'GBX', 'UCR', 'TXS', 'PAK', 'HYP', " |
133 | "'CAI', 'WJY', 'VLH', 'QLY', 'XKI', 'SDS', 'QEF', 'KKF', 'XBQ', 'FTE', 'CEX', 'PJM', 'RTA', 'TXQ', 'BSK', " |
134 | "'OXU', 'ELZ', 'WII', 'THG', 'RDY', 'LFS', 'JNY', 'ORJ', 'FXD', 'OTG', 'BUG', 'EDF', 'DDM', 'HTZ', 'IAA', " |
135 | "'RWR', 'XBL', 'PXV', 'FVH', 'OSB', 'UQW', 'CUP', 'OIF', 'VQZ', 'KCT', 'VWJ', 'IRP', 'UAZ', 'CCF', 'MCY', " |
136 | "'GGP', 'HDT', 'SZT', 'JSR', 'HDR', 'MQR', 'OCP', 'XQD', 'QYT', 'NSA', 'LPC', 'MGS', 'DAZ', 'SDQ', 'BMS', " |
137 | "'EJL', 'ADY', 'JFP', 'YQD', 'CIP', 'CST', 'ATU', 'JTD', 'HDI', 'JMF', 'LJO', 'SEC', 'ZCN', 'EMG', 'RLJ', " |
138 | "'AMV', 'BVT', 'IZV', 'DND', 'VCJ', 'HNY', 'DSI', 'DWM', 'EDI', 'LQO', 'NDN', 'GGA', 'EXH', 'XFP', 'NLU', " |
139 | "'DNC', 'OTA', 'KQD', 'JRJ', 'JXV', 'UAK', 'TNB', 'ZXJ', 'YTU', 'MMS', 'NCV', 'VIR', 'EUI', 'KND', 'PTL', " |
140 | "'LKF', 'FUT', 'VUX', 'PWI', 'ETZ', 'IHN', 'GYS', 'KAQ', 'UYN', 'HOQ', 'END', 'WHD', 'NMT', 'HEW', 'OBN', " |
141 | "'RDZ', 'SKP', 'LHN', 'HQS', 'YTY', 'GXW', 'EKC', 'BCD', 'BRQ', 'CSX', 'OCI', 'OZP', 'TBN', 'HHG', 'VFZ', " |
142 | "'WJY', 'VBT', 'LNT', 'YDL', 'KOC', 'IJF', 'HSB', 'USO', 'HOK', 'MEK', 'WXT', 'DRT', 'SNE', 'WAI', 'EMP', " |
143 | "'IGC', 'QPJ', 'GCF', 'CJW', 'ONH', 'XQO', 'KFY', 'CZQ', 'AUC', 'BQD', 'KBH', 'GFS', 'BVT', 'QLX', 'TYO', " |
144 | "'WWE', 'TXE', 'MQM', 'WNC', 'WKC', 'ZLW', 'RDJ', 'WCZ', 'UOV', 'IBT', 'HOQ', 'VIA', 'DPE', 'AJX', 'AYA', " |
145 | "'DEM', 'YDD', 'SOU', 'KZU', 'ATH', 'BPS', 'GTM', 'ALW', 'ODR', 'DBZ', 'KYG', 'CES', 'NWC', 'QER', 'FFA', " |
146 | "'UZS', 'GPL', 'MTD', 'TPI', 'GMR', 'WXV', 'YYY', 'FAX', 'MNL', 'JUS', 'SVJ', 'ZNX', 'QDQ', 'FIH', 'EXR', " |
147 | "'XSM', 'OQX', 'GUW', 'KEG', 'DHJ', 'GXH', 'ROZ', 'TCT', 'UNU', 'XGS', 'ODG', 'GZH', 'TZV', 'LFP', 'CDF', " |
148 | "'LJZ', 'RLL', 'QBY', 'CEQ', 'JWH', 'GYJ', 'LSJ', 'CQV', 'HJT', 'PVB', 'DLH', 'BFI', 'RIV', 'UCG', 'KOG', " |
149 | "'TXS', 'JDF', 'DKD', 'FOE', 'UIO', 'GDY', 'OIG', 'FWH', 'YSY', 'HGV', 'GIS', 'CMB', 'SDT', 'ROH', 'NMU', " |
150 | "'YHA', 'WDJ', 'VDV', 'LDE', 'PUR', 'UNS', 'NDY', 'YCZ', 'SAQ', 'OJW', 'OIP', 'IWC', 'WPT', 'PJI', 'PMP', " |
151 | "'CEB', 'WRZ', 'LSI', 'QUA', 'HMA', 'VWZ', 'KWX', 'RTA', 'IXL', 'XZH', 'UOT', 'IWF', 'LXN', 'VXY', 'DMU', " |
152 | "'EKC', 'JRF', 'EMA', 'LNG', 'JWT', 'NLH', 'EPH', 'FFJ', 'RTR', 'XJE', 'OAW', 'HSP', 'AFE', 'EPI', 'RSV', " |
153 | "'OIZ', 'BEC', 'ILJ', 'UPU', 'JZC', 'HGP', 'HLT', 'GSY', 'XGP', 'NYL', 'VHY', 'CQN', 'WEE', 'GFJ', 'LGE', " |
154 | "'IBM', 'NCI', 'OPR', 'TIO', 'DPL', 'TFD', 'XKJ', 'DWM', 'DPV', 'RIE', 'UKK', 'OBM', 'NLJ', 'VUM', 'IRE', " |
155 | "'DNR', 'KVP', 'PZX', 'FBD', 'GDI', 'YAW', 'MKG', 'EAX', 'CBM', 'TCH', 'LGX', 'UCY', 'EWE', 'ZUN', 'DPM', " |
156 | "'BUH', 'NQJ', 'RFX', 'XUI', 'BHB', 'BMM', 'MGZ', 'PTR', 'RUM', 'FVC', 'BRO', 'ZVP', 'YMV', 'PNX', 'WRO', " |
157 | "'KKR', 'WCE', 'UFT', 'QWG', 'UNY', 'IZE', 'ZFX', 'KBC', 'DPS', 'QYY', 'ZNO', 'DHR', 'GWP', 'UTY', 'CSO', " |
158 | "'SQH', 'TBU', 'CYF', 'ROH', 'GYF', 'BWT', 'RKM', 'WLV', 'FSB', 'EWV', 'DHJ', 'RPB', 'NVJ', 'LUF', 'TTV', " |
159 | "'WPT', 'APQ', 'IXF', 'HAQ', 'OVS', 'JTE', 'LOQ', 'PXF', 'MAZ', 'AHV', 'TZO', 'LHO', 'ATL', 'MII', 'LTR', " |
160 | "'KPQ', 'ZXP', 'JPI', 'GLF', 'VKG', 'CAM', 'GVX', 'JUO', 'YWZ', 'NNQ', 'RGV', 'CDS', 'CYA', 'QPX', 'HHG', " |
161 | "'DDF', 'YXE', 'ZKL', 'XDJ', 'HLC', 'ORZ', 'UEX', 'FKH', 'RWT', 'RKN', 'USW', 'UBC', 'QGT', 'MGN', 'WXC', " |
162 | "'ENU', 'RLW', 'OFP', 'XGN', 'PSX', 'JTD', 'LFK', 'PBI', 'BWD', 'JVG', 'HFG', 'WLM', 'XNC', 'HWH', 'FGZ', " |
163 | "'JEK', 'HRL', 'NBL', 'THW', 'WKI', 'IME', 'UIY', 'WAA', 'XQO', 'UUD', 'IRS', 'FBF', 'JZV', 'CCR', 'YLF', " |
164 | "'RXP', 'UIP', 'OGN', 'IID', 'ENW', 'XPL', 'PFE', 'MEX', 'GPH', 'RBW', 'JML', 'ZVR', 'YWL', 'QPJ', 'LYY', " |
165 | "'NKS', 'VIJ', 'SAZ', 'LNC', 'NGU', 'RRD', 'PJK', 'FOH', 'ORW', 'YLQ', 'GFG', 'NOW', 'IDV', 'WHE', 'RTH', " |
166 | "'NVL', 'BAQ', 'HAK', 'SKH', 'LTZ', 'HDF', 'SIB', 'PHY', 'PWZ', 'CWY', 'JNE', 'CXW', 'EPN', 'LAO', 'WEI', " |
167 | "'AGK', 'XJQ', 'ILR', 'CVO', 'MEX', 'BGD', 'AEK', 'DHK', 'KAC', 'DQL', 'WDA', 'GVU', 'RUN', 'XQU', 'EXU', " |
168 | "'WER', 'UBS', 'XOK', 'WML', 'XQM', 'XBW', 'VTT', 'SMF', 'DRX', 'XGZ', 'KXD', 'IVV', 'OIJ', 'KAW', 'SEW', " |
169 | "'URD', 'QAW', 'RFL', 'ZGP', 'VVR', 'ZLA', 'LXV', 'OWU', 'YGF', 'BJO', 'OTZ', 'RSD', 'GTT', 'CEP', 'HVH', " |
170 | "'ZNI', 'BHV', 'IKT', 'GCF', 'XYF', 'FOL', 'NLV', 'NFL', 'TOO', 'GYY', 'POS', 'JGL', 'BUE', 'DYK', 'VVV', " |
171 | "'RMJ', 'LBS', 'WSL', 'FHZ', 'RWB', 'DLC', 'XPL', 'YLW', 'OYK', 'HQN', 'MRA', 'QAJ', 'MIX', 'ICY', 'WZS', " |
172 | "'IJG', 'VYF', 'XON', 'AZB', 'RQC', 'AYK', 'CUV', 'JST', 'BNP', 'UCF', 'DIG', 'ANC', 'XVQ', 'CEC', 'TND', " |
173 | "'SHS', 'YTJ', 'XFX', 'TBI', 'JRE', 'WBD', 'ZVA', 'TSG', 'DYY', 'XUB', 'JDH', 'VSO', 'NMU', 'QWP', 'SKI', " |
174 | "'XMG', 'RVK', 'XVO', 'OAV', 'NYW', 'NRR', 'QRY', 'EBG', 'OYJ', 'ZDN', 'LLU', 'ACT', 'MYP', 'KUK', 'TDO', " |
175 | "'CUB', 'QHL', 'QRO', 'FTD', 'KBL', 'YEY', 'NQD', 'OAH', 'ACU', 'EDM', 'QYP', 'OUO', 'PDK', 'VSP', 'PKW', " |
176 | "'JZF', 'GAL', 'COS', 'RFL', 'DIM', 'MPZ', 'IZX', 'KBU', 'LVK', 'DTP', 'PWC', 'EUQ', 'ESR', 'PIL', 'PTW', " |
177 | "'DNF', 'VLW', 'NBA', 'DFW', 'RDK', 'PYF', 'NIA', 'LLQ', 'WUE', 'SLJ', 'TEF', 'GNC', 'FIC', 'EQD', 'ERL', " |
178 | "'IKZ', 'UKG', 'TNT', 'XCP', 'NRV', 'GVU', 'XFZ', 'VEL', 'GCR', 'XAE', 'GTN', 'VRZ', 'WSY', 'RKD', 'WIA', " |
179 | "'ZPB', 'EWE', 'AVT', 'EZD', 'YCN', 'TJY', 'PCS', 'PXA', 'EAR', 'CIE', 'PPO', 'PFP', 'PFJ', 'SZK', 'IBH', " |
180 | "'LQB', 'EDI', 'ELJ', 'OJS', 'QBC', 'GTV', 'GXH', 'MFG', 'QQO', 'PIK', 'LDF', 'KIX', 'CSV', 'MAP', 'ALA', " |
181 | "'KZH', 'QPA', 'BCG', 'DWQ', 'MUM', 'UJT', 'ZIK', 'XPU', 'CQL', 'DZH', 'ZGR', 'UCU', 'LAT', 'NXO', 'QYM', " |
182 | "'PNV', 'UTV', 'SGK', 'EXJ', 'NTQ', 'LPQ', 'RVT', 'GHZ', 'FSE', 'PGQ', 'WJL', 'JQI', 'IWL', 'SWW', 'DEQ', " |
183 | "'VLF', 'NUD', 'ZNG', 'DCR', 'LCI', 'NZK', 'QAK', 'GHL', 'UCZ', 'ESU', 'JQG', 'NJL', 'PPD', 'QGA', 'GSW', " |
184 | "'YDG', 'QNJ', 'EYF', 'NNZ', 'EAG', 'RFE', 'CBE', 'ENO', 'HDT', 'WFV', 'CFE', 'MGY', 'PAE', 'WUG', 'LPU', " |
185 | "'HZD', 'GFM', 'JHE', 'TPQ', 'DAO', 'KBZ', 'GBA', 'NFH', 'DDS', 'HYA', 'VWS', 'ZLG', 'XKO', 'HFE', 'OJS', " |
186 | "'ZNK', 'OAT', 'YFE', 'NYJ', 'RDP', 'NTN', 'BEW', 'IGK', 'AYV', 'QXZ', 'NJB', 'QYE', 'GGE', 'DVI', 'UFG', " |
187 | "'AWY', 'JAN', 'GPW', 'GYE', 'BKS', 'REI', 'XYZ', 'VTY', 'NCD', 'EMH', 'YZE', 'LKN', 'JFF', 'IHZ', 'KUE', " |
188 | "'VNJ', 'SAW', 'NWS', 'HTH', 'ZXC', 'IAW', 'EPV', 'ONR', 'NFN', 'KMQ', 'CCE', 'ASU', 'SYF', 'PIQ', 'EHB', " |
189 | "'IWX', 'TAV', 'PJV', 'KET', 'BCR', 'UTS', 'OCI', 'PBE', 'XDJ', 'XSN', 'CUS', 'XBF', 'ZQF', 'RTW', 'CJI', " |
190 | "'XPI', 'KGD', 'ZNS', 'JCM', 'SRD', 'ADD', 'NJY', 'TQU', 'RNK', 'IQR', 'FYF', 'VDQ', 'IUO', 'SXI', 'DRM', " |
191 | "'XSX', 'FBH', 'YQE', 'BTM', 'GZJ', 'JJR', 'ONH', 'NLJ', 'XVR', 'XCP', 'VLW', 'ISS', 'FDK', 'FAS', 'HDE', " |
192 | "'ETY', 'KIA', 'BJX', 'ZZM', 'EIB', 'HWD', 'HDY', 'QGB', 'BQH', 'PFT', 'MBI', 'NND', 'DRP', 'IWC', 'TFF', " |
193 | "'PDU', 'YTB', 'WHR', 'QNY', 'IUB', 'QZK', 'NXL', 'JOB', 'FEF', 'DZC', 'DAL', 'IJK', 'HBO', 'ZRR', 'JJH', " |
194 | "'MXI', 'YSP', 'BRV', 'JRA', 'JQE', 'XWQ', 'GVY', 'CEN', 'NYY', 'JCW', 'BIN', 'QGA', 'SCX', 'LZV', 'SPA', " |
195 | "'CRQ', 'RUJ', 'PYJ', 'BCG', 'QFR', 'QED', 'RLR', 'JXV', 'NIQ', 'WHL', 'UQJ', 'EPN', 'HEF', 'IUR', 'MCH', " |
196 | "'THC', 'WTN', 'OCP', 'DSM', 'LXW', 'ZQJ', 'FMU', 'VNW', 'IXM', 'BYF', 'NXY', 'CJO', 'IIY', 'CGW', 'PNE', " |
197 | "'WFH', 'SHG', 'SBO', 'XFA', 'KLO', 'YMJ', 'INZ', 'PMK', 'RYE', 'KHB', 'YXB', 'TZK', 'LES', 'ZZN', 'FXH', " |
198 | "'EMP', 'PDI', 'JIS', 'GQW', 'SMX', 'UCU', 'IFF', 'VZI', 'DPN', 'LIK', 'CJO', 'DOC', 'BJP', 'NUB', 'GPH', " |
199 | "'GRQ', 'SOU', 'TZH', 'WUN', 'PDC', 'EWB', 'YMX', 'OEF', 'MEB', 'QBU', 'JUQ', 'HEQ', 'UJF', 'QDF', 'MMK', " |
200 | "'ZVU', 'JRP', 'JOS', 'TCC', 'TIO', 'RPM', 'GVB', 'GOH', 'CUV', 'DUW', 'EAK', 'CII', 'PGT', 'CHN', 'HMM', " |
201 | "'RLO', 'ARC', 'EFW', 'HVX', 'HJV', 'OHY', 'GPG', 'MQO', 'GBU', 'YPD', 'FNW', 'MDP', 'KXQ', 'PSB', 'NVZ', " |
202 | "'BYC', 'IUC', 'URT', 'BVP', 'VZP', 'UTL', 'BXW', 'FKT', 'PGM', 'DGD', 'AIV', 'TMY', 'RUN', 'QYG', 'GXF', " |
203 | "'VPF', 'UNY', 'MOZ', 'INN', 'VEV', 'PWC', 'AWY', 'MKI', 'TXG', 'BQU', 'QAU', 'ILO', 'IBH', 'PCO', 'RDH', " |
204 | "'UNP', 'LLB', 'DER', 'YRP', 'MWZ', 'NIH', 'MCS', 'ZCL', 'IOI', 'UPU', 'MNS', 'JDR', 'OWF', 'XTA', 'OAZ', " |
205 | "'WCV', 'FFI', 'NLI', 'BFD', 'LDD', 'FZR', 'HNP', 'IRL', 'WEA', 'PDE', 'IEN', 'GGR', 'YUP', 'VWA', 'WEM', " |
206 | "'QPZ', 'ZBA', 'GLU', 'CUH', 'VDK', 'KLF', 'OLF', 'PMD', 'FLZ', 'JQV', 'SGP', 'JZZ', 'HIO', 'LFV', 'PTG', " |
207 | "'FEL', 'WNX', 'LDU', 'EXI', 'JMT', 'RID', 'TXZ', 'PGC', 'GLC', 'JLI', 'CLT', 'VDK', 'FBI', 'WSW', 'ELJ', " |
208 | "'YJY', 'YXU', 'XWC', 'MII', 'YXM', 'HCJ', 'JVC', 'RPF', 'NXE', 'UFO', 'BYH', 'EFA', 'EGO', 'XVS', 'VWG', " |
209 | "'LOY', 'LCG', 'TRQ', 'IKL', 'OQA', 'HTU', 'XNU', 'AZS', 'BOR', 'XWR', 'UQN', 'YFH', 'TDS', 'RLP', 'PHC', " |
210 | "'AYP', 'BVL', 'CQI', 'HSC', 'JRS', 'YZU', 'YFY', 'WEI', 'ITW', 'MYU', 'ORF', 'OTD', 'CAO', 'UJN', 'UFW', " |
211 | "'UUP', 'IQG', 'SEG', 'BAQ', 'KJD', 'DNG', 'BZL', 'DVT', 'KJY', 'XLW', 'TMH', 'DCX', 'MVJ', 'JFU', 'VCL', " |
212 | "'FQX', 'WRS', 'OXS', 'QGT', 'UPJ', 'QTI', 'AOU', 'CHR', 'AMC', 'VCN', 'OUC', 'JDK', 'CNL', 'HVI', 'WTS', " |
213 | "'VPC', 'THK', 'SVV', 'IGZ', 'ZPC', 'OBU', 'EQP', 'UMD', 'BQX', 'CKN', 'FOW', 'RGD', 'LNP', 'YEG', 'GVT', " |
214 | "'BSV', 'KKI', 'JEZ', 'GQH', 'DHB', 'TFV', 'TFS', 'WVS', 'ZFS', 'ZPG', 'PLN', 'OBM', 'BRE', 'HXC', 'JBF', " |
215 | "'GKA', 'RKS', 'PUS', 'XGS', 'QYD', 'IOK', 'DZR', 'IRX', 'NIJ', 'EAJ', 'SCY', 'KXB', 'VII', 'ETT', 'UPQ', " |
216 | "'JPW', 'ZTS', 'CZC', 'DFE', 'JLR', 'ZAC', 'XTQ', 'JZY', 'MUW', 'EXR', 'OQC', 'QLF', 'VAL', 'CBQ', 'SQO', " |
217 | "'HXA', 'SCI', 'ZAM', 'EDK', 'HVB', 'LSH', 'EOR', 'KZF', 'TLA', 'JIK', 'ULN', 'CJY', 'YKP', 'RQQ', 'XQJ', " |
218 | "'EFK', 'WEA', 'VHL', 'ANA', 'VYI', 'GTV', 'FRN', 'BXI', 'QYM', 'WUJ', 'FHW', 'RAH', 'RCK', 'RXY', 'KXC', " |
219 | "'IFA', 'OCZ', 'PTB', 'IHO', 'SDL', 'YEP', 'RFX', 'ZUR', 'FKV', 'WFA', 'VAF', 'ZHK', 'KZO', 'AAN', 'IME', " |
220 | "'MIF', 'VCG', 'BYQ', 'QOY', 'LSG', 'IRT', 'PUI', 'UAB', 'MPY', 'CKS', 'PZL', 'EUW', 'JIO', 'WXL', 'JEV', " |
221 | "'SBT', 'WUQ', 'GBH', 'QEG', 'ZCJ', 'OKQ', 'AAX', 'LJN', 'OYH', 'EIJ', 'ZNK', 'JIA', 'TDN', 'DPU', 'BTR', " |
222 | "'SEP', 'VKZ', 'HEX', 'WFB', 'DKR', 'FQH', 'CTQ', 'NPX', 'DHG', 'ZSN', 'ZYF', 'MLP', 'IUH', 'ZIX', 'UYI', " |
223 | "'SRK', 'GEG', 'SCW', 'TED', 'XOP', 'PML', 'RNK', 'KTA', 'KJJ', 'UXS', 'MRX', 'FJH', 'NRA', 'ZJJ', 'WGU', " |
224 | "'NPD', 'GPA', 'UBR', 'GXI', 'YQP', 'SEI', 'MOZ', 'UIR', 'SIH', 'EAP', 'IXV', 'EKD', 'YVX', 'PPZ', 'MBK', " |
225 | "'NTQ', 'BSZ', 'BVD', 'LMV', 'MDB', 'BOK', 'XLL', 'QJJ', 'CTH', 'BLQ', 'ZOR', 'RVD', 'MNW', 'OCC', 'FCN', " |
226 | "'MAK', 'OMZ', 'PLJ', 'QMP', 'PTZ', 'AXB', 'YJG', 'JZX', 'HUH', 'FOL', 'BUV', 'BEI', 'ZYN', 'JHS', 'JND', " |
227 | "'TIB', 'JMM', 'UTZ', 'GEZ', 'LTQ', 'IBJ', 'WOY', 'IGT', 'ZUV', 'MWP', 'GSJ', 'FET', 'LXM', 'ZBE', 'VTI', " |
228 | "'WLW', 'PYT', 'DJQ', 'NFU', 'BKX', 'MDD', 'YPX', 'SBG', 'TKI', 'QRU', 'IKG', 'SRQ', 'AOB', 'KHN', 'IZN', " |
229 | "'NQU', 'NQC', 'HVS', 'JCP', 'HUL', 'MXN', 'DOW', 'HXR', 'GZT', 'GNL', 'INF', 'AOU', 'RXX', 'UEP', 'OXY', " |
230 | "'VWA', 'GLH', 'WPM', 'NVR', 'HIP', 'RIM', 'JJJ', 'JDN', 'RBB', 'BDI', 'XVJ', 'ERO', 'RXJ', 'ZMA', 'TVU', " |
231 | "'HPE', 'VAU', 'GVU', 'ZGK', 'KCK', 'DHB', 'RNZ', 'HDO', 'CZF', 'UTI', 'SAQ', 'SWA', 'VXK', 'FEH', 'RFJ', " |
232 | "'ZKQ', 'DOJ', 'DKK', 'SDL', 'FSX', 'ZJF', 'KTA', 'NLG', 'PHJ', 'WOH', 'AXU', 'HSI', 'SZW'" ; |
233 | |
234 | result = con.Query("SELECT * FROM strings WHERE s IN (" + in_list + ") ORDER BY s" ); |
235 | REQUIRE(CHECK_COLUMN(result, 0, {"HXR" , "NUT" })); |
236 | |
237 | result = con.Query("SELECT s, s IN (" + in_list + ") AS in_list FROM strings ORDER BY s" ); |
238 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), "HXR" , "NUT" , "ZZZ" })); |
239 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), true, true, false})); |
240 | |
241 | result = con.Query("SELECT s, s IN (" + in_list + ", NULL) AS in_list FROM strings ORDER BY s" ); |
242 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), "HXR" , "NUT" , "ZZZ" })); |
243 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), true, true, Value()})); |
244 | |
245 | result = con.Query("SELECT s, s NOT IN (" + in_list + ") AS in_list FROM strings ORDER BY s" ); |
246 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), "HXR" , "NUT" , "ZZZ" })); |
247 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), false, false, true})); |
248 | |
249 | result = con.Query("SELECT s, s NOT IN (" + in_list + ", NULL) AS in_list FROM strings ORDER BY s" ); |
250 | REQUIRE(CHECK_COLUMN(result, 0, {Value(), "HXR" , "NUT" , "ZZZ" })); |
251 | REQUIRE(CHECK_COLUMN(result, 1, {Value(), false, false, Value()})); |
252 | } |
253 | |