into mysql.com:/home/dlenev/mysql-5.0-bg12472
sql/mysql_priv.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_table.cc:
Auto merged
mysql-test/r/sp.result:
Manual merge.
mysql-test/t/sp.test:
Manual merge.
or implicitly uses stored function gives "Table not locked" error'
CREATE TABLE ... SELECT ... statement which was explicitly or implicitly
(through view) using stored function gave "Table not locked" error.
The actual bug resides in the current locking scheme of CREATE TABLE SELECT
code, which first opens and locks tables of the SELECT statement itself,
and then, having SELECT tables locked, creates the .FRM, opens the .FRM and
acquires lock on it. This scheme opens a possibility for a deadlock, which
was present and ignored since version 3.23 or earlier. This scheme also
conflicts with the invariant of the prelocking algorithm -- no table can
be open and locked while there are tables locked in prelocked mode.
The patch makes an exception for this invariant when doing CREATE TABLE ...
SELECT, thus extending the possibility of a deadlock to the prelocked mode.
We can't supply a better fix in 5.0.
mysql-test/r/sp.result:
Added tests for bugs#12472/#15137 'CREATE TABLE ... SELECT ... which
explicitly or implicitly uses stored function gives "Table not locked" error'
mysql-test/t/sp.test:
Added tests for bugs#12472/#15137 'CREATE TABLE ... SELECT ... which
explicitly or implicitly uses stored function gives "Table not locked" error'
sql/mysql_priv.h:
Added flag which can be passed to open_table() routine in order to ignore
set of locked tables and prelocked mode.
We don't need declaration of create_table_from_items() any longer as it was
moved into sql_insert.cc and made static.
sql/sql_base.cc:
open_table():
Added flag which allows open table ignoring set of locked tables and
prelocked mode.
sql/sql_insert.cc:
Moved create_table_from_items() from sql_table.cc to sql_insert.cc as it was
not used outside of sql_insert.cc and contains code which is specific for
CREATE TABLE ... SELECT.
Also now when we are executing CREATE TABLE ... SELECT ... statement which
SELECT part requires execution in prelocked mode we ignore set of locked
tables in order to get access to the table we just have created.
We probably don't want to do this if we are under real LOCK TABLES since
it will widen window for deadlock too much.
sql/sql_table.cc:
Moved create_table_from_items() routine into sql_insert.cc, since it was not
used anywhere outside of this file and contains logic which is specific for
CREATE TABLE ... SELECT statement.
test rpl_err_ignoredtables.
sql/log_event.cc:
Clearing tables to lock list in the event of errors.
Adding asserts to catch failing to clear the list of tables to lock.
Releasing allocated memory if the table will not be replicated.
sql/rpl_rli.h:
Adding assert to ensure post-condition of clear_tables_to_lock().
Minor rewrites.
- Add a check to see if the .mysql_history file a symlink to /dev/null
and in such case, skip reading and writing to it.
client/mysql.cc:
Add check to detect if the "mysql_history" file is a symlink to /dev/null.
In that case, don't create histfile variable.
That will make read_history and write_history to be skipped.
into neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
client/mysqltest.c:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
sql/mysql_priv.h:
Auto merged
mysql-test/r/ndb_partition_key.result:
New test case to ensure path in code is tested
mysql-test/r/partition.result:
New test case for bug
mysql-test/t/ndb_partition_key.test:
New test case to ensure path in code is tested
mysql-test/t/partition.test:
New test case for bug
sql/sql_partition.cc:
Use stack variable, not variable on lex object, caused havoc when doing a create index.
sql/sql_table.cc:
Editorial changes + added a comment to a path in code I didn't remember myself what it was good for.
shell "for" loops without values to loop over cause syntax errors.
libmysqld/Makefile.am:
Workaround: The variable "$sqlstoragesources" expands to empty, this causes shell errors.
The clean solution would be to check the reason for this, whether it will be permanent etc,
but for a quick fix it is sufficient to prevent shell syntax errors.
into neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
extra/yassl/src/ssl.cpp:
Auto merged
extra/yassl/taocrypt/src/make.bat:
Auto merged
extra/yassl/testsuite/test.hpp:
Auto merged
save global server variables before fiddling with them and restore them later
BitKeeper/deleted/.del-variables-master.opt~8a6cb6459b54545:
Delete: mysql-test/t/variables-master.opt
mysql-test/r/variables.result:
save and restore globals
mysql-test/t/variables.test:
save and restore globals
load_file() string-function should return NULL rather than throw an error if
the file doesn't exist, as per the manual.
mysql-test/t/outfile.test:
expect NULL rather than error if file given to load_file() doesn't exist
mysql-test/t/func_str.test:
show that load_file() will return NULL rather than throw an error
if file doesn't exist
mysql-test/r/outfile.result:
expect NULL rather than error if file given to load_file() doesn't exist
mysql-test/r/func_str.result:
expect NULL rather than error if file given to load_file() doesn't exist
sql/item_strfunc.cc:
load_file() should return NULL as per the docs if file not found,
rather than throw an error
into rurik.mysql.com:/home/igor/mysql-5.0
mysql-test/r/rpl_user_variables.result:
Auto merged
sql/item_func.cc:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/t/rpl_user_variables.test:
Manual merge