MDEV-25143 JSON_TABLE: Server crashes in handler::print_error / hton_name upon ERROR ON EMPTY.

should return some error code from ha_json_table::rnd_pos() not just 1.
This commit is contained in:
Alexey Botchkov 2021-03-17 10:51:44 +04:00
parent 99fc076fea
commit abdc39b0a7
3 changed files with 12 additions and 1 deletions

View File

@ -508,5 +508,10 @@ a
EXECUTE stmt; EXECUTE stmt;
a a
# #
# MDEV-JSON_TABLE: Server crashes in handler::print_error / hton_name upon ERROR ON EMPTY
#
SELECT a, b FROM JSON_TABLE('[]', '$' COLUMNS (a FOR ORDINALITY, b INT PATH '$[*]' ERROR ON EMPTY)) AS t ORDER BY a;
ERROR HY000: Field 'b' can't be set for JSON_TABLE 't'.
#
# End of 10.6 tests # End of 10.6 tests
# #

View File

@ -395,6 +395,12 @@ PREPARE stmt FROM "SELECT * FROM (SELECT * FROM JSON_TABLE(LOAD_FILE('x'), '$' C
EXECUTE stmt; EXECUTE stmt;
EXECUTE stmt; EXECUTE stmt;
--echo #
--echo # MDEV-JSON_TABLE: Server crashes in handler::print_error / hton_name upon ERROR ON EMPTY
--echo #
--error ER_JSON_TABLE_ERROR_ON_FIELD
SELECT a, b FROM JSON_TABLE('[]', '$' COLUMNS (a FOR ORDINALITY, b INT PATH '$[*]' ERROR ON EMPTY)) AS t ORDER BY a;
--echo # --echo #
--echo # End of 10.6 tests --echo # End of 10.6 tests
--echo # --echo #

View File

@ -445,7 +445,7 @@ error_return:
int ha_json_table::rnd_pos(uchar * buf, uchar *pos) int ha_json_table::rnd_pos(uchar * buf, uchar *pos)
{ {
return fill_column_values(buf, pos); return fill_column_values(buf, pos) ? HA_ERR_TABLE_IN_FK_CHECK : 0;
} }