1# 2015-09-10 2# 3# The author disclaims copyright to this source code. In place of 4# a legal notice, here is a blessing: 5# 6# May you do good and not evil. 7# May you find forgiveness for yourself and forgive others. 8# May you share freely, never taking more than you give. 9# 10#*********************************************************************** 11# This file implements tests for sqlite3_value_subtype() and 12# sqlite3_result_subtype() interfaces. 13# 14 15set testdir [file dirname $argv0] 16source $testdir/tester.tcl 17 18do_execsql_test subtype1-100 { 19 SELECT test_getsubtype('hello'); 20} {0} 21do_execsql_test subtype1-110 { 22 SELECT test_getsubtype(test_setsubtype('hello',123)); 23} {123} 24do_execsql_test subtype1-120 { 25 SELECT typeof(test_setsubtype('hello',123)); 26} {text} 27do_execsql_test subtype1-130 { 28 SELECT test_setsubtype('hello',123); 29} {hello} 30 31# 2022-06-09 32# https://sqlite.org/forum/forumpost/3d9caa45cbe38c78 33# 34# Avoid carrying subtypes through into a subquery that has been flattened 35# or to which the outer WHERE clause has been pushed down. 36# 37reset_db 38do_execsql_test subtype1-200 { 39 CREATE TABLE t1(a); INSERT INTO t1 VALUES ('x'); 40 CREATE VIEW t2(b) AS SELECT json(TRUE); 41 CREATE TABLE t3(b); INSERT INTO t3 VALUES(json(TRUE)); 42} 43do_execsql_test subtype1-210 { 44 SELECT * FROM t3, t1 WHERE NOT json_quote(b); 45} {1 x} 46do_execsql_test subtype1-220 { 47 SELECT * FROM t2, t1 WHERE NOT json_quote(b); 48} {1 x} 49do_execsql_test subtype1-230 { 50 WITH t4(a) AS MATERIALIZED (SELECT json(1)) SELECT subtype(a) FROM t4; 51} {0} 52do_execsql_test subtype1-231 { 53 WITH t4(a) AS NOT MATERIALIZED (SELECT json(1)) SELECT subtype(a) FROM t4; 54} {0} 55 56 57 58 59finish_test 60