MDEV-17339 JSON_TABLE.
add_table_to_list - remove the table_function argument.
This commit is contained in:
parent
90629aa83c
commit
1b81e23737
@ -122,7 +122,7 @@ int THD::register_slave(uchar *packet, size_t packet_length)
|
||||
uchar *p= packet, *p_end= packet + packet_length;
|
||||
const char *errmsg= "Wrong parameters to function register_slave";
|
||||
|
||||
if (check_access(this, PRIV_COM_REGISTER_SLAVE, any_db, NULL, NULL, 0, 0))
|
||||
if (check_access(this, PRIV_COM_REGISTER_SLAVE, any_db.str, NULL,NULL,0,0))
|
||||
return 1;
|
||||
if (!(si= (Slave_info*)my_malloc(key_memory_SLAVE_INFO, sizeof(Slave_info),
|
||||
MYF(MY_WME))))
|
||||
|
@ -1089,7 +1089,7 @@ int fill_sysvars(THD *thd, TABLE_LIST *tables, COND *cond)
|
||||
StringBuffer<STRING_BUFFER_USUAL_SIZE> strbuf(scs);
|
||||
const char *wild= thd->lex->wild ? thd->lex->wild->ptr() : 0;
|
||||
Field **fields=tables->table->field;
|
||||
bool has_file_acl= !check_access(thd, FILE_ACL, any_db, NULL, NULL, 0, 1);
|
||||
bool has_file_acl= !check_access(thd, FILE_ACL, any_db.str, NULL,NULL,0,1);
|
||||
|
||||
DBUG_ASSERT(tables->table->in_use == thd);
|
||||
|
||||
|
@ -4948,7 +4948,7 @@ sp_head::merge_table_list(THD *thd, TABLE_LIST *table, LEX *lex_for_tmp_check)
|
||||
}
|
||||
|
||||
for (; table ; table= table->next_global)
|
||||
if (!table->derived && !table->schema_table)
|
||||
if (!table->derived && !table->schema_table && !table->table_function)
|
||||
{
|
||||
/*
|
||||
Structure of key for the multi-set is "db\0table\0alias\0".
|
||||
|
@ -1407,8 +1407,7 @@ public:
|
||||
enum_mdl_type mdl_type= MDL_SHARED_READ,
|
||||
List<Index_hint> *hints= 0,
|
||||
List<String> *partition_names= 0,
|
||||
LEX_STRING *option= 0,
|
||||
Table_function_json_table *tfunc= 0);
|
||||
LEX_STRING *option= 0);
|
||||
TABLE_LIST* get_table_list();
|
||||
bool init_nested_join(THD *thd);
|
||||
TABLE_LIST *end_nested_join(THD *thd);
|
||||
|
@ -132,7 +132,7 @@ static int show_create_db(THD *thd, LEX *lex);
|
||||
static bool alter_routine(THD *thd, LEX *lex);
|
||||
static bool drop_routine(THD *thd, LEX *lex);
|
||||
|
||||
const char *any_db="*any*"; // Special symbol for check_access
|
||||
const LEX_CSTRING any_db= {"*any*", 0};
|
||||
|
||||
const LEX_CSTRING command_name[257]={
|
||||
{ STRING_WITH_LEN("Sleep") }, //0
|
||||
@ -3934,7 +3934,7 @@ mysql_execute_command(THD *thd)
|
||||
privileges_requested,
|
||||
all_tables, FALSE, UINT_MAX, FALSE);
|
||||
else
|
||||
res= check_access(thd, privileges_requested, any_db, NULL, NULL, 0, 0);
|
||||
res= check_access(thd, privileges_requested, any_db.str, NULL,NULL,0,0);
|
||||
|
||||
if (!res)
|
||||
res= execute_sqlcom_select(thd, all_tables);
|
||||
@ -4979,7 +4979,7 @@ mysql_execute_command(THD *thd)
|
||||
goto error;
|
||||
#else
|
||||
{
|
||||
if (check_access(thd, FILE_ACL, any_db, NULL, NULL, 0, 0))
|
||||
if (check_access(thd, FILE_ACL, any_db.str, NULL, NULL, 0, 0))
|
||||
goto error;
|
||||
res= ha_show_status(thd, lex->create_info.db_type, HA_ENGINE_LOGS);
|
||||
break;
|
||||
@ -6694,7 +6694,7 @@ check_access(THD *thd, privilege_t want_access,
|
||||
DBUG_RETURN(FALSE); // CTE reference or an error later
|
||||
}
|
||||
|
||||
if (likely((db != NULL) && (db != any_db)))
|
||||
if (likely((db != NULL) && (db != any_db.str)))
|
||||
{
|
||||
/*
|
||||
Check if this is reserved database, like information schema or
|
||||
@ -6781,7 +6781,7 @@ check_access(THD *thd, privilege_t want_access,
|
||||
DBUG_RETURN(TRUE); /* purecov: tested */
|
||||
}
|
||||
|
||||
if (unlikely(db == any_db))
|
||||
if (unlikely(db == any_db.str))
|
||||
{
|
||||
/*
|
||||
Access granted; Allow select on *any* db.
|
||||
@ -7114,7 +7114,6 @@ check_table_access(THD *thd, privilege_t requirements, TABLE_LIST *tables,
|
||||
}
|
||||
|
||||
if (check_access(thd, want_access,
|
||||
table_ref->table_function ? any_db :
|
||||
table_ref->get_db_name(),
|
||||
&table_ref->grant.privilege,
|
||||
&table_ref->grant.m_internal,
|
||||
@ -8161,8 +8160,7 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd,
|
||||
enum_mdl_type mdl_type,
|
||||
List<Index_hint> *index_hints_arg,
|
||||
List<String> *partition_names,
|
||||
LEX_STRING *option,
|
||||
Table_function_json_table *tfunc)
|
||||
LEX_STRING *option)
|
||||
{
|
||||
TABLE_LIST *ptr;
|
||||
TABLE_LIST *UNINIT_VAR(previous_table_ref); /* The table preceding the current one. */
|
||||
@ -8225,13 +8223,12 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd,
|
||||
if (table->table.length)
|
||||
table->table.length= my_casedn_str(files_charset_info,
|
||||
(char*) table->table.str);
|
||||
if (ptr->db.length && ptr->db.str != any_db)
|
||||
if (ptr->db.length && ptr->db.str != any_db.str)
|
||||
ptr->db.length= my_casedn_str(files_charset_info, (char*) ptr->db.str);
|
||||
}
|
||||
|
||||
ptr->table_name= table->table;
|
||||
ptr->lock_type= lock_type;
|
||||
ptr->table_function= tfunc;
|
||||
ptr->updating= MY_TEST(table_options & TL_OPTION_UPDATING);
|
||||
/* TODO: remove TL_OPTION_FORCE_INDEX as it looks like it's not used */
|
||||
ptr->force_index= MY_TEST(table_options & TL_OPTION_FORCE_INDEX);
|
||||
@ -8276,7 +8273,7 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd,
|
||||
{
|
||||
if (unlikely(!my_strcasecmp(table_alias_charset, alias_str.str,
|
||||
tables->alias.str) &&
|
||||
(tables->table_function || ptr->table_function ||
|
||||
(tables->db.str == any_db.str || ptr->db.str == any_db.str ||
|
||||
!cmp(&ptr->db, &tables->db)) &&
|
||||
!tables->sequence))
|
||||
{
|
||||
|
@ -131,7 +131,7 @@ bool check_stack_overrun(THD *thd, long margin, uchar *dummy);
|
||||
|
||||
/* Variables */
|
||||
|
||||
extern const char* any_db;
|
||||
extern const LEX_CSTRING any_db;
|
||||
extern uint sql_command_flags[];
|
||||
extern uint server_command_flags[];
|
||||
extern const LEX_CSTRING command_name[];
|
||||
|
@ -1545,7 +1545,7 @@ static int mysql_test_select(Prepared_statement *stmt,
|
||||
if (check_table_access(thd, privilege, tables, FALSE, UINT_MAX, FALSE))
|
||||
goto error;
|
||||
}
|
||||
else if (check_access(thd, privilege, any_db, NULL, NULL, 0, 0))
|
||||
else if (check_access(thd, privilege, any_db.str, NULL, NULL, 0, 0))
|
||||
goto error;
|
||||
|
||||
if (!lex->result && !(lex->result= new (stmt->mem_root) select_send(thd)))
|
||||
|
@ -11713,15 +11713,16 @@ table_function:
|
||||
MYSQL_YYABORT;
|
||||
sel->table_join_options= 0;
|
||||
if (!($$= Select->add_table_to_list(thd,
|
||||
new (thd->mem_root) Table_ident(thd, &empty_clex_str,
|
||||
new (thd->mem_root) Table_ident(thd, &any_db,
|
||||
$10, TRUE),
|
||||
NULL,
|
||||
Select->get_table_join_options() |
|
||||
TL_OPTION_TABLE_FUNCTION,
|
||||
YYPS->m_lock_type,
|
||||
YYPS->m_mdl_type,
|
||||
0,0,0, Lex->json_table)))
|
||||
0,0,0)))
|
||||
MYSQL_YYABORT;
|
||||
$$->table_function= Lex->json_table;
|
||||
Lex->json_table= 0;
|
||||
status_var_increment(thd->status_var.feature_json);
|
||||
}
|
||||
@ -15376,7 +15377,7 @@ table_ident_opt_wild:
|
||||
table_ident_nodb:
|
||||
ident
|
||||
{
|
||||
LEX_CSTRING db={(char*) any_db,3};
|
||||
LEX_CSTRING db= any_db;
|
||||
$$= new (thd->mem_root) Table_ident(thd, &db, &$1, 0);
|
||||
if (unlikely($$ == NULL))
|
||||
MYSQL_YYABORT;
|
||||
|
@ -4951,7 +4951,7 @@ bool check_db_name(LEX_STRING *org_name)
|
||||
if (!name_length || name_length > NAME_LEN)
|
||||
return 1;
|
||||
|
||||
if (lower_case_table_names == 1 && name != any_db)
|
||||
if (lower_case_table_names == 1 && name != any_db.str)
|
||||
{
|
||||
org_name->length= name_length= my_casedn_str(files_charset_info, name);
|
||||
if (check_for_path_chars)
|
||||
|
Loading…
x
Reference in New Issue
Block a user