1# 2021 February 15 2# 3# The author disclaims copyright to this source code. In place of 4# a legal notice, here is a blessing: 5# 6# May you do good and not evil. 7# May you find forgiveness for yourself and forgive others. 8# May you share freely, never taking more than you give. 9# 10#*********************************************************************** 11# This file implements regression tests for SQLite library. The 12# focus of this file is testing optimizations associated with "IS NULL" 13# and "IS NOT NULL" operators on columns with NOT NULL constraints. 14# 15 16set testdir [file dirname $argv0] 17source $testdir/tester.tcl 18set testprefix notnullfault 19 20do_execsql_test 1.0 { 21 CREATE TABLE t1(a, b); 22 CREATE TABLE t2(c, d NOT NULL); 23} 24faultsim_save_and_close 25 26do_faultsim_test 1 -prep { 27 faultsim_restore_and_reopen 28} -body { 29 execsql { 30 SELECT * FROM t2 WHERE d NOT NULL 31 } 32} -test { 33 faultsim_test_result {0 {}} 34} 35 36#------------------------------------------------------------------------- 37reset_db 38do_execsql_test 2.0 { 39 CREATE TABLE t1(a, b, c); 40 CREATE TABLE t2(a, b, c, PRIMARY KEY(a, b, c)) WITHOUT ROWID; 41} 42faultsim_save_and_close 43 44do_faultsim_test 2.1 -faults oom-t* -prep { 45 faultsim_restore_and_reopen 46} -body { 47 execsql { 48 SELECT dense_rank() OVER win FROM t2 49 WINDOW win AS (ORDER BY c IS NULL) 50 } 51} -test { 52 faultsim_test_result {0 {}} 53} 54 55finish_test 56 57