Adding the sqlite sourcecode
This commit is contained in:
1 parent
bdb54a1f8f
commit
406b584760
2208 files changed
+1172785
-1
No files matched your search
@@ -0,0 +1,121 @@
|
||||
# 2024-10-05
|
||||
#
|
||||
# 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. The
|
||||
# focus of this file is testing indexes on expressions.
|
||||
#
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
set testprefix indexexpr3
|
||||
|
||||
|
||||
do_execsql_test 1.0 {
|
||||
CREATE TABLE t1(a, j);
|
||||
INSERT INTO t1 VALUES(1, '{x:"one"}');
|
||||
INSERT INTO t1 VALUES(2, '{x:"two"}');
|
||||
INSERT INTO t1 VALUES(3, '{x:"three"}');
|
||||
|
||||
CREATE INDEX i1 ON t1( json_extract(j, '$.x') );
|
||||
CREATE INDEX i2 ON t1( a, json_extract(j, '$.x') );
|
||||
}
|
||||
|
||||
proc do_hasfunction_test {tn sql res} {
|
||||
set nFunction 0
|
||||
db eval "EXPLAIN $sql" x {
|
||||
if {$x(opcode)=="Function"} {
|
||||
incr nFunction
|
||||
}
|
||||
}
|
||||
|
||||
do_execsql_test $tn "
|
||||
SELECT $nFunction;
|
||||
$sql
|
||||
" $res
|
||||
}
|
||||
|
||||
do_hasfunction_test 1.1 {
|
||||
SELECT json_extract(j, '$.x') FROM t1 ORDER BY 1;
|
||||
} {
|
||||
0 one three two
|
||||
}
|
||||
|
||||
do_hasfunction_test 1.2 {
|
||||
SELECT json_extract(j, '$.x') FROM t1 WHERE a=2
|
||||
} {
|
||||
0 two
|
||||
}
|
||||
|
||||
do_hasfunction_test 1.3 {
|
||||
SELECT coalesce(json_extract(j, '$.x'), 'five') FROM t1 WHERE a=2
|
||||
} {
|
||||
0 two
|
||||
}
|
||||
|
||||
do_hasfunction_test 1.4 {
|
||||
SELECT json_extract(j, '$.x') || '.two' FROM t1 WHERE a=2
|
||||
} {
|
||||
0 two.two
|
||||
}
|
||||
|
||||
do_hasfunction_test 1.5 {
|
||||
SELECT json_insert( '{}', '$.y', json_extract(j, '$.x') ) FROM t1 WHERE a=2
|
||||
} {
|
||||
2 {{"y":"two"}}
|
||||
}
|
||||
|
||||
do_hasfunction_test 1.6 {
|
||||
SELECT json_insert( '{}', '$.y', coalesce( json_extract(j, '$.x'), 'five' ) )
|
||||
FROM t1 WHERE a=2
|
||||
} {
|
||||
2 {{"y":"two"}}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
reset_db
|
||||
do_execsql_test 2.0 {
|
||||
CREATE TABLE t1(a, b, j);
|
||||
CREATE INDEX i1 ON t1( a, json_extract(j, '$.x') );
|
||||
}
|
||||
|
||||
do_eqp_test 2.1 {
|
||||
SELECT json_extract(j, '$.x') FROM t1 WHERE a=?
|
||||
} {
|
||||
t1 USING COVERING INDEX i1
|
||||
}
|
||||
|
||||
do_eqp_test 2.2 {
|
||||
SELECT b, json_extract(j, '$.x') FROM t1 WHERE a=?
|
||||
} {
|
||||
t1 USING INDEX i1
|
||||
}
|
||||
|
||||
do_eqp_test 2.3 {
|
||||
SELECT json_insert( '{}', json_extract(j, '$.x') ) FROM t1 WHERE a=?
|
||||
} {
|
||||
t1 USING INDEX i1
|
||||
}
|
||||
|
||||
do_eqp_test 2.4 {
|
||||
SELECT sum( json_extract(j, '$.x') ) FROM t1 WHERE a=?
|
||||
} {
|
||||
t1 USING COVERING INDEX i1
|
||||
}
|
||||
|
||||
do_eqp_test 2.5 {
|
||||
SELECT json_extract(j, '$.x'), sum( json_extract(j, '$.x') ) FROM t1 WHERE a=?
|
||||
} {
|
||||
t1 USING INDEX i1
|
||||
}
|
||||
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
Reference in new issue
Block a user