diff --git a/mysql-test/suite/json/r/json_table.result b/mysql-test/suite/json/r/json_table.result index 34f25f316d4..59197c89881 100644 --- a/mysql-test/suite/json/r/json_table.result +++ b/mysql-test/suite/json/r/json_table.result @@ -813,6 +813,7 @@ SUM(o) NULL set sql_mode=@save_sql_mode; drop table t1; +# # MDEV-25379 JSON_TABLE: ERROR ON clauses are ignored if a column is not on select list. # SELECT * FROM JSON_TABLE ('{}', '$' COLUMNS(a INT PATH '$.*' ERROR ON EMPTY, o FOR ORDINALITY)) AS jt; @@ -822,5 +823,14 @@ ERROR HY000: Field 'a' can't be set for JSON_TABLE 'jt'. SELECT COUNT(*) FROM JSON_TABLE ('{}', '$' COLUMNS(a INT PATH '$.*' ERROR ON EMPTY, o FOR ORDINALITY)) AS jt; ERROR HY000: Field 'a' can't be set for JSON_TABLE 'jt'. # +# MDEV-25408 JSON_TABLE: AddressSanitizer CHECK failed in Binary_string::realloc_raw. +# +SELECT x, COUNT(*) FROM JSON_TABLE( '{}', '$' COLUMNS( +a BIT(14) PATH '$', b CHAR(16) PATH '$', c INT PATH '$[0]', d INT PATH '$[1]', e INT PATH '$[2]', +f INT PATH '$[3]', g INT PATH '$[4]', h INT PATH '$[5]', i INT PATH '$[6]', j INT PATH '$[7]', +x TEXT PATH '$[9]')) AS jt GROUP BY x; +x COUNT(*) +NULL 1 +# # End of 10.6 tests # diff --git a/mysql-test/suite/json/t/json_table.test b/mysql-test/suite/json/t/json_table.test index e5f2c26c67f..8ad0157aea1 100644 --- a/mysql-test/suite/json/t/json_table.test +++ b/mysql-test/suite/json/t/json_table.test @@ -709,6 +709,7 @@ SELECT SUM(o) FROM t1 JOIN JSON_TABLE(t1.a, '$' COLUMNS(o FOR ORDINALITY)) jt; set sql_mode=@save_sql_mode; drop table t1; +--echo # --echo # MDEV-25379 JSON_TABLE: ERROR ON clauses are ignored if a column is not on select list. --echo # --error ER_JSON_TABLE_ERROR_ON_FIELD @@ -718,6 +719,15 @@ SELECT o FROM JSON_TABLE ('{}', '$' COLUMNS(a INT PATH '$.*' ERROR ON EMPTY, o F --error ER_JSON_TABLE_ERROR_ON_FIELD SELECT COUNT(*) FROM JSON_TABLE ('{}', '$' COLUMNS(a INT PATH '$.*' ERROR ON EMPTY, o FOR ORDINALITY)) AS jt; + +--echo # +--echo # MDEV-25408 JSON_TABLE: AddressSanitizer CHECK failed in Binary_string::realloc_raw. +--echo # +SELECT x, COUNT(*) FROM JSON_TABLE( '{}', '$' COLUMNS( + a BIT(14) PATH '$', b CHAR(16) PATH '$', c INT PATH '$[0]', d INT PATH '$[1]', e INT PATH '$[2]', + f INT PATH '$[3]', g INT PATH '$[4]', h INT PATH '$[5]', i INT PATH '$[6]', j INT PATH '$[7]', + x TEXT PATH '$[9]')) AS jt GROUP BY x; + --echo # --echo # End of 10.6 tests --echo # diff --git a/sql/json_table.cc b/sql/json_table.cc index 2e890aa8c22..ba14c5b01fd 100644 --- a/sql/json_table.cc +++ b/sql/json_table.cc @@ -1109,6 +1109,7 @@ int Table_function_json_table::setup(THD *thd, TABLE_LIST *sql_table, */ jc->m_field->charset= jc->m_explicit_cs; } + store_record(t, s->default_values); } return FALSE; }