Version for 4.0.
It fixes two problems:
1. The cause of the bug was that we did not check the table version for
the HANDLER ... READ commands. We did not notice when a table was
replaced by a new one. This can happen during ALTER TABLE, REPAIR
TABLE, and OPTIMIZE TABLE (there might be more cases). I call the fix
for this problem "the primary bug fix".
2. mysql_ha_flush() was not always called with a locked LOCK_open.
Though the function comment clearly said it must.
I changed the code so that the locking is done when required. I call
the fix for this problem "the secondary fix".
mysql-test/r/handler.result:
Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
The test result.
mysql-test/t/handler.test:
Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
The test case.
sql/mysql_priv.h:
Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
Changed a definition for the secondary fix.
sql/sql_base.cc:
Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
Changed function calls for the secondary fix.
sql/sql_class.cc:
Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
Changed a function call for the secondary fix.
sql/sql_handler.cc:
Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
The first two diffs make the primary bug fix.
The rest is for the secondary fix.
sql/sql_table.cc:
Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
Changed function calls for the secondary fix.
BUG#4335 - one name can be handler open'ed many times.
Reworked the HANDLER functions and interface.
Using a HASH to store information on open tables that
survives FLUSH TABLE.
HANDLER tables alias names must now be unique, though it
is allowed in 4.0 to qualify them with the database name
of the base table.
mysql-test/r/flush_table.result:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Moved pure handler test results to handler.result.
Added the new test results.
mysql-test/r/handler.result:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Moved pure handler test results from flush_table.result to here.
mysql-test/t/flush_table.test:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Moved pure handler tests to handler.test.
Added new tests.
mysql-test/t/handler.test:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Moved pure handler tests from flush_table.test to here.
sql/mysql_priv.h:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Reworked the handler interface.
sql/sql_base.cc:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Replaced mysql_ha_close_list() by the better named
function mysql_ha_flush() with readable options.
sql/sql_class.cc:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Added initialization for the handler tables hash.
Changed the handler tables clean-up code.
Unreleted to bug: Changed the order of THD initialization
to avoid warning messages on Linux with gcc.
sql/sql_class.h:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Added the handler tables HASH to THD.
sql/sql_handler.cc:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Completely reworked the handler functions.
Added an introducing comment, describing the new functionality.
sql/sql_table.cc:
BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
replaced mysql_ha_close() by the better named
function mysql_ha_flush() with readable options.
mysql-test/r/handler.result:
Test case for BUG#3649
mysql-test/t/handler.test:
Test case for BUG#3649
sql/sql_handler.cc:
Fix for BUG#3649: when doing an index scan for an equality condition, use index_next_same to retrieve subsequent rows.
Make ENGINE= an alias for TYPE= (Compabiltiy with 4.1)
Fix when using symlinked data files and realpath() is not working
client/mysqltest.c:
Copied mysqltest from 4.1 and modified this to compile in 4.0
This was needed to get replace_columns to work.
include/my_sys.h:
Stop compiler warnings about alloca on freebsd
myisam/mi_check.c:
Fix when using symlinked data files and realpath() is not working
mysql-test/r/handler.result:
test engine=
mysql-test/r/rpl_max_relay_size.result:
Use replace_columns to replace some 'not constant' columns
mysql-test/r/rpl_rotate_logs.result:
Use replace_columns to replace some 'not constant' columns
mysql-test/r/rpl_trunc_binlog.result:
Use replace_columns to replace some 'not constant' columns
mysql-test/t/handler.test:
test engine=
mysql-test/t/rpl_log_pos.test:
Use replace_columns to replace some 'not constant' columns
mysql-test/t/rpl_max_relay_size.test:
Use replace_columns to replace some 'not constant' columns
mysql-test/t/rpl_rotate_logs.test:
Use replace_columns to replace some 'not constant' columns
mysql-test/t/rpl_trunc_binlog.test:
Use replace_columns to replace some 'not constant' columns
mysys/my_symlink.c:
More debugging
sql/lex.h:
Make ENGINE= an alias for TYPE=
sql/mysqld.cc:
Code cleanup
strings/strto.c:
Fix for True64
strings/strtoll.c:
Fix for True64
strings/strtoull.c:
Remove not needed include file
mysql-test/r/handler.result:
test case for the bug #787: HANDLER without INDEX doesn't work with deleted rows
mysql-test/t/handler.test:
test case for the bug #787: HANDLER without INDEX doesn't work with deleted rows
sql/sql_handler.cc:
fix for the bug #787: HANDLER without INDEX doesn't work with deleted rows
Fields in key_expr (mysql_ha_read) wasn't linked to tables.
Hmm. How did it work at all?
mysql-test/r/alias.result:
It's better to delete table after the test
mysql-test/r/handler.result:
appropriate result
mysql-test/t/alias.test:
it's better to drop table after test
mysql-test/t/handler.test:
test case for #751
sql/sql_handler.cc:
fix_fields called
Check if AND/OR expression can be NULL; Fixed bug in GROUP BY and-or-expression where expression could be NULL
Bug fix for SHOW OPEN TABLES when user didn't have privilege to access all open tables.
Better fix for ALTER TABLE on BDB tables.
Docs/manual.texi:
Changelog
client/mysql.cc:
Simple optimization
libmysql/libmysql.c:
Removed initialization of varibles that are already set to zero
myisam/myisamchk.c:
Fixed comment for extend-check
mysql-test/r/bdb-alter-table-1.result:
Updated results
mysql-test/r/bdb-alter-table-2.result:
Updated results
mysql-test/r/distinct.result:
Updated results after bug fix
mysql-test/r/handler.result:
Updated results
mysql-test/r/innodb_handler.result:
Updated results
mysql-test/r/select.result:
Updated results
mysql-test/r/varbinary.result:
Updated results
mysql-test/t/bdb-alter-table-1.test:
Added comments
mysql-test/t/bdb-alter-table-2.test:
Added comments
mysql-test/t/select.test:
Remove OPTION in SET OPTION
Added tests for ORDER BY key LIMIT
sql/item_cmpfunc.cc:
Check if AND/OR expression can be NULL
sql/mysqld.cc:
mysqld --help now shows value of datadir
sql/share/english/errmsg.txt:
Better error message for syntax error
sql/sql_base.cc:
Bug fix for SHOW OPEN TABLES
sql/sql_class.cc:
Moved virtual function to .cc file to avoid that we have to include assert.h everywhere.
sql/sql_class.h:
Moved virtual function to .cc file to avoid that we have to include assert.h everywhere.
sql/sql_parse.cc:
Removed old dead code from 3.23
sql/sql_select.cc:
Improved optimization of ORDER BY key LIMIT
sql/sql_table.cc:
More comments,
Better fix for ALTER TABLE on BDB tables.
typo/bad merge fixed
chmod a-x for man/*.1 files
man/isamchk.1:
Change mode to -rw-rw-r--
man/mysqlaccess.1:
Change mode to -rw-rw-r--
man/mysqladmin.1:
Change mode to -rw-rw-r--
man/mysqld.1:
Change mode to -rw-rw-r--
man/mysqldump.1:
Change mode to -rw-rw-r--
man/mysqlshow.1:
Change mode to -rw-rw-r--
man/perror.1:
Change mode to -rw-rw-r--
man/safe_mysqld.1:
Change mode to -rw-rw-r--
mysql-test/r/handler.result:
new tests added
client/mysqltest.c:
bug fixed: errors from handler.test (that is send_error()
after send_fields) weren't catched by expected_errno
mysql-test/t/handler.test:
typo fixed
sql/Makefile.am:
bad merge fixed
sql/sql_yacc.yy:
bad merge (?) fixed