15750a26fa
FossilOrigin-Name: 81069d7196857e909c94195d67388f71bc9f832eafd9156d8c5cdddb63513b4a
88 lines
1.9 KiB
Plaintext
88 lines
1.9 KiB
Plaintext
# 2019 August 10
|
|
#
|
|
# The author disclaims copyright to this source code. In place of
|
|
# a legal notice, here is a blessing:
|
|
#
|
|
# May you do good and not evil.
|
|
# May you find forgiveness for yourself and forgive others.
|
|
# May you share freely, never taking more than you give.
|
|
#
|
|
#***********************************************************************
|
|
# This file implements regression tests for SQLite library.
|
|
#
|
|
|
|
set testdir [file dirname $argv0]
|
|
source $testdir/tester.tcl
|
|
set testprefix nulls1
|
|
|
|
if 1 {
|
|
|
|
do_execsql_test 1.0 {
|
|
DROP TABLE IF EXISTS t3;
|
|
CREATE TABLE t3(a INTEGER);
|
|
INSERT INTO t3 VALUES(NULL), (10), (30), (20), (NULL);
|
|
} {}
|
|
|
|
for {set a 0} {$a < 3} {incr a} {
|
|
foreach {tn limit} {
|
|
1 ""
|
|
2 "LIMIT 10"
|
|
} {
|
|
do_execsql_test 1.$a.$tn.1 "
|
|
SELECT a FROM t3 ORDER BY a nULLS FIRST $limit
|
|
" {{} {} 10 20 30}
|
|
|
|
do_execsql_test 1.$a.$tn.2 "
|
|
SELECT a FROM t3 ORDER BY a nULLS LAST $limit
|
|
" {10 20 30 {} {}}
|
|
|
|
do_execsql_test 1.$a.$tn.3 "
|
|
SELECT a FROM t3 ORDER BY a DESC nULLS FIRST $limit
|
|
" {{} {} 30 20 10}
|
|
|
|
do_execsql_test 1.$a.$tn.4 "
|
|
SELECT a FROM t3 ORDER BY a DESC nULLS LAST $limit
|
|
" {30 20 10 {} {}}
|
|
}
|
|
|
|
switch $a {
|
|
0 {
|
|
execsql { CREATE INDEX i1 ON t3(a) }
|
|
}
|
|
1 {
|
|
execsql { DROP INDEX i1 ; CREATE INDEX i1 ON t3(a DESC) }
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#-------------------------------------------------------------------------
|
|
reset_db
|
|
do_execsql_test 2.0 {
|
|
CREATE TABLE t2(a, b, c);
|
|
CREATE INDEX i2 ON t2(a, b);
|
|
INSERT INTO t2 VALUES(1, 1, 1);
|
|
INSERT INTO t2 VALUES(1, NULL, 2);
|
|
INSERT INTO t2 VALUES(1, NULL, 3);
|
|
INSERT INTO t2 VALUES(1, 4, 4);
|
|
}
|
|
|
|
do_execsql_test 2.1 {
|
|
SELECT * FROM t2 WHERE a=1 ORDER BY b NULLS LAST
|
|
} {
|
|
1 1 1 1 4 4 1 {} 2 1 {} 3
|
|
}
|
|
|
|
do_execsql_test 2.2 {
|
|
SELECT * FROM t2 WHERE a=1 ORDER BY b DESC NULLS FIRST
|
|
} {
|
|
1 {} 3
|
|
1 {} 2
|
|
1 4 4
|
|
1 1 1
|
|
}
|
|
|
|
|
|
finish_test
|