263 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			263 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
| ########### suite/json/t/json_innodb.test                            #
 | |
| # Tests json functionality that depends on innodb features           #
 | |
| #                                                                    #
 | |
| # This test copies some tests originally in json.test                #
 | |
| ######################################################################
 | |
| 
 | |
| # original test case in the bug report
 | |
| # innodb allows more than three json columns in a table
 | |
| CREATE TABLE D_21104470 (
 | |
|   pk int(11) NOT NULL AUTO_INCREMENT,
 | |
|   col_int_nokey json NOT NULL,
 | |
|   col_int_key int(11) NOT NULL,
 | |
|   col_date_key date NOT NULL,
 | |
|   col_date_nokey json NOT NULL,
 | |
|   col_time_key time NOT NULL,
 | |
|   col_time_nokey json NOT NULL,
 | |
|   col_datetime_key datetime NOT NULL,
 | |
|   col_datetime_nokey json NOT NULL,
 | |
|   col_varchar_key varchar(1) NOT NULL,
 | |
|   col_varchar_nokey json NOT NULL,
 | |
|   PRIMARY KEY (pk),
 | |
|   KEY col_int_key (col_int_key),
 | |
|   KEY col_date_key (col_date_key),
 | |
|   KEY col_time_key (col_time_key),
 | |
|   KEY col_datetime_key (col_datetime_key),
 | |
|   KEY col_varchar_key (col_varchar_key),
 | |
|   KEY col_int_key_2 (col_int_key,col_date_key,col_time_key,col_datetime_key,col_varchar_key)
 | |
| ) AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
 | |
| INSERT INTO D_21104470
 | |
| VALUES
 | |
| (1,'{"int1": "6"}',3,
 | |
|   '2007-06-18','{"date": "2007-06-18"}',
 | |
|   '00:00:00','{"time": null}',
 | |
|   '2002-08-20 22:48:00','{"datetime": "2002-08-20 22:48:00.035785"}',
 | |
|   'd','{"varc": "d"}'),
 | |
| (2,'{"int1": "2"}',8,
 | |
|   '2002-10-13','{"date": "2002-10-13"}',
 | |
|   '00:00:00','{"time": "00:00:00"}',
 | |
|   '1900-01-01 00:00:00','{"datetime": "1900-01-01 00:00:00"}',
 | |
|   's','{"varc": "s"}'),
 | |
| (3,'{"int1": "4"}',1,
 | |
|   '1900-01-01','{"date": "1900-01-01"}',
 | |
|   '15:57:25','{"time": "15:57:25.019666"}',
 | |
|   '2005-08-15 00:00:00','{"datetime": "2005-08-15 00:00:00"}',
 | |
|   'r','{"varc": "r"}'),
 | |
| (4,'{"int1": "8"}',8,
 | |
|   '1900-02-03','{"date": null}',
 | |
|   '07:05:51','{"time": "07:05:51.006712"}',
 | |
|   '1900-01-01 00:00:00','{"datetime": "1900-01-01 00:00:00"}',
 | |
|   'm','{"varc": "m"}'),
 | |
| (5,'{"int1": "4"}',8,
 | |
|   '2006-03-09','{"date": "2006-03-09"}',
 | |
|   '19:22:21','{"time": "19:22:21.057406"}',
 | |
|   '2008-05-16 08:09:06','{"datetime": "2008-05-16 08:09:06.002924"}',
 | |
|   'b','{"varc": "b"}'),
 | |
| (6,'{"int1": "4"}',5,
 | |
|   '2001-06-05','{"date": "2001-06-05"}',
 | |
|   '03:53:16','{"time": "03:53:16.001370"}',
 | |
|   '2001-01-20 12:47:23','{"datetime": "2001-01-20 12:47:23.022022"}',
 | |
|   'x','{"varc": "x"}'),
 | |
| (7,'{"int1": "7"}',7,
 | |
|   '2006-05-28','{"date": "2006-05-28"}',
 | |
|   '09:16:38','{"time": "09:16:38.034570"}',
 | |
|   '2008-07-02 00:00:00','{"datetime": "2008-07-02 00:00:00"}',
 | |
|   'g','{"varc": "g"}'),
 | |
| (8,'{"int1": "4"}',5,
 | |
|   '2001-04-19','{"date": "2001-04-19"}',
 | |
|   '15:37:26','{"time": "15:37:26.028315"}',
 | |
|   '1900-01-01 00:00:00','{"datetime": "1900-01-01 00:00:00"}',
 | |
|   'p','{"varc": "p"}'),
 | |
| (9,'{"int1": "1"}',1,
 | |
|   '1900-01-01','{"date": "1900-01-01"}',
 | |
|   '00:00:00','{"time": "00:00:00"}',
 | |
|   '2002-12-08 11:34:58','{"datetime": "2002-12-08 11:34:58.001571"}',
 | |
|   'q','{"varc": "q"}'),
 | |
| (10,'{"int1": "9"}',6,
 | |
|   '2004-08-20','{"date": "2004-08-20"}',
 | |
|   '05:03:03','{"time": "05:03:03.047452"}',
 | |
|   '1900-01-01 00:00:00','{"datetime": "1900-01-01 00:00:00"}',
 | |
|   'w','{"varc": "w"}');
 | |
| 
 | |
| CREATE TABLE DD_21104470 (
 | |
|   pk int(11) NOT NULL AUTO_INCREMENT,
 | |
|   col_int_nokey json NOT NULL,
 | |
|   col_int_key int(11) NOT NULL,
 | |
|   col_date_key date NOT NULL,
 | |
|   col_date_nokey json NOT NULL,
 | |
|   col_time_key time NOT NULL,
 | |
|   col_time_nokey json NOT NULL,
 | |
|   col_datetime_key datetime NOT NULL,
 | |
|   col_datetime_nokey json NOT NULL,
 | |
|   col_varchar_key varchar(1) NOT NULL,
 | |
|   col_varchar_nokey json NOT NULL,
 | |
|   PRIMARY KEY (pk),
 | |
|   KEY col_int_key (col_int_key),
 | |
|   KEY col_date_key (col_date_key),
 | |
|   KEY col_time_key (col_time_key),
 | |
|   KEY col_datetime_key (col_datetime_key),
 | |
|   KEY col_varchar_key (col_varchar_key),
 | |
|   KEY col_int_key_2 (col_int_key,col_date_key,col_time_key,col_datetime_key,col_varchar_key)
 | |
| ) AUTO_INCREMENT=20 DEFAULT CHARSET=latin1;
 | |
| INSERT INTO DD_21104470
 | |
| VALUES
 | |
| (10,'{"int1": "6"}',3,
 | |
|   '2002-12-16','{"date": "2002-12-16"}',
 | |
|   '17:54:20','{"time": "17:54:20.050299"}',
 | |
|   '2007-04-06 06:20:37','{"datetime": "2007-04-06 06:20:37.035492"}',
 | |
|   'i','{"varc": "i"}'),
 | |
| (11,'{"int1": "1"}',1,
 | |
|   '2005-08-08','{"date": "2005-08-08"}',
 | |
|   '08:53:47','{"time": "08:53:47.064602"}',
 | |
|   '2008-03-07 00:00:00','{"datetime": "2008-03-07 00:00:00"}',
 | |
|   'x','{"varc": "x"}'),
 | |
| (12,'{"int1": "5"}',2,
 | |
|   '2004-11-16','{"date": "2004-11-16"}',
 | |
|   '01:40:28','{"time": "01:40:28.015719"}',
 | |
|   '2002-01-25 10:15:08','{"datetime": "2002-01-25 10:15:08.014682"}',
 | |
|   'l','{"varc": "l"}'),
 | |
| (13,'{"int1": "6"}',7,
 | |
|   '1900-02-04','{"date": null}',
 | |
|   '16:37:21','{"time": "16:37:21.055310"}',
 | |
|   '2001-02-26 23:35:13','{"datetime": "2001-02-26 23:35:13.014897"}',
 | |
|   'q','{"varc": "q"}'),
 | |
| (14,'{"int1": "2"}',6,
 | |
|   '2006-05-14','{"date": "2006-05-14"}',
 | |
|   '01:00:33','{"time": "01:00:33.038177"}',
 | |
|   '2001-06-23 13:47:43','{"datetime": "2001-06-23 13:47:43.001775"}',
 | |
|   'n','{"varc": "n"}'),
 | |
| (15,'{"int1": "4"}',1,
 | |
|   '2005-01-19','{"date": "2005-01-19"}',
 | |
|   '03:06:43','{"time": "03:06:43.059217"}',
 | |
|   '2007-01-17 05:06:55','{"datetime": "2007-01-17 05:06:55.064405"}',
 | |
|   'r','{"varc": "r"}'),
 | |
| (16,'{"int1": "231"}',156,
 | |
|   '1900-01-01','{"date": "1900-01-01"}',
 | |
|   '00:00:00','{"time": null}',
 | |
|   '2001-10-23 00:00:00','{"datetime": "2001-10-23 00:00:00"}',
 | |
|   'c','{"varc": "c"}'),
 | |
| (17,'{"int1": "4"}',8,
 | |
|   '2004-06-25','{"date": "2004-06-25"}',
 | |
|   '16:13:44','{"time": "16:13:44.008978"}',
 | |
|   '2003-11-24 04:13:27','{"datetime": "2003-11-24 04:13:27.046820"}',
 | |
|   'h','{"varc": "h"}'),
 | |
| (18,'{"int1": "3"}',7,
 | |
|   '2009-12-22','{"date": "2009-12-22"}',
 | |
|   '14:09:13','{"time": "14:09:13.028533"}',
 | |
|   '2007-09-19 14:33:09','{"datetime": "2007-09-19 14:33:09.017132"}',
 | |
|   'k','{"varc": "k"}'),
 | |
| (19,'{"int1": "3"}',2,
 | |
|   '2004-06-25','{"date": "2004-06-25"}',
 | |
|   '10:09:51','{"time": "10:09:51.017335"}',
 | |
|   '1900-01-01 00:00:00','{"datetime": "1900-01-01 00:00:00"}',
 | |
|   't','{"varc": "t"}');
 | |
| 
 | |
| CREATE TABLE insert_select_21104470
 | |
| SELECT
 | |
| table3 . col_datetime_nokey AS field1
 | |
| FROM
 | |
|   D_21104470 AS table1
 | |
|   LEFT  JOIN  DD_21104470 AS table2
 | |
|   LEFT  JOIN DD_21104470 AS table3
 | |
|   ON table2 . col_int_key <  table3 . col_int_key
 | |
|   ON  table1 . pk =  table2 . col_int_key
 | |
| WHERE   table1 . col_int_key >= 3
 | |
| AND table1 . col_int_key < ( 3 + 7 )
 | |
| OR table1 . col_int_key >= 3
 | |
| AND table1 . col_int_key < ( 3 + 25 )
 | |
| AND table1 . col_int_key != table2 . pk
 | |
| AND table1 . col_int_key IS  NULL
 | |
| AND  table1 . pk IS  NULL
 | |
| OR table1 . col_int_key > 3
 | |
| GROUP BY field1
 | |
| ORDER BY field1;
 | |
| 
 | |
| DROP TABLE D_21104470;
 | |
| DROP TABLE DD_21104470;
 | |
| DROP TABLE insert_select_21104470;
 | |
| 
 | |
| --echo #
 | |
| --echo # Bug#21383497 DBUG_ABORT() IN VAL_JSON
 | |
| --echo #
 | |
| # This test produces indeterminate results in ndb that depend on the order of evaluation
 | |
| # The group identifier may be any of the items that compare equal
 | |
| CREATE TABLE t(a INT PRIMARY KEY);
 | |
| INSERT INTO t VALUES (1), (2), (3), (4), (5);
 | |
| SELECT 1 FROM t GROUP BY ST_ASGEOJSON(POINT(1, 1)) WITH ROLLUP;
 | |
| SELECT JSON_EXTRACT('{"a":1}', '$.a') AS je, COUNT(DISTINCT a)
 | |
| FROM t GROUP BY je WITH ROLLUP;
 | |
| SELECT JSON_EXTRACT(NULL, '$.a') AS je, COUNT(DISTINCT a)
 | |
| FROM t GROUP BY je WITH ROLLUP;
 | |
| SELECT JSON_EXTRACT('{"a":1}', '$.a') AS je, a, COUNT(DISTINCT a)
 | |
| FROM t GROUP BY je, a WITH ROLLUP;
 | |
| SELECT JSON_EXTRACT('{"a":1}', '$.a') AS je, a, COUNT(DISTINCT a)
 | |
| FROM t GROUP BY a, je WITH ROLLUP;
 | |
| DROP TABLE t;
 | |
| 
 | |
| --echo #
 | |
| --echo # Bug#21096340 VIEW WITH QUERY HAVING SUM ON JSON COLUMN RETURNS INVALID DATA
 | |
| --echo #
 | |
| 
 | |
| --source include/turn_off_only_full_group_by.inc
 | |
| 
 | |
| CREATE TABLE D (
 | |
| col_varchar_10_latin1 varchar(10) CHARACTER SET latin1,
 | |
| col_varchar_255_latin1_key varchar(255) CHARACTER SET latin1,
 | |
| col_int_key int,
 | |
| pk integer auto_increment,
 | |
| col_varchar_255_utf8_key varchar(255) CHARACTER SET utf8,
 | |
| col_int int,
 | |
| col_varchar_10_utf8 varchar(10) CHARACTER SET utf8,
 | |
| col_varchar_255_latin1 varchar(255) CHARACTER SET latin1,
 | |
| col_varchar_255_utf8 varchar(255) CHARACTER SET utf8,
 | |
| col_varchar_10_latin1_key varchar(10) CHARACTER SET latin1,
 | |
| col_varchar_10_utf8_key varchar(10) CHARACTER SET utf8,
 | |
| /*Indices*/
 | |
| key (col_varchar_255_latin1_key),
 | |
| key (col_int_key),
 | |
| primary key (pk),
 | |
| key (col_varchar_255_utf8_key),
 | |
| key (col_varchar_10_latin1_key),
 | |
| key (col_varchar_10_utf8_key)
 | |
| );
 | |
| 
 | |
| INSERT INTO D VALUES 
 | |
| ('have', 'say', NULL, NULL, 'who', NULL, 'JBIYP', 'he''s', 'VWJOC', 'your', 'VDMAE') ,  
 | |
| ('YQAHN', 'GIKYQ', 3, NULL, 'no', 1933049856,'got', 'icz', 'RMHUR', 'MPCRS', 'so') ,
 | |
| ('had', 'PASVH', 2144141312, NULL, 'look', 808058880, 'czstj', 'z', 'MRRVF', 'UHWEV', 'that') ,  
 | |
| ('BSXXI', 'DLIRG', NULL, NULL, 'zstjzfsu', 1562116096, 'is', 'WKDGV', 'stj', 'tjzf', 'with') ,  
 | |
| ('JFSGY', 'c', 98828288, NULL, 'n', 269418496, 'LDJWY', 'jzfsu', 'QPXVX', 'zfsunwdg', 'we');
 | |
| 
 | |
| ALTER TABLE D MODIFY COLUMN col_int JSON;
 | |
| 
 | |
| # This query is unreliable in ndb. It may return
 | |
| # SUM(col_int)	col_int
 | |
| # 4572643328    1933049856 or
 | |
| # 4572643328	NULL
 | |
| SELECT SUM(col_int), col_int FROM D AS table1 WHERE table1.pk = table1.pk;
 | |
| 
 | |
| CREATE OR REPLACE VIEW view1 AS SELECT SUM(col_int), col_int FROM D AS table1
 | |
| WHERE table1.pk = table1.pk;
 | |
| SELECT * FROM view1;
 | |
| 
 | |
| SELECT  SUM(col_int), col_int FROM D AS table1 WHERE table1.pk = table1.pk;
 | |
| 
 | |
| SELECT * FROM view1;
 | |
| 
 | |
| DROP VIEW view1;
 | |
| DROP TABLE D;
 | |
| 
 | |
| --source include/restore_sql_mode_after_turn_off_only_full_group_by.inc
 | |
| 
 | |
| --echo #
 | |
| --echo # Bug#29669251: !THD->IS_ERROR() IN JOIN_READ_CONST_TABLE()
 | |
| --echo #
 | |
| CREATE TABLE t(a INT);
 | |
| INSERT INTO t VALUES(1),(2);
 | |
| --error ER_INVALID_JSON_TEXT_IN_PARAM
 | |
| WITH
 | |
|   cte1 AS (SELECT STD(a) AS a1 FROM t ),
 | |
|   cte2 AS (SELECT (JSON_INSERT('$.KEY3', NULL, NULL)) AS a2 FROM t)
 | |
|   SELECT cte1.a1 FROM cte1,cte2 WHERE cte1.a1 LIKE cte2.a2;
 | |
| DROP TABLE t;
 |