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