summaryrefslogtreecommitdiffstats
path: root/test/subtype1.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/subtype1.test')
-rw-r--r--test/subtype1.test59
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