diff options
-rw-r--r-- | mysql-test/main/status.result | 6 | ||||
-rw-r--r-- | mysql-test/main/status.test | 2 | ||||
-rw-r--r-- | sql/item_create.cc | 52 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 3 |
4 files changed, 36 insertions, 27 deletions
diff --git a/mysql-test/main/status.result b/mysql-test/main/status.result index 37c551328f0..d25cde89ee1 100644 --- a/mysql-test/main/status.result +++ b/mysql-test/main/status.result @@ -438,6 +438,12 @@ json_valid('123') SHOW STATUS LIKE 'Feature_json'; Variable_name Value Feature_json 1 +select * from json_table ('{}', '$' COLUMNS(x FOR ORDINALITY)) a; +x +1 +SHOW STATUS LIKE 'Feature_json'; +Variable_name Value +Feature_json 2 connection default; set @@global.concurrent_insert= @old_concurrent_insert; SET GLOBAL log_output = @old_log_output; diff --git a/mysql-test/main/status.test b/mysql-test/main/status.test index 221a24aedf4..78626615d45 100644 --- a/mysql-test/main/status.test +++ b/mysql-test/main/status.test @@ -436,6 +436,8 @@ SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME SHOW STATUS LIKE 'Feature_json'; select json_valid('123'); SHOW STATUS LIKE 'Feature_json'; +select * from json_table ('{}', '$' COLUMNS(x FOR ORDINALITY)) a; +SHOW STATUS LIKE 'Feature_json'; # Restore global concurrent_insert value. Keep in the end of the test file. --connection default diff --git a/sql/item_create.cc b/sql/item_create.cc index d73da02b7f1..cff44c6f61a 100644 --- a/sql/item_create.cc +++ b/sql/item_create.cc @@ -3577,7 +3577,7 @@ Create_func_json_exists Create_func_json_exists::s_singleton; Item* Create_func_json_exists::create_2_arg(THD *thd, Item *arg1, Item *arg2) { - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return new (thd->mem_root) Item_func_json_exists(thd, arg1, arg2); } @@ -3603,7 +3603,7 @@ Create_func_json_detailed::create_native(THD *thd, LEX_CSTRING *name, func= new (thd->mem_root) Item_func_json_format(thd, *item_list); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -3613,7 +3613,7 @@ Create_func_json_loose Create_func_json_loose::s_singleton; Item* Create_func_json_loose::create_1_arg(THD *thd, Item *arg1) { - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return new (thd->mem_root) Item_func_json_format(thd, arg1, Item_func_json_format::LOOSE); } @@ -3624,7 +3624,7 @@ Create_func_json_compact Create_func_json_compact::s_singleton; Item* Create_func_json_compact::create_1_arg(THD *thd, Item *arg1) { - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return new (thd->mem_root) Item_func_json_format(thd, arg1, Item_func_json_format::COMPACT); } @@ -3635,7 +3635,7 @@ Create_func_json_valid Create_func_json_valid::s_singleton; Item* Create_func_json_valid::create_1_arg(THD *thd, Item *arg1) { - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return new (thd->mem_root) Item_func_json_valid(thd, arg1); } @@ -3645,7 +3645,7 @@ Create_func_json_type Create_func_json_type::s_singleton; Item* Create_func_json_type::create_1_arg(THD *thd, Item *arg1) { - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return new (thd->mem_root) Item_func_json_type(thd, arg1); } @@ -3655,7 +3655,7 @@ Create_func_json_depth Create_func_json_depth::s_singleton; Item* Create_func_json_depth::create_1_arg(THD *thd, Item *arg1) { - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return new (thd->mem_root) Item_func_json_depth(thd, arg1); } @@ -3665,7 +3665,7 @@ Create_func_json_value Create_func_json_value::s_singleton; Item* Create_func_json_value::create_2_arg(THD *thd, Item *arg1, Item *arg2) { - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return new (thd->mem_root) Item_func_json_value(thd, arg1, arg2); } @@ -3675,7 +3675,7 @@ Create_func_json_query Create_func_json_query::s_singleton; Item* Create_func_json_query::create_2_arg(THD *thd, Item *arg1, Item *arg2) { - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return new (thd->mem_root) Item_func_json_query(thd, arg1, arg2); } @@ -3685,7 +3685,7 @@ Create_func_json_quote Create_func_json_quote::s_singleton; Item* Create_func_json_quote::create_1_arg(THD *thd, Item *arg1) { - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return new (thd->mem_root) Item_func_json_quote(thd, arg1); } @@ -3695,7 +3695,7 @@ Create_func_json_unquote Create_func_json_unquote::s_singleton; Item* Create_func_json_unquote::create_1_arg(THD *thd, Item *arg1) { - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return new (thd->mem_root) Item_func_json_unquote(thd, arg1); } @@ -3726,7 +3726,7 @@ Create_func_json_array::create_native(THD *thd, LEX_CSTRING *name, func= new (thd->mem_root) Item_func_json_array(thd); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -3752,7 +3752,7 @@ Create_func_json_array_append::create_native(THD *thd, LEX_CSTRING *name, func= new (thd->mem_root) Item_func_json_array_append(thd, *item_list); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -3778,7 +3778,7 @@ Create_func_json_array_insert::create_native(THD *thd, LEX_CSTRING *name, func= new (thd->mem_root) Item_func_json_array_insert(thd, *item_list); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -3805,7 +3805,7 @@ Create_func_json_insert::create_native(THD *thd, LEX_CSTRING *name, thd, *item_list); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -3832,7 +3832,7 @@ Create_func_json_set::create_native(THD *thd, LEX_CSTRING *name, thd, *item_list); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -3859,7 +3859,7 @@ Create_func_json_replace::create_native(THD *thd, LEX_CSTRING *name, thd, *item_list); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -3885,7 +3885,7 @@ Create_func_json_remove::create_native(THD *thd, LEX_CSTRING *name, func= new (thd->mem_root) Item_func_json_remove(thd, *item_list); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -3918,7 +3918,7 @@ Create_func_json_object::create_native(THD *thd, LEX_CSTRING *name, func= new (thd->mem_root) Item_func_json_object(thd); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -3943,7 +3943,7 @@ Create_func_json_length::create_native(THD *thd, LEX_CSTRING *name, func= new (thd->mem_root) Item_func_json_length(thd, *item_list); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -3968,7 +3968,7 @@ Create_func_json_merge::create_native(THD *thd, LEX_CSTRING *name, func= new (thd->mem_root) Item_func_json_merge(thd, *item_list); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -4018,7 +4018,7 @@ Create_func_json_contains::create_native(THD *thd, LEX_CSTRING *name, my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name->str); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -4044,7 +4044,7 @@ Create_func_json_keys::create_native(THD *thd, LEX_CSTRING *name, func= new (thd->mem_root) Item_func_json_keys(thd, *item_list); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -4070,7 +4070,7 @@ Create_func_json_contains_path::create_native(THD *thd, LEX_CSTRING *name, func= new (thd->mem_root) Item_func_json_contains_path(thd, *item_list); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -4096,7 +4096,7 @@ Create_func_json_extract::create_native(THD *thd, LEX_CSTRING *name, func= new (thd->mem_root) Item_func_json_extract(thd, *item_list); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } @@ -4122,7 +4122,7 @@ Create_func_json_search::create_native(THD *thd, LEX_CSTRING *name, func= new (thd->mem_root) Item_func_json_search(thd, *item_list); } - status_var_increment(current_thd->status_var.feature_json); + status_var_increment(thd->status_var.feature_json); return func; } diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 01f9a8277ee..8da5f4cfa00 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -539,7 +539,7 @@ End SQL_MODE_ORACLE_SPECIFIC */ %token <kwd> GROUP_CONCAT_SYM %token <rwd> JSON_ARRAYAGG_SYM %token <rwd> JSON_OBJECTAGG_SYM -%token <rwd> JSON_TABLE_SYM +%token <kwd> JSON_TABLE_SYM %token <kwd> GROUP_SYM /* SQL-2003-R */ %token <kwd> HAVING /* SQL-2003-R */ %token <kwd> HOUR_MICROSECOND_SYM @@ -11714,6 +11714,7 @@ table_function: 0,0,0, Lex->json_table))) MYSQL_YYABORT; Lex->json_table= 0; + status_var_increment(thd->status_var.feature_json); } ; |