diff --git a/mysql-test/suite/json/r/json_table.result b/mysql-test/suite/json/r/json_table.result index bf8d46183b1..7a7f4c724ab 100644 --- a/mysql-test/suite/json/r/json_table.result +++ b/mysql-test/suite/json/r/json_table.result @@ -554,5 +554,10 @@ View Create View character_set_client collation_connection v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select `jt`.`o` AS `o` from JSON_TABLE('{}', '$' COLUMNS (NESTED PATH '$.*' COLUMNS (NESTED PATH '$.*' COLUMNS (`o` FOR ORDINALITY)))) `jt` latin1 latin1_swedish_ci DROP VIEW v; # +# MDEV-25229 JSON_TABLE: Server crashes in hton_name upon MATCH .. AGAINST. +# +SELECT val, MATCH(val) AGAINST( 'MariaDB') FROM JSON_TABLE('{"db":"xx"}', '$' COLUMNS(val VARCHAR(32) PATH '$**.*')) AS jt; +ERROR HY000: The storage engine JSON_TABLE function doesn't support FULLTEXT indexes +# # 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 aaec4341147..3adb6385083 100644 --- a/mysql-test/suite/json/t/json_table.test +++ b/mysql-test/suite/json/t/json_table.test @@ -430,6 +430,13 @@ SELECT * FROM v; SHOW CREATE VIEW v; DROP VIEW v; +--echo # +--echo # MDEV-25229 JSON_TABLE: Server crashes in hton_name upon MATCH .. AGAINST. +--echo # + +--error ER_TABLE_CANT_HANDLE_FT +SELECT val, MATCH(val) AGAINST( 'MariaDB') FROM JSON_TABLE('{"db":"xx"}', '$' COLUMNS(val VARCHAR(32) PATH '$**.*')) AS jt; + --echo # --echo # End of 10.6 tests --echo # diff --git a/sql/handler.h b/sql/handler.h index f97dcb25274..5cea91ac1e1 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -4154,7 +4154,7 @@ public: { return; } /* prepare InnoDB for HANDLER */ virtual void free_foreign_key_create_info(char* str) {} /** The following can be called without an open handler */ - const char *table_type() const { return hton_name(ht)->str; } + virtual const char *table_type() const { return hton_name(ht)->str; } const char **bas_ext() const { return ht->tablefile_extensions; } virtual int get_default_no_partitions(HA_CREATE_INFO *create_info) diff --git a/sql/json_table.cc b/sql/json_table.cc index 55425027c6f..8b424d6e485 100644 --- a/sql/json_table.cc +++ b/sql/json_table.cc @@ -73,6 +73,10 @@ public: handler *clone(const char *name, MEM_ROOT *mem_root) override { return NULL; } /* Rows also use a fixed-size format */ enum row_type get_row_type() const override { return ROW_TYPE_FIXED; } + const char *table_type() const override + { + return "JSON_TABLE function"; + } ulonglong table_flags() const override { return (HA_FAST_KEY_READ | /*HA_NO_BLOBS |*/ HA_NULL_IN_KEY |