You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-11-03 17:13:17 +03:00 
			
		
		
		
	This patch is the columnstore-part of the task. Columnstore wanted to have previous 32 depth, so this patch aims at keeping the compatibility.
		
			
				
	
	
		
			161 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			161 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
--source ../include/have_columnstore.inc
 | 
						|
--disable_warnings
 | 
						|
DROP DATABASE IF EXISTS json_valid_db;
 | 
						|
 | 
						|
--enable_warnings
 | 
						|
CREATE DATABASE json_valid_db;
 | 
						|
 | 
						|
USE json_valid_db;
 | 
						|
 | 
						|
--echo # ----------------------------------------------------------------------
 | 
						|
--echo # Test of JSON_VALID function.
 | 
						|
--echo # ----------------------------------------------------------------------
 | 
						|
--echo #
 | 
						|
--echo # String literal - valid JSON
 | 
						|
--echo #
 | 
						|
 | 
						|
CREATE TABLE t1(l LONGTEXT) ENGINE = COLUMNSTORE;
 | 
						|
 | 
						|
INSERT INTO t1 VALUES ('123');
 | 
						|
INSERT INTO t1 VALUES ('-123');
 | 
						|
INSERT INTO t1 VALUES ('5000000000');
 | 
						|
INSERT INTO t1 VALUES ('-5000000000');
 | 
						|
INSERT INTO t1 VALUES ('1.23');
 | 
						|
INSERT INTO t1 VALUES ('"123"');
 | 
						|
INSERT INTO t1 VALUES ('true');
 | 
						|
INSERT INTO t1 VALUES ('false');
 | 
						|
INSERT INTO t1 VALUES ('null');
 | 
						|
INSERT INTO t1 VALUES ('{"address": "Trondheim"}');
 | 
						|
INSERT INTO t1 VALUES (JSON_OBJECT());
 | 
						|
INSERT INTO t1 VALUES (JSON_OBJECT(1, 2));
 | 
						|
INSERT INTO t1 VALUES (JSON_ARRAY());
 | 
						|
INSERT INTO t1 VALUES (JSON_ARRAY(1, 2));
 | 
						|
 | 
						|
SELECT
 | 
						|
    l AS raw,
 | 
						|
    JSON_VALID(l) AS is_valid,
 | 
						|
    JSON_VALID(JSON_COMPACT(l)) AS compact
 | 
						|
FROM
 | 
						|
    t1;
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # String literal - invalid JSON
 | 
						|
--echo #
 | 
						|
TRUNCATE t1;
 | 
						|
 | 
						|
INSERT INTO t1 VALUES ('12 3');
 | 
						|
INSERT INTO t1 VALUES ('{key:value}');
 | 
						|
INSERT INTO t1 VALUES ('{key:value');
 | 
						|
INSERT INTO t1 VALUES ('[1,2,]');
 | 
						|
INSERT INTO t1 VALUES ('[1,2');
 | 
						|
 | 
						|
SELECT
 | 
						|
    l AS raw,
 | 
						|
    JSON_VALID(l) AS is_valid,
 | 
						|
    JSON_VALID(JSON_COMPACT(l)) AS compact
 | 
						|
FROM
 | 
						|
    t1;
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # String literal - not in UTF-8
 | 
						|
--echo #
 | 
						|
TRUNCATE t1;
 | 
						|
 | 
						|
SET NAMES 'ascii';
 | 
						|
 | 
						|
INSERT INTO t1 VALUES ('123');
 | 
						|
 | 
						|
SELECT
 | 
						|
    l AS raw,
 | 
						|
    JSON_VALID(l) AS is_valid,
 | 
						|
    JSON_VALID(JSON_COMPACT(l)) AS compact
 | 
						|
FROM
 | 
						|
    t1;
 | 
						|
 | 
						|
SET NAMES 'utf8';
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Bare NULL
 | 
						|
--echo #
 | 
						|
TRUNCATE t1;
 | 
						|
 | 
						|
INSERT INTO t1 VALUES (NULL);
 | 
						|
 | 
						|
SELECT
 | 
						|
    JSON_VALID(l)
 | 
						|
FROM
 | 
						|
    t1;
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Function result - string
 | 
						|
--echo #
 | 
						|
TRUNCATE t1;
 | 
						|
 | 
						|
INSERT INTO t1 VALUES (UPPER('"abc"'));
 | 
						|
 | 
						|
SELECT
 | 
						|
    JSON_VALID(l)
 | 
						|
FROM
 | 
						|
    t1;
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Function result - string not in UTF-8
 | 
						|
--echo #
 | 
						|
TRUNCATE t1;
 | 
						|
 | 
						|
SET NAMES 'latin1';
 | 
						|
 | 
						|
INSERT INTO t1 VALUES (UPPER('"abc"'));
 | 
						|
 | 
						|
SELECT
 | 
						|
    JSON_VALID(l)
 | 
						|
FROM
 | 
						|
    t1;
 | 
						|
 | 
						|
SET NAMES 'utf8';
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Function result - date, not valid as JSON without CAST
 | 
						|
--echo #
 | 
						|
TRUNCATE t1;
 | 
						|
 | 
						|
INSERT INTO t1 VALUES (CAST('2015-01-15' AS DATE));
 | 
						|
 | 
						|
SELECT
 | 
						|
    JSON_VALID(l)
 | 
						|
FROM
 | 
						|
    t1;
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # The date string doesn't parse as JSON text, so wrong:
 | 
						|
--echo #
 | 
						|
TRUNCATE t1;
 | 
						|
 | 
						|
INSERT INTO t1 VALUES (
 | 
						|
    CAST(
 | 
						|
        CAST('2015-01-15' AS DATE) AS CHAR CHARACTER SET 'utf8'
 | 
						|
    )
 | 
						|
);
 | 
						|
 | 
						|
SELECT
 | 
						|
    JSON_VALID(l)
 | 
						|
FROM
 | 
						|
    t1;
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Function result - NULL
 | 
						|
--echo #
 | 
						|
TRUNCATE t1;
 | 
						|
 | 
						|
INSERT INTO t1 VALUES (UPPER(NULL));
 | 
						|
INSERT INTO t1 VALUES (UPPER(CAST(NULL AS CHAR)));
 | 
						|
 | 
						|
SELECT
 | 
						|
    JSON_VALID(l)
 | 
						|
FROM
 | 
						|
    t1;
 | 
						|
 | 
						|
DROP TABLE t1;
 | 
						|
 | 
						|
DROP DATABASE json_valid_db;
 |