diff options
author | unknown <monty@mysql.com> | 2004-07-15 04:19:07 +0300 |
---|---|---|
committer | unknown <monty@mysql.com> | 2004-07-15 04:19:07 +0300 |
commit | 46ea874fb78743e1a315fbfa09b012dc382fcbbf (patch) | |
tree | e83d5aa4118851b076ed870c7e9c5fd8b5bb53ef /sql/sql_prepare.cc | |
parent | 677d60bc61a36be16af964eaae47cc88b0ecc33f (diff) | |
download | mariadb-git-46ea874fb78743e1a315fbfa09b012dc382fcbbf.tar.gz |
After merge fixes
Note: The following tests fails
- fulltext (Sergei has promised to fix)
- rpl_charset (Guilhem should fix)
- rpl_timezone (Dimitray has promised to fix)
Sanja needs to check out the calling of close_thread_tables() in sp_head.cc
myisam/mi_check.c:
After merge fix
myisam/sort.c:
After merge fix
mysql-test/mysql-test-run.sh:
Export master socket to mysqltest
mysql-test/r/func_group.result:
Make result repeatable
mysql-test/r/mysqlbinlog.result:
After merge fix
mysql-test/r/ps_1general.result:
After merge fix
mysql-test/r/ps_2myisam.result:
After merge fix
mysql-test/r/ps_3innodb.result:
After merge fix
mysql-test/r/ps_4heap.result:
After merge fix
mysql-test/r/ps_5merge.result:
After merge fix
mysql-test/r/ps_6bdb.result:
After merge fix
mysql-test/r/rpl_flush_log_loop.result:
After merge fix
mysql-test/r/rpl_replicate_do.result:
After merge fix
mysql-test/r/rpl_temporary.result:
After merge fix
mysql-test/r/rpl_timezone.result:
After merge fix
Note that this test fails now (Dimitry has promised to fix this)
mysql-test/r/rpl_user_variables.result:
After merge fix
mysql-test/r/select.result:
After merge fix
mysql-test/r/sp-error.result:
After merge fix
mysql-test/r/sp-security.result:
After merge fix
mysql-test/r/sp.result:
After merge fix
mysql-test/r/user_var.result:
After merge fix
mysql-test/r/variables.result:
After merge fix
mysql-test/t/alter_table.test:
After merge fix
mysql-test/t/derived.test:
After merge fix
mysql-test/t/func_group.test:
Make result repeatable
mysql-test/t/grant_cache.test:
Use MASTER_MYSOCK instead of master.sock
mysql-test/t/multi_update.test:
Use MASTER_MYSOCK instead of master.sock
mysql-test/t/rpl000015.test:
Use MASTER_MYSOCK instead of master.sock
mysql-test/t/rpl000017.test:
Use MASTER_MYSOCK instead of master.sock
mysql-test/t/rpl000018.test:
Use MASTER_MYSOCK instead of master.sock
mysql-test/t/rpl_charset.test:
After merge fix
mysql-test/t/rpl_heap.test:
Use MASTER_MYSOCK instead of master.sock
mysql-test/t/rpl_rotate_logs.test:
Use MASTER_MYSOCK instead of master.sock
mysql-test/t/sp-error.test:
after merge fix
mysql-test/t/sp-security.test:
after merge fix
mysql-test/t/user_var.test:
after merge fix
scripts/mysql_fix_privilege_tables.sh:
This can now be exectued from the source distribution
sql/handler.cc:
Cleanup
sql/handler.h:
More debugging
sql/item.h:
Indentation fixes
sql/item_cmpfunc.cc:
After merge fixes
sql/opt_range.cc:
After merge fixes
sql/opt_range.h:
After merge fixes
sql/sp.cc:
After merge fixes
sql/sp_head.cc:
Remove closing of thread tables in a SP function as this caused a core dump.
(Has to be fixed better)
sql/sql_base.cc:
More debugging
sql/sql_handler.cc:
After merge fixes
(We have to call ha_index_or_rnd_end() before calling close_thread_table())
sql/sql_parse.cc:
More debugging
sql/sql_prepare.cc:
After merge fixes
sql/sql_select.cc:
After merge fixes
Diffstat (limited to 'sql/sql_prepare.cc')
-rw-r--r-- | sql/sql_prepare.cc | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index eeaa40f1a75..23c5a302190 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -1647,10 +1647,17 @@ int mysql_stmt_prepare(THD *thd, char *packet, uint packet_length, /* error is sent inside yyparse/send_prepare_results */ } else - stmt->setup_set_params(); - + { + stmt->setup_set_params(); + SELECT_LEX *sl= stmt->lex->all_selects_list; + /* + Save WHERE clause pointers, because they may be changed during query + optimisation. + */ + for (; sl; sl= sl->next_select_in_list()) + sl->prep_where= sl->where; + } DBUG_RETURN(!stmt); - } /* Reinit statement before execution */ @@ -1839,7 +1846,9 @@ void mysql_sql_stmt_execute(THD *thd, LEX_STRING *stmt_name) my_error(ER_WRONG_ARGUMENTS, MYF(0), "EXECUTE"); send_error(thd); } + thd->current_arena= stmt; execute_stmt(thd, stmt, &expanded_query, false); + thd->current_arena= 0; DBUG_VOID_RETURN; } @@ -1885,12 +1894,13 @@ static void execute_stmt(THD *thd, Prepared_statement *stmt, if (!(specialflag & SPECIAL_NO_PRIOR)) my_pthread_setprio(pthread_self(), WAIT_PRIOR); - /* Free Items that were created during this execution of the PS. */ - free_items(thd->free_list); cleanup_items(stmt->free_list); reset_stmt_params(stmt); close_thread_tables(thd); // to close derived tables thd->set_statement(&thd->stmt_backup); + /* Free Items that were created during this execution of the PS. */ + free_items(thd->free_list); + thd->free_list= 0; DBUG_VOID_RETURN; } |