xref: /sqlite-3.40.0/test/rowvaluefault.test (revision 74777f99)
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