summaryrefslogtreecommitdiff
path: root/mysql-test/main/func_json_notembedded.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/main/func_json_notembedded.test')
-rw-r--r--mysql-test/main/func_json_notembedded.test61
1 files changed, 61 insertions, 0 deletions
diff --git a/mysql-test/main/func_json_notembedded.test b/mysql-test/main/func_json_notembedded.test
new file mode 100644
index 00000000000..8108cf524fd
--- /dev/null
+++ b/mysql-test/main/func_json_notembedded.test
@@ -0,0 +1,61 @@
+source include/have_sequence.inc;
+source include/not_embedded.inc;
+
+set global max_allowed_packet=1073741824;
+connect u,localhost,root;
+
+--echo #
+--echo # MDEV-24909 JSON functions don't respect KILL QUERY / max_statement_time limit
+--echo #
+set group_concat_max_len= 4294967295;
+
+set @obj=concat('{', repeat('"a":"b",', 12500000), '"c":"d"}');
+set @arr=concat('[', repeat('1234567,', 12500000), '2345678]');
+select length(@obj), length(@arr);
+
+set @now=unix_timestamp();
+--error ER_STATEMENT_TIMEOUT
+set statement max_statement_time= 1 for select json_array_append(@arr, '$[0]', 1);
+select greatest(unix_timestamp()-@now, 2); set @now=unix_timestamp();
+--error ER_STATEMENT_TIMEOUT
+set statement max_statement_time= 1 for select json_array_insert(@arr, '$[0]', 1);
+select greatest(unix_timestamp()-@now, 2); set @now=unix_timestamp();
+--error ER_STATEMENT_TIMEOUT
+set statement max_statement_time= 1 for select json_insert(@obj, '$.meta', 1);
+select greatest(unix_timestamp()-@now, 2); set @now=unix_timestamp();
+--error ER_STATEMENT_TIMEOUT
+set statement max_statement_time= 1 for select json_compact(@arr);
+select greatest(unix_timestamp()-@now, 2); set @now=unix_timestamp();
+--error ER_STATEMENT_TIMEOUT
+set statement max_statement_time= 1 for select json_detailed(@arr);
+select greatest(unix_timestamp()-@now, 2); set @now=unix_timestamp();
+--error ER_STATEMENT_TIMEOUT
+set statement max_statement_time= 1 for select json_loose(@arr);
+select greatest(unix_timestamp()-@now, 2); set @now=unix_timestamp();
+--error ER_STATEMENT_TIMEOUT
+set statement max_statement_time= 1 for select json_merge(@obj, @arr);
+select greatest(unix_timestamp()-@now, 2); set @now=unix_timestamp();
+--error ER_STATEMENT_TIMEOUT
+set statement max_statement_time= 1 for select json_merge_patch(@obj, @obj);
+select greatest(unix_timestamp()-@now, 2); set @now=unix_timestamp();
+--error ER_STATEMENT_TIMEOUT
+set statement max_statement_time= 1 for select json_merge_preserve(@obj, @arr);
+select greatest(unix_timestamp()-@now, 2); set @now=unix_timestamp();
+--error ER_STATEMENT_TIMEOUT
+set statement max_statement_time= 1 for select json_remove(@obj,'$.foo');
+select greatest(unix_timestamp()-@now, 2); set @now=unix_timestamp();
+--error ER_STATEMENT_TIMEOUT
+set statement max_statement_time= 1 for select json_replace(@obj,'$.foo',1);
+select greatest(unix_timestamp()-@now, 2); set @now=unix_timestamp();
+--error ER_STATEMENT_TIMEOUT
+set statement max_statement_time= 1 for select json_set(@arr,'$[1000]',1);
+select greatest(unix_timestamp()-@now, 2); set @now=unix_timestamp();
+
+disconnect u;
+connection default;
+set group_concat_max_len= default;
+set global max_allowed_packet=default;
+
+--echo #
+--echo # End of 10.5 tests
+--echo #