xref: /sqlite-3.40.0/test/subtype1.test (revision e5dea284)
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