propogation works only once (prepared statements)".
mysql-test/r/ps.result:
Test case for Bug#6042: test results fixed
mysql-test/t/ps.test:
A test case for Bug#6042 "constants propogation works only once
(prepared statements).
- 'ps_10nestset' uses a "nested set" approach for an employee
hierarchy, then does arithmetic on the "salary" field;
(soon) to be extended by inserts / deletes which imply
mass updates on the "l"/"r" fields showing the set inclusion,
- 'ps_11bugs' will get (some of ?) those bug DB entries which
refer to prepared statements, but whose number does not appear
in a test file comment - so it will also be extended.
A fix for Bug#6042 "constants propogation works olny once (prepared
statements)": reset item->marker in Item::cleanup, as it's used
in propogate_cond_constants. No test case as the only way I could
come up with to show the problem is EXPLAIN, and EXPLAIN is painful
to use in the test suite.
sql/item.h:
A fix for Bug#6042 "constants propogation works olny once (prepared
statements)": reset item->marker in Item::cleanup, as it's used
in propogate_cond_constants
ndb/include/kernel/signaldata/TcContinueB.hpp:
Test NODE_FAILREP arraving before TCKEYCONF w.r.t simple/dirty read
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
Test NODE_FAILREP arraving before TCKEYCONF w.r.t simple/dirty read
ndb/src/ndbapi/NdbConnection.cpp:
Test NODE_FAILREP arraving before TCKEYCONF w.r.t simple/dirty read
ndb/src/ndbapi/Ndbif.cpp:
Test NODE_FAILREP arraving before TCKEYCONF w.r.t simple/dirty read
ndb/test/ndbapi/testNodeRestart.cpp:
Test NODE_FAILREP arraving before TCKEYCONF w.r.t simple/dirty read
ndb/include/ndbapi/NdbConnection.hpp:
Support for handling NF during dirty read
ndb/include/ndbapi/NdbReceiver.hpp:
Support for handling NF during dirty read
ndb/src/ndbapi/NdbConnection.cpp:
Support for handling NF during dirty read
ndb/src/ndbapi/NdbReceiver.cpp:
Support for handling NF during dirty read
ndb/src/ndbapi/Ndbif.cpp:
Support for handling NF during dirty read
ndb/src/ndbapi/ndberror.c:
Support for handling NF during dirty read
ndb/test/ndbapi/testNodeRestart.cpp:
Support for handling NF during dirty read
ndb/include/mgmapi/mgmapi.h:
ndb_mgm: fix dump and signal log (more to do)
ndb/src/common/debugger/signaldata/SignalNames.cpp:
ndb_mgm: fix dump and signal log (more to do)
ndb/src/mgmapi/mgmapi.cpp:
ndb_mgm: fix dump and signal log (more to do)
ndb/src/mgmclient/CommandInterpreter.cpp:
ndb_mgm: fix dump and signal log (more to do)
added blob to test to see that blob tables don't show up in show tables
auto increment setting need not fetch blob tables (will otherwise generate error during table creation)
moved addBlobTables out of fetchGlobalTableImpl to get_local_table_info
changed addBlobTables to start from last column and break if all blobs added
also addBlobTables will return -1 if failed (typically getTable)
changed to using get_local_table_info with internal table name where applicable for efficiency
added option to get_local_table_info wether to fetch blob tables or not
getTable always fetches the blobtables
moved addBlobTables to get_local_table_info to always be called, even if main table goes to cache only
mysql-test/r/ndb_autodiscover.result:
added blob to test to see that blob tables don't show up in show tables
mysql-test/t/ndb_autodiscover.test:
added blob to test to see that blob tables don't show up in show tables
ndb/src/ndbapi/Ndb.cpp:
auto increment setting need not fetch blob tables (will otherwise generate error during table creation)
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
moved addBlobTables out of fetchGlobalTableImpl to get_local_table_info
changed addBlobTables to start from last column and break if all blobs added
also addBlobTables will return -1 if failed (typically getTable)
changed to using get_local_table_info with internal table name where applicable for efficiency
ndb/src/ndbapi/NdbDictionaryImpl.hpp:
added option to get_local_table_info wether to fetch blob tables or not
getTable always fetches the blobtables
moved addBlobTables to get_local_table_info to always be called, even if main table goes to cache only
(Bug #4315: GROUP_CONCAT with ORDER BY returns strange results for TEXT fields
Bug #5564: Strange behaviour with group_concat and distinct
Bug #5970: group_concat doesn't print warnings)
change, and perform it (the new Item changes registry).
sql/item.cc:
A small simplification: perform two actions at once, register a
change, and perform it.
sql/item_cmpfunc.cc:
register_item_tree_change -> change_item_tree
sql/item_func.cc:
register_item_tree_change -> change_item_tree
sql/item_row.cc:
register_item_tree_change -> change_item_tree
sql/item_strfunc.cc:
register_item_tree_change -> change_item_tree
sql/sql_class.h:
register_item_tree_change -> change_item_tree
sql/sql_select.cc:
register_item_tree_change -> change_item_tree
crashes server (prepared statements)": the bug was that all boolean
items always recovered its original arguments at statement cleanup
stage.
This collided with Item_subselect::select_transformer, which tries to
permanently change the item tree to use a transformed subselect instead of
original one.
So we had this call sequence for prepare:
mysql_stmt_prepare -> JOIN::prepare ->
Item_subselect::fix_fields -> the item tree gets transformed ->
Item_bool_rowready_func2::cleanup, item tree is recovered to original
state, while it shouldn't have been;
mysql_stmt_execute -> attempts to execute a broken tree -> crash.
Now instead of bluntly recovering all arguments of bool functions in
Item_bool_rowready_func2::cleanup, we recover only those
which were changed, and do it in one place.
There still would exist a possibility for a collision with subselect
tranformation, if permanent and temporary changes were performed at the
same stage.
But fortunately subselect transformation is always done first, so it
doesn't conflict with the optimization done by propogate_cond_constants.
Now we have:
mysql_stmt_prepare -> JOIN::prepare -> subselect transformation
permanently changes the tree -> cleanup doesn't recover anything,
because nothing was registered for recovery.
mysql_stmt_execute -> JOIN::prepare (the tree is already transformed,
so it doesn't change), JOIN::optimize ->
propogate_cond_constants -> temporary changes the item tree
with constants -> JOIN::execute -> cleanup ->
the changes done by propogate_cond_constants are recovered, as
they were registered for recovery.
mysql-test/r/ps.result:
Bug#5987: test results fixed.
mysql-test/t/ps.test:
A test for bug#5987 "subselect in bool function crashes server
(prepared statements)"
sql/item.cc:
resolve_const_item is now responsible to register all changes of the
item tree for recovery
sql/item.h:
resolve_const_item signagture changed
sql/item_cmpfunc.h:
Arguments of boolean functions are now recovered using the
centralized registry of THD.
sql/sql_class.cc:
It's crucial to add new items to the beginning of the recovery list,
so that the recovery is performed in LIFO mode: otherwise if we
change one node of a tree twice, it will be recovered to some intermediate
state.
sql/sql_select.cc:
change_cond_ref_to_const and propogate_cond_constants are now responsible
to register all changes of the item tree for recovery.
The recovery is done using the centralized THD registry of
changed tree items.
ndb/src/kernel/blocks/dbtux/Dbtux.hpp:
tux optim 15 - fix wasted space in index node entries
ndb/src/kernel/blocks/dbtux/DbtuxDebug.cpp:
tux optim 15 - fix wasted space in index node entries
ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp:
tux optim 15 - fix wasted space in index node entries
ndb/src/kernel/blocks/dbtux/DbtuxMeta.cpp:
tux optim 15 - fix wasted space in index node entries
ndb/src/kernel/blocks/dbtux/DbtuxNode.cpp:
tux optim 15 - fix wasted space in index node entries
ndb/src/kernel/blocks/dbtux/Times.txt:
tux optim 15 - fix wasted space in index node entries
ndb/test/ndbapi/testOIBasic.cpp:
tux optim 15 - fix wasted space in index node entries
- Made some of the warnings under --verbose only
- Added possibility to add mysqladmin= under groups [mysqldN]
mysqladmin=... is no longer mandatory under [mysqld_multi]
- Made 'start', 'stop' and 'report' commands truly case-insensitive
- Some other common places code merge and cleanup