mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
After merge fix.
This commit is contained in:
@ -53,6 +53,7 @@ static bool check_view_insertability(TABLE_LIST *view, query_id_t query_id);
|
|||||||
table The table for insert.
|
table The table for insert.
|
||||||
fields The insert fields.
|
fields The insert fields.
|
||||||
values The insert values.
|
values The insert values.
|
||||||
|
check_unique If duplicate values should be rejected.
|
||||||
|
|
||||||
NOTE
|
NOTE
|
||||||
Clears TIMESTAMP_AUTO_SET_ON_INSERT from table->timestamp_field_type
|
Clears TIMESTAMP_AUTO_SET_ON_INSERT from table->timestamp_field_type
|
||||||
@ -64,8 +65,9 @@ static bool check_view_insertability(TABLE_LIST *view, query_id_t query_id);
|
|||||||
-1 Error
|
-1 Error
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int check_insert_fields(THD *thd, TABLE *table, List<Item> &fields,
|
static int check_insert_fields(THD *thd, TABLE_LIST *table_list,
|
||||||
List<Item> &values)
|
List<Item> &fields, List<Item> &values,
|
||||||
|
bool check_unique)
|
||||||
{
|
{
|
||||||
TABLE *table= table_list->table;
|
TABLE *table= table_list->table;
|
||||||
|
|
||||||
@ -87,7 +89,7 @@ static int check_insert_fields(THD *thd, TABLE *table, List<Item> &fields,
|
|||||||
}
|
}
|
||||||
if (values.elements != table->s->fields)
|
if (values.elements != table->s->fields)
|
||||||
{
|
{
|
||||||
my_error(ER_WRONG_VALUE_COUNT_ON_ROW, MYF(0), counter);
|
my_error(ER_WRONG_VALUE_COUNT_ON_ROW, MYF(0), 1);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||||
@ -109,7 +111,7 @@ static int check_insert_fields(THD *thd, TABLE *table, List<Item> &fields,
|
|||||||
int res;
|
int res;
|
||||||
if (fields.elements != values.elements)
|
if (fields.elements != values.elements)
|
||||||
{
|
{
|
||||||
my_error(ER_WRONG_VALUE_COUNT_ON_ROW, MYF(0), counter);
|
my_error(ER_WRONG_VALUE_COUNT_ON_ROW, MYF(0), 1);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,11 +188,11 @@ static int check_insert_fields(THD *thd, TABLE *table, List<Item> &fields,
|
|||||||
-1 Error
|
-1 Error
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int check_update_fields(THD *thd, TABLE *table,
|
static int check_update_fields(THD *thd, TABLE_LIST *insert_table_list,
|
||||||
TABLE_LIST *insert_table_list,
|
|
||||||
List<Item> &update_fields)
|
List<Item> &update_fields)
|
||||||
{
|
{
|
||||||
ulong timestamp_query_id;
|
TABLE *table= insert_table_list->table;
|
||||||
|
ulong timestamp_query_id;
|
||||||
LINT_INIT(timestamp_query_id);
|
LINT_INIT(timestamp_query_id);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -200,7 +202,7 @@ static int check_update_fields(THD *thd, TABLE *table,
|
|||||||
if (table->timestamp_field)
|
if (table->timestamp_field)
|
||||||
{
|
{
|
||||||
timestamp_query_id= table->timestamp_field->query_id;
|
timestamp_query_id= table->timestamp_field->query_id;
|
||||||
table->timestamp_field->query_id= thd->query_id-1;
|
table->timestamp_field->query_id= thd->query_id - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -762,13 +764,12 @@ bool mysql_prepare_insert(THD *thd, TABLE_LIST *table_list, TABLE *table,
|
|||||||
|
|
||||||
next_local= table_list->next_local;
|
next_local= table_list->next_local;
|
||||||
table_list->next_local= 0;
|
table_list->next_local= 0;
|
||||||
if ((values && check_insert_fields(thd, table_list, fields, *values, 1,
|
if ((values && check_insert_fields(thd, table_list, fields, *values,
|
||||||
!insert_into_view)) ||
|
!insert_into_view)) ||
|
||||||
(values && setup_fields(thd, 0, table_list, *values, 0, 0, 0)) ||
|
(values && setup_fields(thd, 0, table_list, *values, 0, 0, 0)) ||
|
||||||
(duplic == DUP_UPDATE &&
|
(duplic == DUP_UPDATE &&
|
||||||
(check_update_fields(thd, table, insert_table_list, update_fields) ||
|
|
||||||
((thd->lex->select_lex.no_wrap_view_item= 1,
|
((thd->lex->select_lex.no_wrap_view_item= 1,
|
||||||
(res= setup_fields(thd, 0, table_list, update_fields, 1, 0, 0)),
|
(res= check_update_fields(thd, table_list, update_fields)),
|
||||||
thd->lex->select_lex.no_wrap_view_item= 0,
|
thd->lex->select_lex.no_wrap_view_item= 0,
|
||||||
res) ||
|
res) ||
|
||||||
setup_fields(thd, 0, table_list, update_values, 1, 0, 0))))
|
setup_fields(thd, 0, table_list, update_values, 1, 0, 0))))
|
||||||
@ -1860,8 +1861,7 @@ select_insert::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
|
|||||||
DBUG_ENTER("select_insert::prepare");
|
DBUG_ENTER("select_insert::prepare");
|
||||||
|
|
||||||
unit= u;
|
unit= u;
|
||||||
if (check_insert_fields(thd, table_list, *fields, values, 1,
|
if (check_insert_fields(thd, table_list, *fields, values, !insert_into_view))
|
||||||
!insert_into_view))
|
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
/*
|
/*
|
||||||
if it is INSERT into join view then check_insert_fields already found
|
if it is INSERT into join view then check_insert_fields already found
|
||||||
|
Reference in New Issue
Block a user