diff options
author | unknown <monty@mysql.com> | 2004-12-31 00:44:00 +0200 |
---|---|---|
committer | unknown <monty@mysql.com> | 2004-12-31 00:44:00 +0200 |
commit | 2e8d13c73ec986dde580c9c840f421af4279611a (patch) | |
tree | 77b085cd22eae45e57f4e20f35ecfc231153d656 /sql/sql_prepare.cc | |
parent | bb2d3eaa30a3881927142c985fb637aca06d9823 (diff) | |
download | mariadb-git-2e8d13c73ec986dde580c9c840f421af4279611a.tar.gz |
After merge fixes
config/ac-macros/character_sets.m4:
Added latin1_spanish_ci
dbug/dbug_analyze.c:
Remove compiler warnings
include/my_handler.h:
Reorder structure arguments to be more optimal
innobase/dict/dict0load.c:
Fixed wrong define tag (for MySQL 5.0)
innobase/fil/fil0fil.c:
Fixed compiler warning
innobase/os/os0file.c:
Fixed compiler warning
myisam/ft_boolean_search.c:
Fixed compiler warning
myisam/ft_static.c:
Update to use new HA_KEYSEG structure
myisam/mi_open.c:
Simple optimization
myisammrg/myrg_static.c:
Removed compiler warning
mysql-test/r/grant.result:
Update results after merge
mysql-test/r/index_merge.result:
Update results after merge
mysql-test/r/information_schema_inno.result:
Add missing drop table
mysql-test/r/lowercase_table.result:
safety fix
mysql-test/r/multi_update.result:
safety fix
mysql-test/r/ps_1general.result:
safety fix
mysql-test/r/ps_2myisam.result:
Update results after merge
(set is not anymore of binary type)
mysql-test/r/ps_3innodb.result:
Update results after merge
mysql-test/r/ps_4heap.result:
Update results after merge
mysql-test/r/ps_5merge.result:
Update results after merge
mysql-test/r/ps_6bdb.result:
Update results after merge
mysql-test/r/show_check.result:
Update results after merge
mysql-test/r/subselect.result:
Update results after merge
(added missing quotes)
mysql-test/r/timezone2.result:
Update results after merge
mysql-test/r/view.result:
Update results after merge
(note that INSERT IGNORE will work again after next merge from 4.1)
mysql-test/t/derived.test:
Removed empty line
mysql-test/t/grant.test:
Update results after merge
mysql-test/t/information_schema_inno.test:
added missing drop table
mysql-test/t/lowercase_table.test:
safety fix
mysql-test/t/multi_update.test:
safety fix
mysql-test/t/ps_1general.test:
safety fix
mysql-test/t/view.test:
update error codes after merge
ndb/src/mgmsrv/main.cpp:
after merge fix
ndb/tools/ndb_test_platform.cpp:
removed compiler warnings
regex/main.c:
remove compiler warnings
sql/field.cc:
Remove compiler warning
sql/gen_lex_hash.cc:
Added DBUG support
sql/ha_myisam.cc:
Removed warning from valgrind
sql/ha_ndbcluster.cc:
Remove compiler warning
sql/item_cmpfunc.cc:
Better to use val_int() instead of val_real() as we don't want Item_func_nop_all to return different value than the original ref element
sql/mysqld.cc:
Remove compiler warning
sql/sql_acl.cc:
More debugging
sql/sql_lex.cc:
Remove unnecessary 'else'
sql/sql_parse.cc:
After merge fixes
Simplify reset of thd->server_status for SQLCOM_CALL
sql/sql_prepare.cc:
After merge fixes
Removed possible core dump in mysql_stmt_fetch()
sql/sql_update.cc:
After merge fixes (together with Sanja)
strings/ctype-czech.c:
Remove compiler warning
strings/ctype-ucs2.c:
Remove compiler warning
strings/ctype-win1250ch.c:
Remove compiler warning
strings/xml.c:
Remove compiler warning
tests/client_test.c:
Fix test to work with 5.0
vio/test-sslserver.c:
Portability fix
Diffstat (limited to 'sql/sql_prepare.cc')
-rw-r--r-- | sql/sql_prepare.cc | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index e4e61dc8d31..c860e3a79ac 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -905,10 +905,12 @@ static bool mysql_test_insert(Prepared_statement *stmt, { uint value_count; ulong counter= 0; + Item *unused_conds= 0; if ((res= mysql_prepare_insert(thd, table_list, table_list->table, fields, values, update_fields, - update_values, duplic))) + update_values, duplic, + &unused_conds, FALSE))) goto error; value_count= values->elements; @@ -1381,18 +1383,21 @@ static int mysql_test_multidelete(Prepared_statement *stmt, 1 error, sent to client -1 error, not sent to client */ + static int mysql_test_insert_select(Prepared_statement *stmt, TABLE_LIST *tables) { int res; LEX *lex= stmt->lex; + TABLE_LIST *first_local_table; + if ((res= insert_precheck(stmt->thd, tables))) return res; - TABLE_LIST *first_local_table= - (TABLE_LIST *)lex->select_lex.table_list.first; + first_local_table= (TABLE_LIST *)lex->select_lex.table_list.first; DBUG_ASSERT(first_local_table != 0); /* Skip first table, which is the table we are inserting in */ lex->select_lex.table_list.first= (byte*) first_local_table->next_local; + /* insert/replace from SELECT give its SELECT_LEX for SELECT, and item_list belong to SELECT @@ -1595,7 +1600,7 @@ static void cleanup_stmt_for_execute(Prepared_statement *stmt) { for (TABLE_LIST *tables= (TABLE_LIST*) sl->table_list.first; tables; - tables= tables->next) + tables= tables->next_global) { if (tables->table) tables->table->insert_values= 0; @@ -1698,7 +1703,6 @@ bool mysql_stmt_prepare(THD *thd, char *packet, uint packet_length, if (!error) error= check_prepared_statement(stmt, test(name)); - cleanup_stmt_for_execute(stmt); /* restore to WAIT_PRIOR: QUERY_PRIOR is set inside alloc_query */ if (!(specialflag & SPECIAL_NO_PRIOR)) @@ -1713,6 +1717,7 @@ bool mysql_stmt_prepare(THD *thd, char *packet, uint packet_length, lex_end(lex); thd->restore_backup_statement(stmt, &thd->stmt_backup); cleanup_items(stmt->free_list); + cleanup_stmt_for_execute(stmt); close_thread_tables(thd); thd->rollback_item_tree_changes(); thd->cleanup_after_query(); @@ -2057,9 +2062,9 @@ static void execute_stmt(THD *thd, Prepared_statement *stmt, cleanup_items(stmt->free_list); thd->rollback_item_tree_changes(); reset_stmt_params(stmt); + cleanup_stmt_for_execute(stmt); close_thread_tables(thd); // to close derived tables thd->set_statement(&thd->stmt_backup); - cleanup_stmt_for_execute(stmt); thd->cleanup_after_query(); if (stmt->state == Item_arena::PREPARED) @@ -2087,7 +2092,6 @@ void mysql_stmt_fetch(THD *thd, char *packet, uint packet_length) int error; DBUG_ENTER("mysql_stmt_fetch"); - thd->current_arena= stmt; if (!(stmt= thd->stmt_map.find(stmt_id)) || !stmt->cursor || !stmt->cursor->is_open()) @@ -2095,7 +2099,7 @@ void mysql_stmt_fetch(THD *thd, char *packet, uint packet_length) my_error(ER_UNKNOWN_STMT_HANDLER, MYF(0), stmt_id, "fetch"); DBUG_VOID_RETURN; } - + thd->current_arena= stmt; thd->set_n_backup_statement(stmt, &thd->stmt_backup); stmt->cursor->init_thd(thd); |