Commit e0d8dde3 authored by unknown's avatar unknown

After merge fix.

parent f7934410
...@@ -53,6 +53,7 @@ static bool check_view_insertability(TABLE_LIST *view, query_id_t query_id); ...@@ -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); ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment