WL#3951 - MyISAM: Additional Error Logs for Data Corruption
Fixed partition_repair_myisam.test.
mysql-test/suite/parts/t/partition_repair_myisam.test:
Suppress some extra warnings produced by MyISAM.
Bug#35591 FLUSH PRIVILEGES caused a crash
A race condition on the privilege hash tables (proc_priv_hash
and func_priv_hash) caused one thread to try to delete elements
that had already been deleted by another thread.
The bug was caused by reading and saving the pointers to
the hash tables outside mutex protection. This led to an
inconsistency where a thread copied a pointer to a hash,
another thread did the same, the first thread then deleted
the hash, and the second then crashed when it in turn tried to
delete the deleted hash.
The fix is to ensure that operations on the shared hash structures
happens under mutex protection (moving the locking up a little)
Implemented a new INFORMATION_SCHEMA table, which is intended to
provide information about tablespaces.
mysql-test/r/information_schema.result:
Updated test result according to WL#2511. With this WL
I_S has new TABLESPACES schema.
mysql-test/r/information_schema_db.result:
Updated test result according to WL#2511. With this WL
I_S has new TABLESPACES schema.
mysql-test/r/mysqlshow.result:
Updated test result according to WL#2511. With this WL
I_S has new TABLESPACES schema.
mysql-test/suite/funcs_1/r/is_columns_is.result:
Updated test result according to WL#2511. With this WL
I_S has new TABLESPACES schema.
mysql-test/suite/funcs_1/r/is_tables_is.result:
Updated test result according to WL#2511. With this WL
I_S has new TABLESPACES schema.
sql/handler.h:
Added SCH_TABLESPACES to enum_schema_tables.
sql/mysql_priv.h:
Added human readable definitions for I_S.TABLESPACES field
identifiers.
sql/sql_show.cc:
Added I_S.TABLESPACES schema. The code which handles I_S.FILES
is capable to handle I_S.TABLESPACES as well. Thus we reuse
this code and let functions/variables have more generic names.
The problem is not actually related to 2byte collation IDs.
The same crash happens if you change the collation ID in
mysql-test/str_data/Index.xml to a value smaller than 256.
Crash happened in SQL parser, because the "ident_map" and "state_map"
arrays were not initialized in loadable utf8 collations.
Fix: adding proper initialization of the "ident_map" and "state_map"
members for loadable utf8 collations.
Added back n_frees, use 'clear' instead of 'free' since memory is
not freed here.
plugin/semisync/semisync_master.cc:
Added back n_frees, use 'clear' instead of 'free' in the message since memory is not freed here.
Before this patch, semisync assumed transactions running in parallel
can not be larger than max_connections, but this is not true when
the event scheduler is executing events, and cause semisync run out
of preallocated transaction nodes.
Fix the problem by allocating transaction nodes dynamically.
This patch also fixed a possible deadlock when running UNINSTALL
PLUGIN rpl_semi_sync_master and updating in parallel. Fixed by
releasing the internal Delegate lock before unlock the plugins.
mysql-test/suite/rpl/t/rpl_semi_sync_event.test:
Add test case for bug#49020
plugin/semisync/semisync_master.cc:
Allocating TranxNode dynamically
plugin/semisync/semisync_master.h:
Allocating TranxNode dynamically
sql/rpl_handler.cc:
Unlock plugins after we have released the Delegate lock to avoid possible deadlock when uninstalling semisync master plugin and doing update in parallel.
When a .CSV file for table in the CSV engine contains
\X characters as part of unquoted fields, e.g.
2,naraya\nan
\n is not interpreted as a new line (it is however interpreted as a
newline in a quoted field).
The old algorithm copied the entire value for a unquoted field without
parsing the \X characters.
The new algorithm adds the capability to handle \X characters in the
unquoted fields of a .CSV file.
mysql-test/r/csv.result:
Bug#40814 CSV engine does not parse \X characters when they occur in unquoted fields
Contains additional test output corresponding to the new
tests added.
mysql-test/t/csv.test:
Bug#40814 CSV engine does not parse \X characters when they occur in unquoted fields
Contains additional tests for testing the behaviour of the CSV
storage engine when the fields are not enclosed in quotes and
contain \X characters.
storage/csv/ha_tina.cc:
Bug#40814 CSV engine does not parse \X characters when they occur in unquoted fields
Changes the parsing logic of the rows in a CSV file, to parse
\X characters that might be present in the unquoted fields.
Introduce a flag that will enable the REPLACE
command to work correctly with an underlying
storage engine that does not report unique key
conflicts in the ascending order.
sql/handler.h:
WL#4454 change sql_insert.cc::last_uniq_key to match keys in any order
Adds the flag that will be set by a
SE that does not report unique key
conflicts in the ascending order.
sql/sql_insert.cc:
WL#4454 change sql_insert.cc::last_uniq_key to match keys in any order
modifies the function used for a last row
replace optimization to check for the
HA_DUPLICATE_KEY_NOT_IN_ORDER flag.
The attached patch adds a method
handlerton::fill_is_table that can be used
instead of having to create specific
handlerton::fill_*_table methods.
sql/ha_ndbcluster.cc:
WL#4448 Generalize the handlerton::fill_files_table call with handlerton::fill_is_table
Implemented the method ndbcluster_fill_is_table
that uses the supplied table id to switch to the
appropriate fill_*_table method.
sql/handler.h:
WL#4448 Generalize the handlerton::fill_files_table call with handlerton::fill_is_table
Moved the enum_schema_table enumeration
from table.h to here.
contains the declaration for the new method
fill_is_tables.
sql/sql_show.cc:
WL#4448 Generalize the handlerton::fill_files_table call with handlerton::fill_is_table
calls the fill_is_table method instead of the
fill_files_table method.
sql/table.h:
WL#4448 Generalize the handlerton::fill_files_table call with handlerton::fill_is_table
removed the earlier definition of enum_schema_tables.
Use safe output formats for strings that are not null terminated.
sql/item_func.cc:
Use "%*.s" rather than "%s" format.
sql/protocol.cc:
Use "%*.s" rather than "%s" format.
sql/sql_test.cc:
Improve output from print_where()
- output (nil) predicate if predicate is null
- also output pointer value, for tracing of assignment and copying of predicates
sql/sql_view.cc:
Use "%*.s" rather than "%s" format.
Constant expressions in WHERE/HAVING/ON clauses aren't cached and evaluated
for each row. This causes slowdown of query execution especially if constant
UDF/SP function are used.
Now WHERE/HAVING/ON expressions are analyzed in the top-bottom direction with
help of the compile function. When analyzer meets a constant item it
sets a flag for the tree transformer to cache the item and doesn't allow tree
walker to go deeper. Thus, the topmost item of a constant expression if
cached. This is done after all other optimizations were applied to
WHERE/HAVING/ON expressions
A helper function called cache_const_exprs is added to the JOIN class.
It calls compile method with caching analyzer and transformer on WHERE,
HAVING, ON expressions if they're present.
The cache_const_expr_analyzer and cache_const_expr_transformer functions are
added to the Item class. The first one check if the item can be cached and
the second caches it if so.
A new Item_cache_datetime class is derived from the Item_cache class.
It caches both int and string values of the underlying item independently to
avoid DATETIME aware int-to-string conversion. Thus it completely relies on
the ability of the underlying item to correctly convert DATETIME value from
int to string and vice versa.
mysql-test/r/func_like.result:
A test case result is corrected after fixing bug#33546.
mysql-test/r/func_time.result:
A test case result is corrected after fixing bug#33546.
mysql-test/r/select.result:
Added a test case for the bug#33546.
mysql-test/r/subselect.result:
A test case result is corrected after fixing bug#33546.
mysql-test/r/udf.result:
Added a test case for the bug#33546.
mysql-test/t/select.test:
Added a test case for the bug#33546.
mysql-test/t/udf.test:
Added a test case for the bug#33546.
sql/item.cc:
Bug#33546: Slowdown on re-evaluation of constant expressions.
The cache_const_expr_analyzer and cache_const_expr_transformer functions are
added to the Item class. The first one check if the item can be cached and
the second caches it if so.
Item_cache_datetime class implementation is added.
sql/item.h:
Bug#33546: Slowdown on re-evaluation of constant expressions.
Item_ref and Item_cache classes now returns basic_const_item
from underlying item.
The cache_const_expr_analyzer and cache_const_expr_transformer functions are
added to the Item class.
sql/sql_select.cc:
Bug#33546: Slowdown on re-evaluation of constant expressions.
A helper function called cache_const_exprs is added to the JOIN class.
It calls compile method with caching analyzer and transformer on WHERE,
HAVING, ON expressions if they're present.
sql/sql_select.h:
Bug#33546: Slowdown on re-evaluation of constant expressions.
A helper function called cache_const_exprs is added to the JOIN class.
Text conflict in mysql-test/collections/default.experimental
Text conflict in mysql-test/r/show_check.result
Text conflict in mysql-test/r/sp-code.result
Text conflict in mysql-test/suite/binlog/r/binlog_tmp_table.result
Text conflict in mysql-test/suite/rpl/t/disabled.def
Text conflict in mysql-test/t/show_check.test
Text conflict in mysys/my_delete.c
Text conflict in sql/item.h
Text conflict in sql/item_cmpfunc.h
Text conflict in sql/log.cc
Text conflict in sql/mysqld.cc
Text conflict in sql/repl_failsafe.cc
Text conflict in sql/slave.cc
Text conflict in sql/sql_parse.cc
Text conflict in sql/sql_table.cc
Text conflict in sql/sql_yacc.yy
Text conflict in storage/myisam/ha_myisam.cc
Corrected results for
stm_auto_increment_bug33029.reject 2009-12-01
20:01:49.000000000 +0300
<andrei> @@ -42,9 +42,6 @@
<andrei> RETURN i;
<andrei> END//
<andrei> CALL p1();
<andrei> -Warnings:
<andrei> -Note 1592 Statement may not be safe to log in statement
format.
<andrei> -Note 1592 Statement may not be safe to log in statement
format.
There should be indeed no Note present because there is in fact autoincrement
top-level query in sp() that triggers inserting in yet another auto-inc table.
(todo: alert DaoGang to improve the test).