178f9bb6cSdan# 2016 June 17 278f9bb6cSdan# 378f9bb6cSdan# The author disclaims copyright to this source code. In place of 478f9bb6cSdan# a legal notice, here is a blessing: 578f9bb6cSdan# 678f9bb6cSdan# May you do good and not evil. 778f9bb6cSdan# May you find forgiveness for yourself and forgive others. 878f9bb6cSdan# May you share freely, never taking more than you give. 978f9bb6cSdan# 1078f9bb6cSdan#*********************************************************************** 1178f9bb6cSdan# This file implements regression tests for SQLite library. 1278f9bb6cSdan# 1378f9bb6cSdan 1478f9bb6cSdan 1578f9bb6cSdanset testdir [file dirname $argv0] 1678f9bb6cSdansource $testdir/tester.tcl 1778f9bb6cSdansource $testdir/malloc_common.tcl 1878f9bb6cSdanset ::testprefix rowvaluefault 1978f9bb6cSdan 2078f9bb6cSdando_execsql_test 1.0 { 2178f9bb6cSdan CREATE TABLE xyz(one, two, thr, fou); 2278f9bb6cSdan INSERT INTO xyz VALUES('A', 'A', 'A', 1); 2378f9bb6cSdan INSERT INTO xyz VALUES('B', 'B', 'B', 2); 2478f9bb6cSdan INSERT INTO xyz VALUES('C', 'C', 'C', 3); 2578f9bb6cSdan INSERT INTO xyz VALUES('D', 'D', 'D', 4); 2678f9bb6cSdan 2778f9bb6cSdan CREATE UNIQUE INDEX xyz_one_two ON xyz(one, two); 2878f9bb6cSdan} 2978f9bb6cSdan 3078f9bb6cSdando_faultsim_test 1 -faults oom* -body { 3178f9bb6cSdan execsql { SELECT fou FROM xyz WHERE (one, two, thr) = ('B', 'B', 'B') } 3278f9bb6cSdan} -test { 3378f9bb6cSdan faultsim_test_result {0 2} 3478f9bb6cSdan} 3578f9bb6cSdan 3678f9bb6cSdando_faultsim_test 2 -faults oom* -body { 3778f9bb6cSdan execsql { SELECT fou FROM xyz WHERE (two, thr) IS ('C', 'C') } 3878f9bb6cSdan} -test { 3978f9bb6cSdan faultsim_test_result {0 3} 4078f9bb6cSdan} 4178f9bb6cSdan 4278f9bb6cSdando_faultsim_test 3 -faults oom* -body { 4378f9bb6cSdan execsql { SELECT fou FROM xyz WHERE (one, two, thr) > ('B', 'B', 'B') } 4478f9bb6cSdan} -test { 4578f9bb6cSdan faultsim_test_result {0 {3 4}} 4678f9bb6cSdan} 4778f9bb6cSdan 4878f9bb6cSdando_faultsim_test 4 -faults oom* -body { 4978f9bb6cSdan execsql { SELECT fou FROM xyz WHERE (one, two) IN (SELECT one, two FROM xyz) } 5078f9bb6cSdan} -test { 5178f9bb6cSdan faultsim_test_result {0 {1 2 3 4}} 5278f9bb6cSdan} 5378f9bb6cSdan 5478f9bb6cSdando_faultsim_test 5 -faults oom* -body { 5578f9bb6cSdan execsql { 5678f9bb6cSdan SELECT fou FROM xyz 5778f9bb6cSdan WHERE (one, two, thr) IN (SELECT one, two, thr FROM xyz) 5878f9bb6cSdan } 5978f9bb6cSdan} -test { 6078f9bb6cSdan faultsim_test_result {0 {1 2 3 4}} 6178f9bb6cSdan} 6278f9bb6cSdan 6378f9bb6cSdando_faultsim_test 6 -faults oom* -body { 6478f9bb6cSdan execsql { 6578f9bb6cSdan SELECT fou FROM xyz 6678f9bb6cSdan WHERE (one, two, thr) BETWEEN ('B', 'B', 'B') AND ('C', 'C', 'C') } 6778f9bb6cSdan} -test { 6878f9bb6cSdan faultsim_test_result {0 {2 3}} 6978f9bb6cSdan} 7078f9bb6cSdan 719289f510Sdando_faultsim_test 7 -faults oom* -body { 729289f510Sdan execsql { 739289f510Sdan SELECT fou FROM xyz 749289f510Sdan WHERE (one, two, thr) IN ( ('a','b','c'), ('A','A','A'), (1,2,3) ); 759289f510Sdan } 769289f510Sdan} -test { 779289f510Sdan faultsim_test_result {0 1} 789289f510Sdan} 799289f510Sdan 809289f510Sdando_faultsim_test 8 -faults oom* -body { 819289f510Sdan execsql { 829289f510Sdan SELECT fou FROM xyz 83*74777f99Sdan WHERE (two, one) IN ( ('a','b','c'), ('A','A','A'), (1,2,3) ); 849289f510Sdan } 859289f510Sdan} -test { 86*74777f99Sdan faultsim_test_result {1 {IN(...) element has 3 terms - expected 2}} 879289f510Sdan} 889289f510Sdan 8978f9bb6cSdanfinish_test 90