mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
new error for unsupported command in PS
fixed IN subselect with basic constant left expression SQLCOM_CREATE_TABLE, SQLCOM_UPDATE_MULTI, SQLCOM_REPLACE_SELECT, SQLCOM_INSERT_SELECT, QLCOM_DELETE_MULTI fixed to be compatible with PS (BUG#3398, BUG#3406) fixed multiupdate privelege check (BUG#3408) fixed multiupdate tables check (BUG#3411) unchecked commands now is rejected by PS protocol to avoid serever crash fixed cleunup procedure to be compatible sith DO/SET (BUG#3393) include/mysqld_error.h: new error for unsupported command in PS mysql-test/r/multi_update.result: test sutes (BUG#3408, BUG#3411) mysql-test/t/multi_update.test: test sutes (BUG#3408, BUG#3411) sql/item_cmpfunc.cc: fixed IN subselect with basic constant left expression sql/mysql_priv.h: some function frop sql_parse.h become public sql/set_var.cc: check for SET command via PS sql/set_var.h: check for SET command via PS sql/share/czech/errmsg.txt: new error for unsupported command in PS sql/share/danish/errmsg.txt: new error for unsupported command in PS sql/share/dutch/errmsg.txt: new error for unsupported command in PS sql/share/english/errmsg.txt: new error for unsupported command in PS sql/share/estonian/errmsg.txt: new error for unsupported command in PS sql/share/french/errmsg.txt: new error for unsupported command in PS sql/share/german/errmsg.txt: new error for unsupported command in PS sql/share/greek/errmsg.txt: new error for unsupported command in PS sql/share/hungarian/errmsg.txt: new error for unsupported command in PS sql/share/italian/errmsg.txt: new error for unsupported command in PS sql/share/japanese/errmsg.txt: new error for unsupported command in PS sql/share/korean/errmsg.txt: new error for unsupported command in PS sql/share/norwegian-ny/errmsg.txt: new error for unsupported command in PS sql/share/norwegian/errmsg.txt: new error for unsupported command in PS sql/share/polish/errmsg.txt: new error for unsupported command in PS sql/share/portuguese/errmsg.txt: new error for unsupported command in PS sql/share/romanian/errmsg.txt: new error for unsupported command in PS sql/share/russian/errmsg.txt: new error for unsupported command in PS sql/share/serbian/errmsg.txt: new error for unsupported command in PS sql/share/slovak/errmsg.txt: new error for unsupported command in PS sql/share/spanish/errmsg.txt: new error for unsupported command in PS sql/share/swedish/errmsg.txt: new error for unsupported command in PS sql/share/ukrainian/errmsg.txt: new error for unsupported command in PS sql/sql_lex.cc: first table unlincking procedures for CREATE command sql/sql_lex.h: first table unlincking procedures for CREATE command sql/sql_parse.cc: used function to exclude first table from list SQLCOM_CREATE_TABLE, SQLCOM_UPDATE_MULTI, SQLCOM_REPLACE_SELECT, SQLCOM_INSERT_SELECT, QLCOM_DELETE_MULTI fixed to be compatible with PS (BUG#3398, BUG#3406) fixed multiupdate privelege check (BUG#3408) fixed multiupdate tables check (BUG#3411) sql/sql_prepare.cc: fixed a lot of commands to be compatible with PS unchecked commands now is rejected to avoid serever crash sql/sql_select.cc: allow empty result for PS preparing sql/sql_union.cc: fixed cleunup procedure to be compatible sith DO/SET (BUG#3393) sql/sql_update.cc: fixed update to use correct tables lists (BUG#3408) sql/table.h: flag to support multi update tables check (BUG#3408) tests/client_test.c: removed unsupported tables fixed show table test added new tests
This commit is contained in:
@ -1634,6 +1634,66 @@ void st_select_lex::print_limit(THD *thd, String *str)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
unlink first table from table lists
|
||||
|
||||
SYNOPSIS
|
||||
unlink_first_table()
|
||||
tables - global table list
|
||||
global_first - save first global table passed using this parameter
|
||||
local_first - save first local table passed using this parameter
|
||||
|
||||
RETURN
|
||||
global list without first table
|
||||
*/
|
||||
TABLE_LIST *st_lex::unlink_first_table(TABLE_LIST *tables,
|
||||
TABLE_LIST **global_first,
|
||||
TABLE_LIST **local_first)
|
||||
{
|
||||
*global_first= tables;
|
||||
*local_first= (TABLE_LIST*)select_lex.table_list.first;
|
||||
// exclude from global table list
|
||||
tables= tables->next;
|
||||
// and from local list if it is not the same
|
||||
if (&select_lex != all_selects_list)
|
||||
select_lex.table_list.first= (gptr)(*local_first)->next;
|
||||
else
|
||||
select_lex.table_list.first= (gptr)tables;
|
||||
(*global_first)->next= 0;
|
||||
return tables;
|
||||
}
|
||||
|
||||
/*
|
||||
link unlinked first table back
|
||||
|
||||
SYNOPSIS
|
||||
link_first_table_back()
|
||||
tables - global table list
|
||||
global_first - save first global table
|
||||
local_first - save first local table
|
||||
|
||||
RETURN
|
||||
global list
|
||||
*/
|
||||
TABLE_LIST *st_lex::link_first_table_back(TABLE_LIST *tables,
|
||||
TABLE_LIST *global_first,
|
||||
TABLE_LIST *local_first)
|
||||
{
|
||||
global_first->next= tables;
|
||||
tables= global_first;
|
||||
if (&select_lex != all_selects_list)
|
||||
{
|
||||
/*
|
||||
we do not touch local table 'next' field => we need just
|
||||
put the table in the list
|
||||
*/
|
||||
select_lex.table_list.first= (gptr) local_first;
|
||||
}
|
||||
else
|
||||
select_lex.table_list.first= (gptr) tables;
|
||||
return tables;
|
||||
}
|
||||
|
||||
/*
|
||||
There are st_select_lex::add_table_to_list &
|
||||
st_select_lex::set_lock_for_tables are in sql_parse.cc
|
||||
|
Reference in New Issue
Block a user