mirror of
				https://github.com/sqlite/sqlite.git
				synced 2025-10-25 20:58:26 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # 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}
 | |
| 
 | |
| # 2023-03-01
 | |
| # https://sqlite.org/forum/forumpost/37dd14a538
 | |
| # 
 | |
| # Additional tests to show that subtypes do not traverse subquery boundaries.
 | |
| #
 | |
| do_execsql_test subtype1-300 {
 | |
|   CREATE TABLE t0(c0);
 | |
|   INSERT INTO t0 VALUES ('1');
 | |
|   CREATE VIEW v0(c0) AS SELECT CASE WHEN 1 THEN json_patch('1', '1') END 
 | |
|                         FROM t0 GROUP BY t0.c0;
 | |
|   SELECT * FROM v0 WHERE json_quote(v0.c0) != '1';
 | |
| } {1}
 | |
| do_execsql_test subtype1-310 {
 | |
|   SELECT *, json_quote(y) FROM (SELECT +json('1') AS y);
 | |
| } {1 {"1"}}
 | |
| do_execsql_test subtype1-320 {
 | |
|   SELECT *, json_quote(y) FROM (SELECT +json('1') AS y)
 | |
|    WHERE json_quote(y)='"1"';
 | |
| } {1 {"1"}}
 | |
| 
 | |
| # 2024-11-26
 | |
| # subtype survives if()
 | |
| #
 | |
| do_execsql_test subtype1-400 {
 | |
|   WITH t400(id,j) AS (VALUES
 | |
|     (1,'{a:{x:1,y:2},b:{x:3,y:4}}'),
 | |
|     (2,'not json')
 | |
|   )
 | |
|   SELECT id, subtype(if(json_valid(j,6),j->'a')) FROM t400;
 | |
| } {1 74 2 0}
 | |
| 
 | |
| finish_test
 | 
