1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
--echo # See that NULL-handling is correct
SELECT JSON_SCHEMA_VALIDATION_REPORT(NULL, NULL);
SELECT JSON_SCHEMA_VALIDATION_REPORT(JSON_OBJECT(), NULL);
SELECT JSON_SCHEMA_VALIDATION_REPORT(NULL, JSON_OBJECT());
--echo # A few "happy" cases
SELECT JSON_SCHEMA_VALIDATION_REPORT('{"type": "object"}', '{}');
SELECT JSON_SCHEMA_VALIDATION_REPORT('{"type": "array"}', '[]');
--echo # Cases where the JSON document is invalid
SELECT JSON_SCHEMA_VALIDATION_REPORT('{"type": "object"}', '[]');
SELECT JSON_SCHEMA_VALIDATION_REPORT('{
"type": "object",
"properties": {
"geometry": {
"type": "object",
"properties": {
"latitude": {
"minimum": -90
}
}
}
}
}',
'{
"geometry": {
"longitude": -90,
"latitude": -180
}
}');
--echo # A case where the JSON Schema is invalid
SELECT JSON_SCHEMA_VALIDATION_REPORT('{"type": "object-object"}', '{}');
--echo # Non-json JSON Schema input
--error ER_INVALID_TYPE_FOR_JSON
SELECT JSON_SCHEMA_VALIDATION_REPORT(POINT(1, 1), '{}');
--error ER_INVALID_JSON_TEXT_IN_PARAM
SELECT JSON_SCHEMA_VALIDATION_REPORT('{ bar', '{}');
--echo # Non-object JSON Schema input
--error ER_INVALID_JSON_TYPE
SELECT JSON_SCHEMA_VALIDATION_REPORT('[]', '{}');
--echo # Non-json JSON document input
--error ER_INVALID_TYPE_FOR_JSON
SELECT JSON_SCHEMA_VALIDATION_REPORT('{}', POINT(1, 1));
--error ER_INVALID_JSON_TEXT_IN_PARAM
SELECT JSON_SCHEMA_VALIDATION_REPORT('{}', '{ bar');
--echo # Wrong argument count
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT JSON_SCHEMA_VALIDATION_REPORT();
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT JSON_SCHEMA_VALIDATION_REPORT(NULL);
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT JSON_SCHEMA_VALIDATION_REPORT(NULL, NULL, NULL);
--echo # Ensure that our item tree transformation doesn't get stuck forever when
--echo # using prepared statements.
PREPARE stmt FROM 'SELECT JSON_SCHEMA_VALIDATION_REPORT(?, ''{}'') FROM DUAL';
SET @json_schema = '{"type":"object"}';
SET @null = NULL;
EXECUTE stmt USING @json_schema;
EXECUTE stmt USING @null;
EXECUTE stmt USING @json_schema;
--echo #
--echo # Bug#29529220: WL#13005: ASSERTION FAILURE: `!ARGS[0]->CONST_ITEM()'
--echo # Bug#29528888: WL#11999: SIG6 IN ITEM_FUNC_JSON_SCHEMA_VALID::VAL_BOOL()
--echo # AT ITEM_JSON_FUNC.CC
--echo #
CREATE TABLE t1 (pk INT PRIMARY KEY, j JSON);
INSERT INTO t1 VALUES (1, '{"key": "foobar"}' );
SELECT JSON_SCHEMA_VALIDATION_REPORT(j, j) FROM t1 WHERE pk = 1;
SELECT JSON_SCHEMA_VALIDATION_REPORT(t2.j, t2.j)
FROM t1, (SELECT * FROM t1 WHERE pk = 1) t2;
DROP TABLE t1;
--echo #
--echo # Bug#30622327: JSON SCHEMA FUNCTIONS SHOULD CHECK ARGUMENT TYPES
--echo # AT RESOLVE TIME
--echo #
CREATE TABLE t(j JSON, g GEOMETRY);
--error ER_INVALID_TYPE_FOR_JSON
PREPARE ps FROM 'SELECT * FROM t WHERE JSON_SCHEMA_VALIDATION_REPORT(j, g)';
--error ER_INVALID_TYPE_FOR_JSON
PREPARE ps FROM 'SELECT * FROM t WHERE JSON_SCHEMA_VALIDATION_REPORT(g, j)';
DROP TABLE t;
--echo #
--echo # Bug#32047630: MISSING ERROR PROPAGATION IN JSON FUNCTIONS
--echo #
--error ER_INVALID_JSON_TEXT_IN_PARAM
SELECT JSON_ARRAY(JSON_SCHEMA_VALIDATION_REPORT('{}', '{'), 1);
--error ER_INVALID_JSON_TEXT_IN_PARAM
SELECT JSON_ARRAY(JSON_SCHEMA_VALIDATION_REPORT('{}', CAST('{' AS JSON)), 1);
--error ER_INVALID_JSON_TEXT_IN_PARAM
SELECT JSON_ARRAY(JSON_SCHEMA_VALIDATION_REPORT(
CAST(CONCAT('{', RAND()) AS JSON), '{}'), 1);
|