diff options
Diffstat (limited to 'test/subtype1.test')
-rw-r--r-- | test/subtype1.test | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/test/subtype1.test b/test/subtype1.test new file mode 100644 index 0000000..d15f737 --- /dev/null +++ b/test/subtype1.test @@ -0,0 +1,59 @@ +# 2015-09-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 tests for sqlite3_value_subtype() and +# sqlite3_result_subtype() interfaces. +# + +set testdir [file dirname $argv0] +source $testdir/tester.tcl + +do_execsql_test subtype1-100 { + SELECT test_getsubtype('hello'); +} {0} +do_execsql_test subtype1-110 { + SELECT test_getsubtype(test_setsubtype('hello',123)); +} {123} +do_execsql_test subtype1-120 { + SELECT typeof(test_setsubtype('hello',123)); +} {text} +do_execsql_test subtype1-130 { + SELECT test_setsubtype('hello',123); +} {hello} + +# 2022-06-09 +# https://sqlite.org/forum/forumpost/3d9caa45cbe38c78 +# +# Avoid carrying subtypes through into a subquery that has been flattened +# or to which the outer WHERE clause has been pushed down. +# +reset_db +do_execsql_test subtype1-200 { + CREATE TABLE t1(a); INSERT INTO t1 VALUES ('x'); + CREATE VIEW t2(b) AS SELECT json(TRUE); + CREATE TABLE t3(b); INSERT INTO t3 VALUES(json(TRUE)); +} +do_execsql_test subtype1-210 { + SELECT * FROM t3, t1 WHERE NOT json_quote(b); +} {1 x} +do_execsql_test subtype1-220 { + SELECT * FROM t2, t1 WHERE NOT json_quote(b); +} {1 x} +do_execsql_test subtype1-230 { + WITH t4(a) AS MATERIALIZED (SELECT json(1)) SELECT subtype(a) FROM t4; +} {0} +do_execsql_test subtype1-231 { + WITH t4(a) AS NOT MATERIALIZED (SELECT json(1)) SELECT subtype(a) FROM t4; +} {0} + + + + +finish_test |