3588 Ole John Aske 2012-02-22
Fix for handling (partially) failed SPJ queries:
Inspired by Maitrayis error injection, testing and patches it has
become clear that:
- We have to distinquish between 'soft' and 'hard' errors
in our error handling.
- 'Soft' errors (like 'row not found') should be signaled to
API, but execution is allowed to continue.
- 'Hard' errors should cause execution to ::abort(), and the Request
entering ABORTING state.
- When in ABORTING state, no further TreeNode execution should
be started.
- API should give up 'outstanding' counting when a hard error is
received. Further signals will not be expected, if any arrives
they should be silently ignored.
These issues are addressed in this patch.
Added the following error injection test cases:
- Set invalid table version in LQHKEYREQ such that rewritten
execLQHKEYREF is now tested.
- Simulate that ::lookup_send() determines the destination
LQH-node to not being 'alive', and thus immediately
returns NodeFailure (error 20016)
- Simulate 'OutOfQueryMemory' in lookup_parent_row().
modified:
storage/ndb/include/ndb_version.h.in
storage/ndb/src/kernel/blocks/dbspj/DbspjMain.cpp
storage/ndb/src/ndbapi/NdbQueryOperation.cpp
storage/ndb/src/ndbapi/Ndbif.cpp
storage/ndb/test/ndbapi/testSpj.cpp
3587 Ole John Aske 2012-02-22 [merge]
Merge from mysql-5.1-telco-7.0 into spj-SS branch
removed:
include/my_handler.h
mysql-test/suite/bugs/
mysql-test/suite/bugs/combinations
mysql-test/suite/bugs/data/
mysql-test/suite/bugs/data/rpl_bug12691.dat
mysql-test/suite/bugs/r/
mysql-test/suite/bugs/r/rpl_bug12691.result
mysql-test/suite/bugs/r/rpl_bug31582.result
mysql-test/suite/bugs/r/rpl_bug31583.result
mysql-test/suite/bugs/r/rpl_bug33029.result
mysql-test/suite/bugs/r/rpl_bug38205.result
mysql-test/suite/bugs/t/
mysql-test/suite/bugs/t/rpl_bug12691.test
mysql-test/suite/bugs/t/rpl_bug31582.test
mysql-test/suite/bugs/t/rpl_bug31583.test
mysql-test/suite/bugs/t/rpl_bug33029.test
mysql-test/suite/bugs/t/rpl_bug38205.test
mysys/my_gethostbyname.c
mysys/my_handler.c
mysys/my_port.c
storage/ndb/src/external/
storage/ndb/src/external/WIN32.x86/
storage/ndb/src/external/WIN32.x86/sci/
storage/ndb/src/external/WIN32.x86/sci/lib/
storage/ndb/src/external/WIN32.x86/sci/lib/SISCI_LIBRARY_WIN32.TXT
storage/ndb/src/external/WIN32.x86/sci/lib/scilib.lib
storage/ndb/src/external/WIN32.x86/sci/lib/scilib_md.lib
storage/ndb/src/external/WIN32.x86/sci/lib/scilib_mt.lib
storage/ndb/src/external/WIN32.x86/sci/lib/sisci_api.lib
storage/ndb/src/external/WIN32.x86/sci/lib/sisci_api_md.lib
storage/ndb/src/external/WIN32.x86/sci/lib/sisci_api_mt.lib
storage/ndb/test/odbc/
storage/ndb/test/odbc/SQL99_test/
storage/ndb/test/odbc/SQL99_test/Makefile
storage/ndb/test/odbc/SQL99_test/SQL99_test.cpp
storage/ndb/test/odbc/SQL99_test/SQL99_test.h
storage/ndb/test/odbc/client/
storage/ndb/test/odbc/client/Makefile
storage/ndb/test/odbc/client/NDBT_ALLOCHANDLE.cpp
storage/ndb/test/odbc/client/NDBT_ALLOCHANDLE_HDBC.cpp
storage/ndb/test/odbc/client/NDBT_SQLConnect.cpp
storage/ndb/test/odbc/client/NDBT_SQLPrepare.cpp
storage/ndb/test/odbc/client/SQLAllocEnvTest.cpp
storage/ndb/test/odbc/client/SQLAllocHandleTest.cpp
storage/ndb/test/odbc/client/SQLAllocHandleTest_bf.cpp
storage/ndb/test/odbc/client/SQLBindColTest.cpp
storage/ndb/test/odbc/client/SQLBindParameterTest.cpp
storage/ndb/test/odbc/client/SQLCancelTest.cpp
storage/ndb/test/odbc/client/SQLCloseCursorTest.cpp
storage/ndb/test/odbc/client/SQLColAttributeTest.cpp
storage/ndb/test/odbc/client/SQLColAttributeTest1.cpp
storage/ndb/test/odbc/client/SQLColAttributeTest2.cpp
storage/ndb/test/odbc/client/SQLColAttributeTest3.cpp
storage/ndb/test/odbc/client/SQLConnectTest.cpp
storage/ndb/test/odbc/client/SQLCopyDescTest.cpp
storage/ndb/test/odbc/client/SQLDescribeColTest.cpp
storage/ndb/test/odbc/client/SQLDisconnectTest.cpp
storage/ndb/test/odbc/client/SQLDriverConnectTest.cpp
storage/ndb/test/odbc/client/SQLEndTranTest.cpp
storage/ndb/test/odbc/client/SQLErrorTest.cpp
storage/ndb/test/odbc/client/SQLExecDirectTest.cpp
storage/ndb/test/odbc/client/SQLExecuteTest.cpp
storage/ndb/test/odbc/client/SQLFetchScrollTest.cpp
storage/ndb/test/odbc/client/SQLFetchTest.cpp
storage/ndb/test/odbc/client/SQLFreeHandleTest.cpp
storage/ndb/test/odbc/client/SQLFreeStmtTest.cpp
storage/ndb/test/odbc/client/SQLGetConnectAttrTest.cpp
storage/ndb/test/odbc/client/SQLGetCursorNameTest.cpp
storage/ndb/test/odbc/client/SQLGetDataTest.cpp
storage/ndb/test/odbc/client/SQLGetDescFieldTest.cpp
storage/ndb/test/odbc/client/SQLGetDescRecTest.cpp
storage/ndb/test/odbc/client/SQLGetDiagFieldTest.cpp
storage/ndb/test/odbc/client/SQLGetDiagRecSimpleTest.cpp
storage/ndb/test/odbc/client/SQLGetDiagRecTest.cpp
storage/ndb/test/odbc/client/SQLGetEnvAttrTest.cpp
storage/ndb/test/odbc/client/SQLGetFunctionsTest.cpp
storage/ndb/test/odbc/client/SQLGetInfoTest.cpp
storage/ndb/test/odbc/client/SQLGetStmtAttrTest.cpp
storage/ndb/test/odbc/client/SQLGetTypeInfoTest.cpp
storage/ndb/test/odbc/client/SQLMoreResultsTest.cpp
storage/ndb/test/odbc/client/SQLNumResultColsTest.cpp
storage/ndb/test/odbc/client/SQLParamDataTest.cpp
storage/ndb/test/odbc/client/SQLPrepareTest.cpp
storage/ndb/test/odbc/client/SQLPutDataTest.cpp
storage/ndb/test/odbc/client/SQLRowCountTest.cpp
storage/ndb/test/odbc/client/SQLSetConnectAttrTest.cpp
storage/ndb/test/odbc/client/SQLSetCursorNameTest.cpp
storage/ndb/test/odbc/client/SQLSetDescFieldTest.cpp
storage/ndb/test/odbc/client/SQLSetDescRecTest.cpp
storage/ndb/test/odbc/client/SQLSetEnvAttrTest.cpp
storage/ndb/test/odbc/client/SQLSetStmtAttrTest.cpp
storage/ndb/test/odbc/client/SQLTablesTest.cpp
storage/ndb/test/odbc/client/SQLTransactTest.cpp
storage/ndb/test/odbc/client/common.hpp
storage/ndb/test/odbc/client/main.cpp
storage/ndb/test/odbc/dm-iodbc/
storage/ndb/test/odbc/dm-iodbc/Makefile
storage/ndb/test/odbc/dm-unixodbc/
storage/ndb/test/odbc/dm-unixodbc/Makefile
storage/ndb/test/odbc/driver/
storage/ndb/test/odbc/driver/Makefile
storage/ndb/test/odbc/driver/testOdbcDriver.cpp
storage/ndb/test/odbc/test_compiler/
storage/ndb/test/odbc/test_compiler/Makefile
storage/ndb/test/odbc/test_compiler/test_compiler.cpp
added:
cmd-line-utils/libedit/chartype.c
cmd-line-utils/libedit/chartype.h
cmd-line-utils/libedit/eln.c
cmd-line-utils/libedit/historyn.c
cmd-line-utils/libedit/np/wcsdup.c
cmd-line-utils/libedit/tokenizern.c
include/my_compare.h
include/welcome_copyright_notice.h
mysql-test/include/have_federated_plugin.inc
mysql-test/include/not_crashrep.inc
mysql-test/r/archive_debug.result
mysql-test/r/func_encrypt_ucs2.result
mysql-test/r/implicit_char_to_num_conversion.result
mysql-test/r/secure_file_priv_win.result
mysql-test/r/ssl_cipher.result
mysql-test/suite/binlog/r/binlog_reset_master.result
mysql-test/suite/binlog/t/binlog_reset_master.test
mysql-test/suite/federated/federated_plugin-master.opt
mysql-test/suite/federated/federated_plugin.result
mysql-test/suite/federated/federated_plugin.test
mysql-test/suite/innodb/r/innodb_bug12661768.result
mysql-test/suite/innodb/r/innodb_bug59410.result
mysql-test/suite/innodb/r/innodb_bug59641.result
mysql-test/suite/innodb/r/innodb_bug60049.result
mysql-test/suite/innodb/r/innodb_replace.result
mysql-test/suite/innodb/t/innodb_bug12661768.test
mysql-test/suite/innodb/t/innodb_bug59410.test
mysql-test/suite/innodb/t/innodb_bug59641.test
mysql-test/suite/innodb/t/innodb_bug60049-master.opt
mysql-test/suite/innodb/t/innodb_bug60049.test
mysql-test/suite/innodb/t/innodb_replace.test
mysql-test/suite/innodb_plugin/r/innodb_bug59307.result
mysql-test/suite/innodb_plugin/r/innodb_bug59410.result
mysql-test/suite/innodb_plugin/r/innodb_bug59641.result
mysql-test/suite/innodb_plugin/r/innodb_bug60049.result
mysql-test/suite/innodb_plugin/r/innodb_cmp_drop_table.result
mysql-test/suite/innodb_plugin/r/innodb_misc1.result
mysql-test/suite/innodb_plugin/r/innodb_replace.result
mysql-test/suite/innodb_plugin/t/innodb_bug47167-master.opt
mysql-test/suite/innodb_plugin/t/innodb_bug59307.test
mysql-test/suite/innodb_plugin/t/innodb_bug59410.test
mysql-test/suite/innodb_plugin/t/innodb_bug59641.test
mysql-test/suite/innodb_plugin/t/innodb_bug60049-master.opt
mysql-test/suite/innodb_plugin/t/innodb_bug60049.test
mysql-test/suite/innodb_plugin/t/innodb_cmp_drop_table-master.opt
mysql-test/suite/innodb_plugin/t/innodb_cmp_drop_table.test
mysql-test/suite/innodb_plugin/t/innodb_file_format-master.opt
mysql-test/suite/innodb_plugin/t/innodb_misc1-master.opt
mysql-test/suite/innodb_plugin/t/innodb_misc1.test
mysql-test/suite/innodb_plugin/t/innodb_replace.test
mysql-test/suite/ndb/r/ndb_bug13563280.result
mysql-test/suite/ndb/r/ndb_index_stat_restart.result
mysql-test/suite/ndb/t/ndb_bug13563280.test
mysql-test/suite/ndb/t/ndb_index_stat_restart.test
mysql-test/suite/ndb_big/bug13637411-master.opt
mysql-test/suite/ndb_big/bug13637411.cnf
mysql-test/suite/ndb_big/bug13637411.test
mysql-test/suite/ndb_rpl/r/ndb_rpl_bug_13440282.result
mysql-test/suite/ndb_rpl/r/ndb_rpl_ddl_open_trans.result
mysql-test/suite/ndb_rpl/t/ndb_rpl_bug_13440282.test
mysql-test/suite/ndb_rpl/t/ndb_rpl_ddl_open_trans.test
mysql-test/suite/ndb_rpl/t/show_mysqld_warnings.inc
mysql-test/suite/rpl/r/rpl_row_corruption.result
mysql-test/suite/rpl/t/rpl_row_corruption-slave.opt
mysql-test/suite/rpl/t/rpl_row_corruption.test
mysql-test/t/archive_debug.test
mysql-test/t/func_encrypt_ucs2.test
mysql-test/t/implicit_char_to_num_conversion.test
mysql-test/t/secure_file_priv_win-master.opt
mysql-test/t/secure_file_priv_win.test
mysql-test/t/ssl_cipher-master.opt
mysql-test/t/ssl_cipher.test
mysys/my_compare.c
sql/ndb_conflict.cc
sql/ndb_conflict.h
sql/ndb_repl_tab.cc
sql/ndb_repl_tab.h
sql/ndb_table_guard.h
sql/signal_handler.cc
storage/ndb/src/kernel/blocks/trpman.cpp
storage/ndb/src/kernel/blocks/trpman.hpp
storage/ndb/src/kernel/vm/CountingPool.cpp
storage/ndb/src/kernel/vm/CountingPool.hpp
storage/ndb/src/kernel/vm/test_context.cpp
storage/ndb/src/kernel/vm/test_context.hpp
storage/ndb/test/run-test/conf-tyr13.cnf
win/build-vs10.bat
win/build-vs10_x64.bat
renamed:
cmd-line-utils/libedit/el_term.h => cmd-line-utils/libedit/el_terminal.h
cmd-line-utils/libedit/key.c => cmd-line-utils/libedit/keymacro.c
cmd-line-utils/libedit/key.h => cmd-line-utils/libedit/keymacro.h
cmd-line-utils/libedit/term.c => cmd-line-utils/libedit/terminal.c
mysql-test/r/partition_not_embedded.result => mysql-test/r/partition_myisam.result
mysql-test/suite/bugs/r/rpl_bug23533.result => mysql-test/suite/binlog/r/binlog_bug23533.result
mysql-test/suite/bugs/r/rpl_bug36391.result => mysql-test/suite/binlog/r/binlog_bug36391.result
mysql-test/suite/bugs/r/rpl_bug37426.result => mysql-test/suite/rpl/r/rpl_bug37426.result
mysql-test/suite/bugs/t/rpl_bug23533.test => mysql-test/suite/binlog/t/binlog_bug23533.test
mysql-test/suite/bugs/t/rpl_bug36391-master.opt => mysql-test/suite/binlog/t/binlog_bug36391-master.opt
mysql-test/suite/bugs/t/rpl_bug36391.test => mysql-test/suite/binlog/t/binlog_bug36391.test
mysql-test/suite/bugs/t/rpl_bug37426.test => mysql-test/suite/rpl/t/rpl_bug37426.test
mysql-test/suite/ndb_rpl/r/ndb_rpl_conflict.result => mysql-test/suite/ndb_rpl/r/ndb_rpl_conflict_basic.result
mysql-test/suite/ndb_rpl/t/ndb_rpl_conflict.test => mysql-test/suite/ndb_rpl/t/ndb_rpl_conflict_basic.test
mysql-test/t/partition_not_embedded.test => mysql-test/t/partition_myisam.test
modified:
.bzrignore
CMakeLists.txt
README
client/Makefile.am
client/client_priv.h
client/mysql.cc
client/mysql_upgrade.c
client/mysqladmin.cc
client/mysqlbinlog.cc
client/mysqlcheck.c
client/mysqldump.c
client/mysqlimport.c
client/mysqlshow.c
client/mysqlslap.c
client/mysqltest.cc
client/readline.cc
client/sql_string.cc
cmd-line-utils/libedit/Makefile.am
cmd-line-utils/libedit/README
cmd-line-utils/libedit/chared.c
cmd-line-utils/libedit/chared.h
cmd-line-utils/libedit/common.c
cmd-line-utils/libedit/config.h
cmd-line-utils/libedit/el.c
cmd-line-utils/libedit/el.h
cmd-line-utils/libedit/emacs.c
cmd-line-utils/libedit/filecomplete.c
cmd-line-utils/libedit/filecomplete.h
cmd-line-utils/libedit/hist.c
cmd-line-utils/libedit/hist.h
cmd-line-utils/libedit/histedit.h
cmd-line-utils/libedit/history.c
cmd-line-utils/libedit/makelist.sh
cmd-line-utils/libedit/map.c
cmd-line-utils/libedit/map.h
cmd-line-utils/libedit/np/strlcpy.c
cmd-line-utils/libedit/np/unvis.c
cmd-line-utils/libedit/np/vis.c
cmd-line-utils/libedit/np/vis.h
cmd-line-utils/libedit/parse.c
cmd-line-utils/libedit/parse.h
cmd-line-utils/libedit/prompt.c
cmd-line-utils/libedit/prompt.h
cmd-line-utils/libedit/read.c
cmd-line-utils/libedit/read.h
cmd-line-utils/libedit/readline.c
cmd-line-utils/libedit/readline/readline.h
cmd-line-utils/libedit/refresh.c
cmd-line-utils/libedit/refresh.h
cmd-line-utils/libedit/search.c
cmd-line-utils/libedit/search.h
cmd-line-utils/libedit/sig.c
cmd-line-utils/libedit/sig.h
cmd-line-utils/libedit/sys.h
cmd-line-utils/libedit/tokenizer.c
cmd-line-utils/libedit/tty.c
cmd-line-utils/libedit/tty.h
cmd-line-utils/libedit/vi.c
configure.in
extra/innochecksum.c
extra/perror.c
extra/replace.c
extra/yassl/src/yassl_error.cpp
extra/yassl/src/yassl_int.cpp
include/Makefile.am
include/decimal.h
include/heap.h
include/m_string.h
include/my_bit.h
include/my_bitmap.h
include/my_getopt.h
include/my_global.h
include/my_stacktrace.h
include/myisam.h
libmysql/CMakeLists.txt
libmysql/Makefile.shared
libmysqld/CMakeLists.txt
libmysqld/Makefile.am
libmysqld/lib_sql.cc
mysql-test/Makefile.am
mysql-test/collections/default.experimental
mysql-test/extra/binlog_tests/binlog.test
mysql-test/extra/rpl_tests/rpl_conflicts.test
mysql-test/extra/rpl_tests/rpl_extra_col_master.test
mysql-test/extra/rpl_tests/rpl_extra_col_slave.test
mysql-test/extra/rpl_tests/rpl_loaddata.test
mysql-test/extra/rpl_tests/rpl_record_compare.test
mysql-test/extra/rpl_tests/rpl_row_basic.test
mysql-test/extra/rpl_tests/rpl_row_tabledefs.test
mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test
mysql-test/extra/rpl_tests/type_conversions.test
mysql-test/include/mix1.inc
mysql-test/include/mtr_check.sql
mysql-test/include/mtr_warnings.sql
mysql-test/include/wait_until_disconnected.inc
mysql-test/lib/My/ConfigFactory.pm
mysql-test/lib/My/Find.pm
mysql-test/lib/My/SafeProcess/safe_process.pl
mysql-test/lib/mtr_cases.pm
mysql-test/lib/mtr_report.pm
mysql-test/mysql-test-run.pl
mysql-test/r/alter_table.result
mysql-test/r/analyse.result
mysql-test/r/archive.result
mysql-test/r/cast.result
mysql-test/r/ctype_cp1250_ch.result
mysql-test/r/ctype_cp1251.result
mysql-test/r/ctype_cp932_binlog_stm.result
mysql-test/r/ctype_eucjpms.result*
mysql-test/r/ctype_sjis.result
mysql-test/r/ctype_ucs.result
mysql-test/r/ddl_i18n_koi8r.result
mysql-test/r/ddl_i18n_utf8.result
mysql-test/r/error_simulation.result
mysql-test/r/events_1.result
mysql-test/r/events_bugs.result
mysql-test/r/events_restart.result
mysql-test/r/explain.result
mysql-test/r/func_group.result
mysql-test/r/func_in.result
mysql-test/r/func_math.result
mysql-test/r/func_time.result
mysql-test/r/gis-rtree.result
mysql-test/r/gis.result
mysql-test/r/group_by.result
mysql-test/r/having.result
mysql-test/r/heap.result
mysql-test/r/insert_select.result
mysql-test/r/key_cache.result
mysql-test/r/loaddata.result
mysql-test/r/lock_sync.result
mysql-test/r/lowercase_table2.result
mysql-test/r/merge.result
mysql-test/r/myisam.result
mysql-test/r/myisampack.result
mysql-test/r/mysqlbinlog.result
mysql-test/r/mysqlbinlog_base64.result
mysql-test/r/mysqlcheck.result
mysql-test/r/mysqldump.result
mysql-test/r/mysqlslap.result
mysql-test/r/mysqltest.result
mysql-test/r/order_by.result
mysql-test/r/packet.result
mysql-test/r/partition.result
mysql-test/r/partition_innodb_plugin.result
mysql-test/r/select_safe.result
mysql-test/r/shm.result
mysql-test/r/show_check.result
mysql-test/r/sp-destruct.result
mysql-test/r/sp-error.result
mysql-test/r/sp-security.result
mysql-test/r/sp.result
mysql-test/r/sp_sync.result
mysql-test/r/sp_trans.result
mysql-test/r/subselect.result
mysql-test/r/trigger-compat.result
mysql-test/r/trigger.result
mysql-test/r/type_float.result
mysql-test/r/type_newdecimal.result
mysql-test/r/type_timestamp.result
mysql-test/r/union.result
mysql-test/r/variables-notembedded.result
mysql-test/r/variables.result
mysql-test/r/view.result
mysql-test/r/view_grant.result
mysql-test/r/xml.result
mysql-test/suite/binlog/r/binlog_base64_flag.result
mysql-test/suite/binlog/r/binlog_row_binlog.result
mysql-test/suite/binlog/r/binlog_stm_binlog.result
mysql-test/suite/binlog/t/binlog_base64_flag.test
mysql-test/suite/binlog/t/binlog_index.test
mysql-test/suite/binlog/t/disabled.def
mysql-test/suite/engines/funcs/r/de_calendar_range.result
mysql-test/suite/engines/funcs/r/in_calendar_2_unique_constraints_duplicate_update.result
mysql-test/suite/engines/funcs/r/in_calendar_pk_constraint_duplicate_update.result
mysql-test/suite/engines/funcs/r/in_calendar_pk_constraint_error.result
mysql-test/suite/engines/funcs/r/in_calendar_pk_constraint_ignore.result
mysql-test/suite/engines/funcs/r/in_calendar_unique_constraint_duplicate_update.result
mysql-test/suite/engines/funcs/r/in_calendar_unique_constraint_error.result
mysql-test/suite/engines/funcs/r/in_calendar_unique_constraint_ignore.result
mysql-test/suite/engines/funcs/r/in_multicolumn_calendar_pk_constraint_duplicate_update.result
mysql-test/suite/engines/funcs/r/in_multicolumn_calendar_pk_constraint_error.result
mysql-test/suite/engines/funcs/r/in_multicolumn_calendar_pk_constraint_ignore.result
mysql-test/suite/engines/funcs/r/in_multicolumn_calendar_unique_constraint_duplicate_update.result
mysql-test/suite/engines/funcs/r/in_multicolumn_calendar_unique_constraint_error.result
mysql-test/suite/engines/funcs/r/in_multicolumn_calendar_unique_constraint_ignore.result
mysql-test/suite/engines/funcs/r/in_multicolumn_number_pk_constraint_duplicate_update.result
mysql-test/suite/engines/funcs/r/up_calendar_range.result
mysql-test/suite/engines/funcs/t/de_calendar_range.test
mysql-test/suite/engines/funcs/t/in_calendar_2_unique_constraints_duplicate_update.test
mysql-test/suite/engines/funcs/t/in_calendar_pk_constraint_duplicate_update.test
mysql-test/suite/engines/funcs/t/in_calendar_pk_constraint_error.test
mysql-test/suite/engines/funcs/t/in_calendar_pk_constraint_ignore.test
mysql-test/suite/engines/funcs/t/in_calendar_unique_constraint_duplicate_update.test
mysql-test/suite/engines/funcs/t/in_calendar_unique_constraint_error.test
mysql-test/suite/engines/funcs/t/in_calendar_unique_constraint_ignore.test
mysql-test/suite/engines/funcs/t/in_multicolumn_calendar_pk_constraint_duplicate_update.test
mysql-test/suite/engines/funcs/t/in_multicolumn_calendar_pk_constraint_error.test
mysql-test/suite/engines/funcs/t/in_multicolumn_calendar_pk_constraint_ignore.test
mysql-test/suite/engines/funcs/t/in_multicolumn_calendar_unique_constraint_duplicate_update.test
mysql-test/suite/engines/funcs/t/in_multicolumn_calendar_unique_constraint_error.test
mysql-test/suite/engines/funcs/t/in_multicolumn_calendar_unique_constraint_ignore.test
mysql-test/suite/engines/funcs/t/in_multicolumn_number_pk_constraint_duplicate_update.test
mysql-test/suite/engines/funcs/t/up_calendar_range.test
mysql-test/suite/engines/iuds/r/insert_year.result
mysql-test/suite/federated/disabled.def
mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result
mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
mysql-test/suite/funcs_2/t/disabled.def
mysql-test/suite/innodb/r/innodb-lock.result
mysql-test/suite/innodb/r/innodb.result
mysql-test/suite/innodb/r/innodb_mysql.result
mysql-test/suite/innodb/t/innodb-lock.test
mysql-test/suite/innodb/t/innodb.test
mysql-test/suite/innodb/t/innodb_bug53756.test
mysql-test/suite/innodb/t/innodb_mysql.test
mysql-test/suite/innodb_plugin/r/innodb-index.result
mysql-test/suite/innodb_plugin/r/innodb-lock.result
mysql-test/suite/innodb_plugin/r/innodb-zip.result
mysql-test/suite/innodb_plugin/r/innodb.result
mysql-test/suite/innodb_plugin/r/innodb_bug52745.result
mysql-test/suite/innodb_plugin/r/innodb_bug53591.result
mysql-test/suite/innodb_plugin/r/innodb_mysql.result
mysql-test/suite/innodb_plugin/t/innodb-autoinc-18274.test
mysql-test/suite/innodb_plugin/t/innodb-autoinc-44030.test
mysql-test/suite/innodb_plugin/t/innodb-autoinc-56228.test
mysql-test/suite/innodb_plugin/t/innodb-autoinc.test
mysql-test/suite/innodb_plugin/t/innodb-create-options.test
mysql-test/suite/innodb_plugin/t/innodb-index.test
mysql-test/suite/innodb_plugin/t/innodb-lock.test
mysql-test/suite/innodb_plugin/t/innodb-zip.test
mysql-test/suite/innodb_plugin/t/innodb.test
mysql-test/suite/innodb_plugin/t/innodb_bug36172.test
mysql-test/suite/innodb_plugin/t/innodb_bug52745.test
mysql-test/suite/innodb_plugin/t/innodb_bug53591.test
mysql-test/suite/innodb_plugin/t/innodb_bug53756.test
mysql-test/suite/innodb_plugin/t/innodb_bug56680.test
mysql-test/suite/innodb_plugin/t/innodb_information_schema.test
mysql-test/suite/innodb_plugin/t/innodb_mysql.test
mysql-test/suite/ndb/r/ndb_alter_table_online2.result
mysql-test/suite/ndb/r/ndb_basic.result
mysql-test/suite/ndb/r/ndb_column_properties.result
mysql-test/suite/ndb/r/ndb_condition_pushdown.result
mysql-test/suite/ndb/r/ndb_index_stat.result
mysql-test/suite/ndb/r/ndb_index_stat_partitions.result
mysql-test/suite/ndb/r/ndb_statistics0.result
mysql-test/suite/ndb/r/ndb_statistics1.result
mysql-test/suite/ndb/r/ndbinfo.result
mysql-test/suite/ndb/r/ndbinfo_dump.result
mysql-test/suite/ndb/t/disabled.def
mysql-test/suite/ndb/t/ndb_alter_table_online2.test
mysql-test/suite/ndb/t/ndb_basic.test
mysql-test/suite/ndb/t/ndb_blob_big.cnf
mysql-test/suite/ndb/t/ndb_column_properties.test
mysql-test/suite/ndb/t/ndb_condition_pushdown.test
mysql-test/suite/ndb/t/ndb_index_stat.test
mysql-test/suite/ndb/t/ndb_index_stat_partitions-master.opt
mysql-test/suite/ndb/t/ndb_index_stat_partitions.test
mysql-test/suite/ndb/t/ndb_partition_error2.test
mysql-test/suite/ndb/t/ndb_statistics.inc
mysql-test/suite/ndb/t/ndb_statistics0.test
mysql-test/suite/ndb/t/ndb_statistics1.test
mysql-test/suite/ndb/t/ndbinfo.test
mysql-test/suite/ndb/t/test_mgmd.test
mysql-test/suite/ndb_big/disabled.def
mysql-test/suite/ndb_rpl/r/ndb_rpl_gap_event.result
mysql-test/suite/ndb_rpl/r/ndb_rpl_rep_error.result
mysql-test/suite/ndb_rpl/t/ndb_rpl_conflict_epoch.test
mysql-test/suite/ndb_rpl/t/ndb_rpl_gap_event.test
mysql-test/suite/ndb_rpl/t/ndb_rpl_rep_error.test
mysql-test/suite/ndb_team/t/disabled.def
mysql-test/suite/rpl/r/rpl_binlog_corruption.result
mysql-test/suite/rpl/r/rpl_binlog_max_cache_size.result
mysql-test/suite/rpl/r/rpl_bug33931.result
mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result
mysql-test/suite/rpl/r/rpl_extra_col_slave_innodb.result
mysql-test/suite/rpl/r/rpl_extra_col_slave_myisam.result
mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result
mysql-test/suite/rpl/r/rpl_idempotency.result
mysql-test/suite/rpl/r/rpl_ignore_table.result
mysql-test/suite/rpl/r/rpl_incident.result
mysql-test/suite/rpl/r/rpl_init_slave_errors.result
mysql-test/suite/rpl/r/rpl_known_bugs_detection.result
mysql-test/suite/rpl/r/rpl_loaddata.result
mysql-test/suite/rpl/r/rpl_loaddata_concurrent.result
mysql-test/suite/rpl/r/rpl_loaddata_fatal.result
mysql-test/suite/rpl/r/rpl_packet.result
mysql-test/suite/rpl/r/rpl_relayspace.result
mysql-test/suite/rpl/r/rpl_rotate_logs.result
mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result
mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result
mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result
mysql-test/suite/rpl/r/rpl_row_colSize.result
mysql-test/suite/rpl/r/rpl_row_conflicts.result
mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result
mysql-test/suite/rpl/r/rpl_row_rec_comp_innodb.result
mysql-test/suite/rpl/r/rpl_row_rec_comp_myisam.result
mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result
mysql-test/suite/rpl/r/rpl_server_id2.result
mysql-test/suite/rpl/r/rpl_skip_error.result
mysql-test/suite/rpl/r/rpl_slave_grp_exec.result
mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result
mysql-test/suite/rpl/r/rpl_slave_load_tmpdir_not_exist.result
mysql-test/suite/rpl/r/rpl_stm_EE_err2.result
mysql-test/suite/rpl/r/rpl_stm_conflicts.result
mysql-test/suite/rpl/r/rpl_temporary_errors.result
mysql-test/suite/rpl/t/disabled.def
mysql-test/suite/rpl/t/rpl_binlog_corruption.test
mysql-test/suite/rpl/t/rpl_binlog_max_cache_size.test
mysql-test/suite/rpl/t/rpl_bug33931.test
mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test
mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test
mysql-test/suite/rpl/t/rpl_idempotency.test
mysql-test/suite/rpl/t/rpl_ignore_table.test
mysql-test/suite/rpl/t/rpl_incident.test
mysql-test/suite/rpl/t/rpl_init_slave_errors.test
mysql-test/suite/rpl/t/rpl_known_bugs_detection.test
mysql-test/suite/rpl/t/rpl_loaddata_fatal.test
mysql-test/suite/rpl/t/rpl_loaddata_map-master.opt
mysql-test/suite/rpl/t/rpl_loaddata_map-slave.opt
mysql-test/suite/rpl/t/rpl_relayspace.test
mysql-test/suite/rpl/t/rpl_rotate_logs.test
mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test
mysql-test/suite/rpl/t/rpl_row_colSize.test
mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test
mysql-test/suite/rpl/t/rpl_row_rec_comp_myisam.test
mysql-test/suite/rpl/t/rpl_row_until.test
mysql-test/suite/rpl/t/rpl_server_id2.test
mysql-test/suite/rpl/t/rpl_skip_error.test
mysql-test/suite/rpl/t/rpl_slave_grp_exec.test
mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test
mysql-test/suite/rpl/t/rpl_slave_load_tmpdir_not_exist.test
mysql-test/suite/rpl/t/rpl_temporary_errors.test
mysql-test/suite/rpl_ndb/r/rpl_ndb_extra_col_slave.result
mysql-test/suite/rpl_ndb/r/rpl_ndb_row_basic.result
mysql-test/suite/rpl_ndb/t/rpl_ndb_extra_col_slave.test
mysql-test/suite/sys_vars/r/max_join_size_func.result
mysql-test/suite/sys_vars/r/sql_big_selects_func.result
mysql-test/suite/sys_vars/r/sql_max_join_size_func.result
mysql-test/suite/sys_vars/t/disabled.def
mysql-test/t/alter_table.test
mysql-test/t/analyse.test
mysql-test/t/archive.test
mysql-test/t/cast.test
mysql-test/t/crash_commit_before.test
mysql-test/t/ctype_cp1250_ch.test
mysql-test/t/ctype_cp1251.test
mysql-test/t/ctype_cp932_binlog_stm.test
mysql-test/t/ctype_eucjpms.test
mysql-test/t/ctype_sjis.test
mysql-test/t/ctype_ucs.test
mysql-test/t/disabled.def
mysql-test/t/error_simulation.test
mysql-test/t/events_1.test
mysql-test/t/events_bugs.test
mysql-test/t/events_restart.test
mysql-test/t/explain.test
mysql-test/t/func_group.test
mysql-test/t/func_in.test
mysql-test/t/func_math.test
mysql-test/t/func_time.test
mysql-test/t/gis-rtree.test
mysql-test/t/gis.test
mysql-test/t/group_by.test
mysql-test/t/having.test
mysql-test/t/heap.test
mysql-test/t/insert_select.test
mysql-test/t/key_cache.test
mysql-test/t/loaddata.test
mysql-test/t/lock_sync.test
mysql-test/t/lowercase_table2.test
mysql-test/t/merge.test
mysql-test/t/myisam.test
mysql-test/t/myisam_crash_before_flush_keys.test
mysql-test/t/myisampack.test
mysql-test/t/mysqlbinlog.test
mysql-test/t/mysqlbinlog_base64.test
mysql-test/t/mysqlcheck.test
mysql-test/t/mysqldump.test
mysql-test/t/mysqlslap.test
mysql-test/t/mysqltest.test
mysql-test/t/order_by.test
mysql-test/t/parser_stack.test
mysql-test/t/partition.test
mysql-test/t/partition_innodb_plugin.test
mysql-test/t/show_check.test
mysql-test/t/sp-destruct.test
mysql-test/t/sp-error.test
mysql-test/t/sp-security.test
mysql-test/t/sp.test
mysql-test/t/sp_sync.test
mysql-test/t/sp_trans.test
mysql-test/t/subselect.test
mysql-test/t/trigger-compat.test
mysql-test/t/type_float.test
mysql-test/t/type_newdecimal.test
mysql-test/t/type_timestamp.test
mysql-test/t/union.test
mysql-test/t/variables-notembedded.test
mysql-test/t/variables.test
mysql-test/t/view.test
mysql-test/t/view_grant.test
mysql-test/t/xml.test
mysql-test/valgrind.supp
mysys/CMakeLists.txt
mysys/Makefile.am
mysys/my_bitmap.c
mysys/my_net.c
mysys/my_symlink.c
mysys/stacktrace.c
plugin/fulltext/plugin_example.c
scripts/make_win_bin_dist
scripts/mysql_install_db.pl.in
scripts/mysql_install_db.sh
sql-common/my_time.c
sql/CMakeLists.txt
sql/Makefile.am
sql/derror.cc
sql/event_db_repository.cc
sql/event_db_repository.h
sql/event_parse_data.cc
sql/event_parse_data.h
sql/events.cc
sql/field.cc
sql/field.h
sql/field_conv.cc
sql/filesort.cc
sql/gen_lex_hash.cc
sql/ha_ndb_index_stat.cc
sql/ha_ndb_index_stat.h
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.h
sql/ha_ndbcluster_binlog.cc
sql/ha_ndbcluster_binlog.h
sql/ha_ndbcluster_cond.cc
sql/ha_ndbinfo.cc
sql/ha_partition.cc
sql/ha_partition.h
sql/handler.cc
sql/handler.h
sql/hostname.cc
sql/item.cc
sql/item.h
sql/item_cmpfunc.cc
sql/item_cmpfunc.h
sql/item_create.cc
sql/item_func.cc
sql/item_strfunc.cc
sql/item_strfunc.h
sql/item_subselect.cc
sql/item_subselect.h
sql/item_sum.cc
sql/item_timefunc.cc
sql/item_timefunc.h
sql/log.cc
sql/log_event.cc
sql/my_decimal.cc
sql/my_decimal.h
sql/mysql_priv.h
sql/mysqld.cc
sql/opt_range.cc
sql/opt_sum.cc
sql/password.c
sql/protocol.cc
sql/rpl_rli.h
sql/set_var.cc
sql/share/errmsg.txt
sql/slave.cc
sql/sp.cc
sql/sp_head.cc
sql/spatial.cc
sql/sql_acl.cc
sql/sql_analyse.cc
sql/sql_base.cc
sql/sql_binlog.cc
sql/sql_cache.cc
sql/sql_class.cc
sql/sql_class.h
sql/sql_connect.cc
sql/sql_db.cc
sql/sql_insert.cc
sql/sql_lex.cc
sql/sql_lex.h
sql/sql_load.cc
sql/sql_parse.cc
sql/sql_partition.cc
sql/sql_plugin.cc
sql/sql_prepare.cc
sql/sql_select.cc
sql/sql_select.h
sql/sql_show.cc
sql/sql_string.cc
sql/sql_string.h
sql/sql_table.cc
sql/sql_trigger.cc
sql/sql_trigger.h
sql/sql_union.cc
sql/sql_view.cc
sql/sql_yacc.yy
sql/table.cc
sql/unireg.cc
sql/unireg.h
storage/archive/azio.c
storage/archive/ha_archive.cc
storage/federated/Makefile.am
storage/heap/ha_heap.cc
storage/heap/ha_heap.h
storage/heap/hp_create.c
storage/heap/hp_info.c
storage/innobase/btr/btr0btr.c
storage/innobase/btr/btr0cur.c
storage/innobase/btr/btr0pcur.c
storage/innobase/buf/buf0buf.c
storage/innobase/dict/dict0load.c
storage/innobase/fsp/fsp0fsp.c
storage/innobase/handler/ha_innodb.cc
storage/innobase/ibuf/ibuf0ibuf.c
storage/innobase/include/btr0pcur.h
storage/innobase/include/btr0pcur.ic
storage/innobase/include/btr0types.h
storage/innobase/include/buf0buf.h
storage/innobase/include/buf0buf.ic
storage/innobase/include/fsp0fsp.h
storage/innobase/include/mtr0mtr.h
storage/innobase/include/rem0rec.h
storage/innobase/include/rem0rec.ic
storage/innobase/include/sync0arr.h
storage/innobase/include/sync0rw.h
storage/innobase/include/sync0rw.ic
storage/innobase/include/sync0sync.h
storage/innobase/include/trx0roll.h
storage/innobase/include/trx0sys.h
storage/innobase/include/trx0sys.ic
storage/innobase/include/trx0trx.h
storage/innobase/include/univ.i
storage/innobase/include/ut0mem.h
storage/innobase/include/ut0mem.ic
storage/innobase/log/log0log.c
storage/innobase/mtr/mtr0mtr.c
storage/innobase/row/row0ins.c
storage/innobase/row/row0purge.c
storage/innobase/row/row0row.c
storage/innobase/row/row0sel.c
storage/innobase/row/row0vers.c
storage/innobase/srv/srv0srv.c
storage/innobase/sync/sync0arr.c
storage/innobase/sync/sync0rw.c
storage/innobase/sync/sync0sync.c
storage/innobase/trx/trx0rec.c
storage/innobase/trx/trx0trx.c
storage/innobase/ut/ut0mem.c
storage/innodb_plugin/ChangeLog
storage/innodb_plugin/btr/btr0btr.c
storage/innodb_plugin/btr/btr0cur.c
storage/innodb_plugin/btr/btr0pcur.c
storage/innodb_plugin/btr/btr0sea.c
storage/innodb_plugin/buf/buf0buddy.c
storage/innodb_plugin/buf/buf0buf.c
storage/innodb_plugin/buf/buf0flu.c
storage/innodb_plugin/buf/buf0lru.c
storage/innodb_plugin/buf/buf0rea.c
storage/innodb_plugin/dict/dict0crea.c
storage/innodb_plugin/dict/dict0dict.c
storage/innodb_plugin/dict/dict0load.c
storage/innodb_plugin/dict/dict0mem.c
storage/innodb_plugin/fsp/fsp0fsp.c
storage/innodb_plugin/ha/ha0ha.c
storage/innodb_plugin/handler/ha_innodb.cc
storage/innodb_plugin/handler/ha_innodb.h
storage/innodb_plugin/handler/handler0alter.cc
storage/innodb_plugin/ibuf/ibuf0ibuf.c
storage/innodb_plugin/include/btr0btr.h
storage/innodb_plugin/include/btr0btr.ic
storage/innodb_plugin/include/btr0cur.h
storage/innodb_plugin/include/btr0cur.ic
storage/innodb_plugin/include/btr0pcur.h
storage/innodb_plugin/include/btr0pcur.ic
storage/innodb_plugin/include/btr0sea.h
storage/innodb_plugin/include/btr0types.h
storage/innodb_plugin/include/buf0buddy.h
storage/innodb_plugin/include/buf0buddy.ic
storage/innodb_plugin/include/buf0buf.h
storage/innodb_plugin/include/buf0buf.ic
storage/innodb_plugin/include/buf0lru.h
storage/innodb_plugin/include/buf0types.h
storage/innodb_plugin/include/dict0mem.h
storage/innodb_plugin/include/fsp0fsp.h
storage/innodb_plugin/include/ha0ha.h
storage/innodb_plugin/include/ha0ha.ic
storage/innodb_plugin/include/mtr0mtr.h
storage/innodb_plugin/include/mtr0mtr.ic
storage/innodb_plugin/include/page0cur.ic
storage/innodb_plugin/include/page0page.h
storage/innodb_plugin/include/page0page.ic
storage/innodb_plugin/include/page0zip.h
storage/innodb_plugin/include/rem0rec.h
storage/innodb_plugin/include/rem0rec.ic
storage/innodb_plugin/include/row0row.h
storage/innodb_plugin/include/row0row.ic
storage/innodb_plugin/include/row0upd.ic
storage/innodb_plugin/include/srv0srv.h
storage/innodb_plugin/include/sync0arr.h
storage/innodb_plugin/include/sync0rw.h
storage/innodb_plugin/include/sync0rw.ic
storage/innodb_plugin/include/sync0sync.h
storage/innodb_plugin/include/trx0sys.h
storage/innodb_plugin/include/trx0sys.ic
storage/innodb_plugin/include/trx0trx.h
storage/innodb_plugin/include/trx0undo.h
storage/innodb_plugin/include/univ.i
storage/innodb_plugin/include/ut0mem.h
storage/innodb_plugin/include/ut0mem.ic
storage/innodb_plugin/log/log0log.c
storage/innodb_plugin/mtr/mtr0mtr.c
storage/innodb_plugin/page/page0cur.c
storage/innodb_plugin/page/page0page.c
storage/innodb_plugin/page/page0zip.c
storage/innodb_plugin/rem/rem0rec.c
storage/innodb_plugin/row/row0ins.c
storage/innodb_plugin/row/row0mysql.c
storage/innodb_plugin/row/row0purge.c
storage/innodb_plugin/row/row0row.c
storage/innodb_plugin/row/row0sel.c
storage/innodb_plugin/row/row0upd.c
storage/innodb_plugin/row/row0vers.c
storage/innodb_plugin/srv/srv0srv.c
storage/innodb_plugin/srv/srv0start.c
storage/innodb_plugin/sync/sync0arr.c
storage/innodb_plugin/sync/sync0rw.c
storage/innodb_plugin/sync/sync0sync.c
storage/innodb_plugin/trx/trx0i_s.c
storage/innodb_plugin/trx/trx0rec.c
storage/innodb_plugin/trx/trx0sys.c
storage/innodb_plugin/trx/trx0trx.c
storage/innodb_plugin/trx/trx0undo.c
storage/innodb_plugin/ut/ut0mem.c
storage/myisam/ft_boolean_search.c
storage/myisam/ft_nlq_search.c
storage/myisam/ft_stopwords.c
storage/myisam/ha_myisam.cc
storage/myisam/ha_myisam.h
storage/myisam/mi_check.c
storage/myisam/mi_close.c
storage/myisam/mi_create.c
storage/myisam/mi_delete_all.c
storage/myisam/mi_packrec.c
storage/myisam/mi_preload.c
storage/myisam/mi_range.c
storage/myisam/mi_test1.c
storage/myisam/mi_update.c
storage/myisam/mi_write.c
storage/myisam/myisamdef.h
storage/myisam/sp_test.c
storage/myisammrg/ha_myisammrg.cc
storage/myisammrg/ha_myisammrg.h
storage/ndb/CMakeLists.txt
storage/ndb/cmake/os/WindowsCache.cmake
storage/ndb/include/debugger/EventLogger.hpp
storage/ndb/include/debugger/SignalLoggerManager.hpp
storage/ndb/include/kernel/BlockNumbers.h
storage/ndb/include/kernel/GlobalSignalNumbers.h
storage/ndb/include/kernel/NodeInfo.hpp
storage/ndb/include/kernel/kernel_types.h
storage/ndb/include/kernel/ndb_limits.h
storage/ndb/include/kernel/signaldata/CloseComReqConf.hpp
storage/ndb/include/kernel/signaldata/DisconnectRep.hpp
storage/ndb/include/kernel/signaldata/EnableCom.hpp
storage/ndb/include/kernel/signaldata/NodeStateSignalData.hpp
storage/ndb/include/kernel/signaldata/RouteOrd.hpp
storage/ndb/include/kernel/signaldata/SignalDroppedRep.hpp
storage/ndb/include/kernel/signaldata/SumaImpl.hpp
storage/ndb/include/kernel/signaldata/TuxBound.hpp
storage/ndb/include/mgmapi/mgmapi_config_parameters.h
storage/ndb/include/ndb_config.h.in
storage/ndb/include/ndb_global.h
storage/ndb/include/ndb_types.h.in
storage/ndb/include/ndb_version.h.in
storage/ndb/include/ndbapi/NdbIndexStat.hpp
storage/ndb/include/transporter/TransporterCallback.hpp
storage/ndb/include/transporter/TransporterDefinitions.hpp
storage/ndb/include/transporter/TransporterRegistry.hpp
storage/ndb/include/util/BaseString.hpp
storage/ndb/include/util/Bitmask.hpp
storage/ndb/include/util/NdbTap.hpp
storage/ndb/ndb_configure.cmake
storage/ndb/ndb_configure.m4
storage/ndb/src/common/debugger/BlockNames.cpp
storage/ndb/src/common/debugger/EventLogger.cpp
storage/ndb/src/common/debugger/SignalLoggerManager.cpp
storage/ndb/src/common/debugger/signaldata/SignalNames.cpp
storage/ndb/src/common/transporter/Packer.cpp
storage/ndb/src/common/transporter/TCP_Transporter.cpp
storage/ndb/src/common/transporter/TCP_Transporter.hpp
storage/ndb/src/common/transporter/Transporter.cpp
storage/ndb/src/common/transporter/Transporter.hpp
storage/ndb/src/common/transporter/TransporterRegistry.cpp
storage/ndb/src/common/util/BaseString.cpp
storage/ndb/src/common/util/Bitmask.cpp
storage/ndb/src/kernel/Makefile.am
storage/ndb/src/kernel/SimBlockList.cpp
storage/ndb/src/kernel/blocks/CMakeLists.txt
storage/ndb/src/kernel/blocks/ERROR_codes.txt
storage/ndb/src/kernel/blocks/LocalProxy.cpp
storage/ndb/src/kernel/blocks/LocalProxy.hpp
storage/ndb/src/kernel/blocks/Makefile.am
storage/ndb/src/kernel/blocks/backup/Backup.cpp
storage/ndb/src/kernel/blocks/backup/BackupInit.cpp
storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp
storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp
storage/ndb/src/kernel/blocks/dbacc/DbaccInit.cpp
storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp
storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp
storage/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp
storage/ndb/src/kernel/blocks/dbinfo/Dbinfo.cpp
storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp
storage/ndb/src/kernel/blocks/dblqh/DblqhCommon.cpp
storage/ndb/src/kernel/blocks/dblqh/DblqhCommon.hpp
storage/ndb/src/kernel/blocks/dblqh/DblqhInit.cpp
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp
storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp
storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp
storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp
storage/ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp
storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp
storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp
storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp
storage/ndb/src/kernel/blocks/dbtux/DbtuxProxy.cpp
storage/ndb/src/kernel/blocks/dbtux/DbtuxProxy.hpp
storage/ndb/src/kernel/blocks/dbtux/DbtuxStat.cpp
storage/ndb/src/kernel/blocks/lgman.cpp
storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp
storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp
storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp
storage/ndb/src/kernel/blocks/qmgr/QmgrInit.cpp
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
storage/ndb/src/kernel/blocks/suma/Suma.cpp
storage/ndb/src/kernel/blocks/suma/Suma.hpp
storage/ndb/src/kernel/blocks/suma/SumaInit.cpp
storage/ndb/src/kernel/blocks/trix/Trix.cpp
storage/ndb/src/kernel/error/ErrorReporter.cpp
storage/ndb/src/kernel/ndbd.cpp
storage/ndb/src/kernel/vm/ArrayPool.hpp
storage/ndb/src/kernel/vm/CMakeLists.txt
storage/ndb/src/kernel/vm/Configuration.cpp
storage/ndb/src/kernel/vm/DLList.hpp
storage/ndb/src/kernel/vm/DynArr256.cpp
storage/ndb/src/kernel/vm/DynArr256.hpp
storage/ndb/src/kernel/vm/Emulator.cpp
storage/ndb/src/kernel/vm/Emulator.hpp
storage/ndb/src/kernel/vm/GlobalData.hpp
storage/ndb/src/kernel/vm/Makefile.am
storage/ndb/src/kernel/vm/Ndbinfo.hpp
storage/ndb/src/kernel/vm/Pool.cpp
storage/ndb/src/kernel/vm/Pool.hpp
storage/ndb/src/kernel/vm/SLList.hpp
storage/ndb/src/kernel/vm/SectionReader.cpp
storage/ndb/src/kernel/vm/SimplePropertiesSection.cpp
storage/ndb/src/kernel/vm/SimulatedBlock.cpp
storage/ndb/src/kernel/vm/SimulatedBlock.hpp
storage/ndb/src/kernel/vm/TransporterCallback.cpp
storage/ndb/src/kernel/vm/TransporterCallbackKernel.hpp
storage/ndb/src/kernel/vm/dummy_nonmt.cpp
storage/ndb/src/kernel/vm/mt.cpp
storage/ndb/src/kernel/vm/mt.hpp
storage/ndb/src/kernel/vm/mt_thr_config.cpp
storage/ndb/src/kernel/vm/mt_thr_config.hpp
storage/ndb/src/kernel/vm/ndbd_malloc_impl.cpp
storage/ndb/src/kernel/vm/ndbd_malloc_impl.hpp
storage/ndb/src/mgmsrv/ConfigInfo.cpp
storage/ndb/src/mgmsrv/MgmtSrvr.cpp
storage/ndb/src/mgmsrv/Services.cpp
storage/ndb/src/ndbapi/NdbBlob.cpp
storage/ndb/src/ndbapi/NdbDictionary.cpp
storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp
storage/ndb/src/ndbapi/NdbIndexStat.cpp
storage/ndb/src/ndbapi/NdbIndexStatImpl.cpp
storage/ndb/src/ndbapi/NdbIndexStatImpl.hpp
storage/ndb/src/ndbapi/TransporterFacade.cpp
storage/ndb/src/ndbapi/TransporterFacade.hpp
storage/ndb/src/ndbapi/ndberror.c
storage/ndb/test/include/NDBT_Test.hpp
storage/ndb/test/include/NdbRestarter.hpp
storage/ndb/test/include/NdbRestarts.hpp
storage/ndb/test/ndbapi/CMakeLists.txt
storage/ndb/test/ndbapi/flexAsynch.cpp
storage/ndb/test/ndbapi/testBackup.cpp
storage/ndb/test/ndbapi/testBlobs.cpp
storage/ndb/test/ndbapi/testDict.cpp
storage/ndb/test/ndbapi/testIndexStat.cpp
storage/ndb/test/ndbapi/testMgm.cpp
storage/ndb/test/ndbapi/testNodeRestart.cpp
storage/ndb/test/ndbapi/testScan.cpp
storage/ndb/test/ndbapi/testSystemRestart.cpp
storage/ndb/test/ndbapi/test_event.cpp
storage/ndb/test/run-test/CMakeLists.txt
storage/ndb/test/run-test/atrt-backtrace.sh
storage/ndb/test/run-test/atrt.hpp
storage/ndb/test/run-test/command.cpp
storage/ndb/test/run-test/conf-daily-perf.cnf
storage/ndb/test/run-test/conf-upgrade.cnf
storage/ndb/test/run-test/daily-basic-tests.txt
storage/ndb/test/run-test/daily-perf-tests.txt
storage/ndb/test/run-test/db.cpp
storage/ndb/test/run-test/files.cpp
storage/ndb/test/run-test/main.cpp
storage/ndb/test/run-test/setup.cpp
storage/ndb/test/run-test/test-tests.txt
storage/ndb/test/src/HugoTransactions.cpp
storage/ndb/test/src/NDBT_Test.cpp
storage/ndb/test/src/NdbRestarter.cpp
storage/ndb/test/src/NdbRestarts.cpp
storage/ndb/tools/ndb_index_stat.cpp
storage/ndb/tools/ndbinfo_sql.cpp
strings/decimal.c
strings/xml.c
support-files/mysql.spec.sh
tests/mysql_client_test.c
unittest/mysys/bitmap-t.c
vio/viosocket.c
cmd-line-utils/libedit/el_terminal.h
cmd-line-utils/libedit/keymacro.c
cmd-line-utils/libedit/keymacro.h
cmd-line-utils/libedit/terminal.c
mysql-test/r/partition_myisam.result
mysql-test/suite/binlog/r/binlog_bug23533.result
mysql-test/suite/binlog/r/binlog_bug36391.result
mysql-test/suite/rpl/r/rpl_bug37426.result
mysql-test/suite/binlog/t/binlog_bug23533.test
mysql-test/suite/binlog/t/binlog_bug36391.test
mysql-test/suite/rpl/t/rpl_bug37426.test
mysql-test/suite/ndb_rpl/r/ndb_rpl_conflict_basic.result
mysql-test/suite/ndb_rpl/t/ndb_rpl_conflict_basic.test
mysql-test/t/partition_myisam.test
=== modified file 'storage/ndb/include/ndb_version.h.in'
--- a/storage/ndb/include/ndb_version.h.in 2012-02-22 13:19:55 +0000
+++ b/storage/ndb/include/ndb_version.h.in 2012-02-22 14:03:58 +0000
@@ -737,4 +737,23 @@ ndbd_128_instances_address(Uint32 x)
return x >= NDBD_128_INSTANCES_ADDRESS_72;
}
+#define NDBD_FIXED_LOOKUP_QUERY_ABORT_72 NDB_MAKE_VERSION(7,2,5)
+
+static
+inline
+int
+ndbd_fixed_lookup_query_abort(Uint32 x)
+{
+ const Uint32 major = (x >> 16) & 0xFF;
+ const Uint32 minor = (x >> 8) & 0xFF;
+
+ if (major == 7 && minor < 2)
+ {
+ // Only experimental support of SPJ pre 7.2.0.
+ // Assume we support 'fixed-abort' as we want it tested.
+ return true;
+ }
+ return x >= NDBD_FIXED_LOOKUP_QUERY_ABORT_72;
+}
+
#endif
=== modified file 'storage/ndb/src/kernel/blocks/dbspj/DbspjMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dbspj/DbspjMain.cpp 2011-12-13 12:20:00 +0000
+++ b/storage/ndb/src/kernel/blocks/dbspj/DbspjMain.cpp 2012-02-22 14:03:58 +0000
@@ -18,6 +18,7 @@
#define DBSPJ_C
#include "Dbspj.hpp"
+#include <ndb_version.h>
#include <SectionReader.hpp>
#include <signaldata/LqhKey.hpp>
#include <signaldata/QueryTree.hpp>
@@ -1685,6 +1686,22 @@ Dbspj::abort(Signal* signal, Ptr<Request
{
jam();
+ /**
+ * Need to handle online upgrade as the protocoll for
+ * signaling errors for Lookup-request changed in 7.2.5.
+ * If API-version is <= 7.2.4 we increase the severity
+ * of the error to a 'NodeFailure' as this is the only
+ * errorcode for which the API will stop further
+ * 'outstanding-counting' in pre 7.2.5.
+ * (Starting from 7.2.5 we will stop counting for all 'hard errors')
+ */
+ if (requestPtr.p->isLookup() &&
+ !ndbd_fixed_lookup_query_abort(getNodeInfo(getResultRef(requestPtr)).m_version))
+ {
+ jam();
+ errCode = DbspjErr::NodeFailure;
+ }
+
if ((requestPtr.p->m_state & Request::RS_ABORTING) != 0)
{
jam();
@@ -3060,6 +3077,23 @@ Dbspj::lookup_send(Signal* signal,
getSection(handle.m_ptr[1], attrInfoPtrI);
handle.m_cnt = 2;
+ /**
+ * Inject error to test LQHKEYREF handling:
+ * Tampering with tableSchemaVersion such that LQH will
+ * return LQHKEYREF('1227: Invalid schema version')
+ * May happen for different treeNodes in the request:
+ * - 17030: Fail on any lookup_send()
+ * - 17031: Fail on lookup_send() if 'isLeaf'
+ * - 17032: Fail on lookup_send() if treeNode not root
+ */
+ if (ERROR_INSERTED_CLEAR(17030) ||
+ (treeNodePtr.p->isLeaf() && ERROR_INSERTED_CLEAR(17031)) ||
+ (treeNodePtr.p->m_parentPtrI != RNIL && ERROR_INSERTED_CLEAR(17032)))
+ {
+ jam();
+ req->tableSchemaVersion += (1 << 16); // Provoke 'Invalid schema version'
+ }
+
#if defined DEBUG_LQHKEYREQ
ndbout_c("LQHKEYREQ to %x", ref);
printLQHKEYREQ(stdout, signal->getDataPtrSend(),
@@ -3081,6 +3115,22 @@ Dbspj::lookup_send(Signal* signal,
c_Counters.incr_counter(CI_REMOTE_READS_SENT, 1);
}
+ /**
+ * Test execution terminated due to 'NodeFailure' which
+ * may happen for different treeNodes in the request:
+ * - 17020: Fail on any lookup_send()
+ * - 17021: Fail on lookup_send() if 'isLeaf'
+ * - 17022: Fail on lookup_send() if treeNode not root
+ */
+ if (ERROR_INSERTED_CLEAR(17020) ||
+ (treeNodePtr.p->isLeaf() && ERROR_INSERTED_CLEAR(17021)) ||
+ (treeNodePtr.p->m_parentPtrI != RNIL && ERROR_INSERTED_CLEAR(17022)))
+ {
+ jam();
+ releaseSections(handle);
+ abort(signal, requestPtr, DbspjErr::NodeFailure);
+ return;
+ }
if (unlikely(!c_alive_nodes.get(Tnode)))
{
jam();
@@ -3140,14 +3190,18 @@ Dbspj::lookup_execTRANSID_AI(Signal* sig
LocalArenaPoolImpl pool(requestPtr.p->m_arena, m_dependency_map_pool);
Local_dependency_map list(pool, treeNodePtr.p->m_dependent_nodes);
Dependency_map::ConstDataBufferIterator it;
+
for (list.first(it); !it.isNull(); list.next(it))
{
- jam();
- Ptr<TreeNode> childPtr;
- m_treenode_pool.getPtr(childPtr, * it.data);
- ndbrequire(childPtr.p->m_info != 0&&childPtr.p->m_info->m_parent_row!=0);
- (this->*(childPtr.p->m_info->m_parent_row))(signal,
- requestPtr, childPtr,rowRef);
+ if (likely(requestPtr.p->m_state & Request::RS_RUNNING))
+ {
+ jam();
+ Ptr<TreeNode> childPtr;
+ m_treenode_pool.getPtr(childPtr, * it.data);
+ ndbrequire(childPtr.p->m_info!=0 && childPtr.p->m_info->m_parent_row!=0);
+ (this->*(childPtr.p->m_info->m_parent_row))(signal,
+ requestPtr, childPtr,rowRef);
+ }
}
}
ndbrequire(!(requestPtr.p->isLookup() && treeNodePtr.p->isLeaf()));
@@ -3184,85 +3238,89 @@ Dbspj::lookup_execLQHKEYREF(Signal* sign
c_Counters.incr_counter(CI_READS_NOT_FOUND, 1);
- if (requestPtr.p->isLookup())
+ DEBUG("lookup_execLQHKEYREF, errorCode:" << errCode);
+
+ /**
+ * If Request is still actively running: API need to
+ * be informed about error.
+ * Error code may either indicate a 'hard error' which should
+ * terminate the query execution, or a 'soft error' which
+ * should be signaled NDBAPI, and execution continued.
+ */
+ if (likely(requestPtr.p->m_state & Request::RS_RUNNING))
{
- jam();
+ switch(errCode){
+ case 626: // 'Soft error' : Row not found
+ case 899: // 'Soft error' : Interpreter_exit_nok
- /* CONF/REF not requested for lookup-Leaf: */
- ndbrequire(!treeNodePtr.p->isLeaf());
+ jam();
+ /**
+ * Only Lookup-request need to send TCKEYREF...
+ */
+ if (requestPtr.p->isLookup())
+ {
+ jam();
- /**
- * Scan-request does not need to
- * send TCKEYREF...
- */
- /**
- * Return back to api...
- * NOTE: assume that signal is tampered with
- */
- Uint32 resultRef = treeNodePtr.p->m_lookup_data.m_api_resultRef;
- Uint32 resultData = treeNodePtr.p->m_lookup_data.m_api_resultData;
- TcKeyRef* ref = (TcKeyRef*)signal->getDataPtr();
- ref->connectPtr = resultData;
- ref->transId[0] = requestPtr.p->m_transId[0];
- ref->transId[1] = requestPtr.p->m_transId[1];
- ref->errorCode = errCode;
- ref->errorData = 0;
+ /* CONF/REF not requested for lookup-Leaf: */
+ ndbrequire(!treeNodePtr.p->isLeaf());
- DEBUG("lookup_execLQHKEYREF, errorCode:" << errCode);
+ /**
+ * Return back to api...
+ * NOTE: assume that signal is tampered with
+ */
+ Uint32 resultRef = treeNodePtr.p->m_lookup_data.m_api_resultRef;
+ Uint32 resultData = treeNodePtr.p->m_lookup_data.m_api_resultData;
+ TcKeyRef* ref = (TcKeyRef*)signal->getDataPtr();
+ ref->connectPtr = resultData;
+ ref->transId[0] = requestPtr.p->m_transId[0];
+ ref->transId[1] = requestPtr.p->m_transId[1];
+ ref->errorCode = errCode;
+ ref->errorData = 0;
- sendTCKEYREF(signal, resultRef, requestPtr.p->m_senderRef);
+ sendTCKEYREF(signal, resultRef, requestPtr.p->m_senderRef);
- if (treeNodePtr.p->m_bits & TreeNode::T_UNIQUE_INDEX_LOOKUP)
- {
- /**
- * If this is a "leaf" unique index lookup
- * emit extra TCKEYCONF as would have been done with ordinary
- * operation
- */
- LocalArenaPoolImpl pool(requestPtr.p->m_arena, m_dependency_map_pool);
- Local_dependency_map list(pool, treeNodePtr.p->m_dependent_nodes);
- Dependency_map::ConstDataBufferIterator it;
- ndbrequire(list.first(it));
- ndbrequire(list.getSize() == 1); // should only be 1 child
- Ptr<TreeNode> childPtr;
- m_treenode_pool.getPtr(childPtr, * it.data);
- if (childPtr.p->m_bits & TreeNode::T_LEAF)
- {
- jam();
- Uint32 resultRef = childPtr.p->m_lookup_data.m_api_resultRef;
- Uint32 resultData = childPtr.p->m_lookup_data.m_api_resultData;
- TcKeyConf* conf = (TcKeyConf*)signal->getDataPtr();
- conf->apiConnectPtr = RNIL;
- conf->confInfo = 0;
- conf->gci_hi = 0;
- TcKeyConf::setNoOfOperations(conf->confInfo, 1);
- conf->transId1 = requestPtr.p->m_transId[0];
- conf->transId2 = requestPtr.p->m_transId[1];
- conf->operations[0].apiOperationPtr = resultData;
- conf->operations[0].attrInfoLen =
- TcKeyConf::DirtyReadBit |getOwnNodeId();
- sendTCKEYCONF(signal, TcKeyConf::StaticLength + 2, resultRef, requestPtr.p->m_senderRef);
- }
- }
- }
- else
- {
- jam();
- switch(errCode){
- case 626: // Row not found
- case 899: // Interpreter_exit_nok
- jam();
+ if (treeNodePtr.p->m_bits & TreeNode::T_UNIQUE_INDEX_LOOKUP)
+ {
+ /**
+ * If this is a "leaf" unique index lookup
+ * emit extra TCKEYCONF as would have been done with ordinary
+ * operation
+ */
+ LocalArenaPoolImpl pool(requestPtr.p->m_arena, m_dependency_map_pool);
+ Local_dependency_map list(pool, treeNodePtr.p->m_dependent_nodes);
+ Dependency_map::ConstDataBufferIterator it;
+ ndbrequire(list.first(it));
+ ndbrequire(list.getSize() == 1); // should only be 1 child
+ Ptr<TreeNode> childPtr;
+ m_treenode_pool.getPtr(childPtr, * it.data);
+ if (childPtr.p->m_bits & TreeNode::T_LEAF)
+ {
+ jam();
+ Uint32 resultRef = childPtr.p->m_lookup_data.m_api_resultRef;
+ Uint32 resultData = childPtr.p->m_lookup_data.m_api_resultData;
+ TcKeyConf* conf = (TcKeyConf*)signal->getDataPtr();
+ conf->apiConnectPtr = RNIL;
+ conf->confInfo = 0;
+ conf->gci_hi = 0;
+ TcKeyConf::setNoOfOperations(conf->confInfo, 1);
+ conf->transId1 = requestPtr.p->m_transId[0];
+ conf->transId2 = requestPtr.p->m_transId[1];
+ conf->operations[0].apiOperationPtr = resultData;
+ conf->operations[0].attrInfoLen =
+ TcKeyConf::DirtyReadBit |getOwnNodeId();
+ sendTCKEYCONF(signal, TcKeyConf::StaticLength + 2, resultRef, requestPtr.p->m_senderRef);
+ }
+ }
+ } // isLookup()
break;
- default:
+
+ default: // 'Hard error' : abort query
jam();
abort(signal, requestPtr, errCode);
}
}
- Uint32 cnt = 2;
- if (treeNodePtr.p->isLeaf()) // Can't be a lookup-Leaf, asserted above
- cnt = 1;
-
+ Uint32 cnt = (treeNodePtr.p->isLeaf()) ? 1 : 2;
ndbassert(requestPtr.p->m_lookup_node_data[Tnode] >= cnt);
requestPtr.p->m_lookup_node_data[Tnode] -= cnt;
@@ -3332,7 +3390,7 @@ Dbspj::lookup_parent_row(Signal* signal,
* 2) compute hash (normally TC)
* 3) get node for row (normally TC)
*/
- Uint32 err;
+ Uint32 err = 0;
const LqhKeyReq* src = (LqhKeyReq*)treeNodePtr.p->m_lookup_data.m_lqhKeyReq;
const Uint32 tableId = LqhKeyReq::getTableId(src->tableSchemaVersion);
const Uint32 corrVal = rowRef.m_src_correlation;
@@ -3341,6 +3399,22 @@ Dbspj::lookup_parent_row(Signal* signal,
do
{
+ /**
+ * Test execution terminated due to 'OutOfQueryMemory' which
+ * may happen multiple places below:
+ * - 17040: Fail on any lookup_parent_row()
+ * - 17041: Fail on lookup_parent_row() if 'isLeaf'
+ * - 17042: Fail on lookup_parent_row() if treeNode not root
+ */
+ if (ERROR_INSERTED_CLEAR(17040) ||
+ (treeNodePtr.p->isLeaf() && ERROR_INSERTED_CLEAR(17041)) ||
+ (treeNodePtr.p->m_parentPtrI != RNIL && ERROR_INSERTED_CLEAR(17042)))
+ {
+ jam();
+ err = DbspjErr::OutOfQueryMemory;
+ break;
+ }
+
Uint32 ptrI = RNIL;
if (treeNodePtr.p->m_bits & TreeNode::T_KEYINFO_CONSTRUCTED)
{
@@ -3512,7 +3586,10 @@ Dbspj::lookup_parent_row(Signal* signal,
return;
} while (0);
- ndbrequire(false);
+ // If we fail it will always be a 'hard error' -> abort
+ ndbrequire(err);
+ jam();
+ abort(signal, requestPtr, err);
}
void
@@ -4121,19 +4198,22 @@ Dbspj::scanFrag_execTRANSID_AI(Signal* s
jam();
treeNodePtr.p->m_scanfrag_data.m_rows_received++;
- LocalArenaPoolImpl pool(requestPtr.p->m_arena, m_dependency_map_pool);
- Local_dependency_map list(pool, treeNodePtr.p->m_dependent_nodes);
- Dependency_map::ConstDataBufferIterator it;
-
{
+ LocalArenaPoolImpl pool(requestPtr.p->m_arena, m_dependency_map_pool);
+ Local_dependency_map list(pool, treeNodePtr.p->m_dependent_nodes);
+ Dependency_map::ConstDataBufferIterator it;
+
for (list.first(it); !it.isNull(); list.next(it))
{
- jam();
- Ptr<TreeNode> childPtr;
- m_treenode_pool.getPtr(childPtr, * it.data);
- ndbrequire(childPtr.p->m_info != 0&&childPtr.p->m_info->m_parent_row!=0);
- (this->*(childPtr.p->m_info->m_parent_row))(signal,
- requestPtr, childPtr,rowRef);
+ if (likely(requestPtr.p->m_state & Request::RS_RUNNING))
+ {
+ jam();
+ Ptr<TreeNode> childPtr;
+ m_treenode_pool.getPtr(childPtr, * it.data);
+ ndbrequire(childPtr.p->m_info!=0 && childPtr.p->m_info->m_parent_row!=0);
+ (this->*(childPtr.p->m_info->m_parent_row))(signal,
+ requestPtr, childPtr,rowRef);
+ }
}
}
@@ -5454,19 +5534,22 @@ Dbspj::scanIndex_execTRANSID_AI(Signal*
{
jam();
- LocalArenaPoolImpl pool(requestPtr.p->m_arena, m_dependency_map_pool);
- Local_dependency_map list(pool, treeNodePtr.p->m_dependent_nodes);
- Dependency_map::ConstDataBufferIterator it;
-
{
+ LocalArenaPoolImpl pool(requestPtr.p->m_arena, m_dependency_map_pool);
+ Local_dependency_map list(pool, treeNodePtr.p->m_dependent_nodes);
+ Dependency_map::ConstDataBufferIterator it;
+
for (list.first(it); !it.isNull(); list.next(it))
{
- jam();
- Ptr<TreeNode> childPtr;
- m_treenode_pool.getPtr(childPtr, * it.data);
- ndbrequire(childPtr.p->m_info != 0&&childPtr.p->m_info->m_parent_row!=0);
- (this->*(childPtr.p->m_info->m_parent_row))(signal,
- requestPtr, childPtr,rowRef);
+ if (likely(requestPtr.p->m_state & Request::RS_RUNNING))
+ {
+ jam();
+ Ptr<TreeNode> childPtr;
+ m_treenode_pool.getPtr(childPtr, * it.data);
+ ndbrequire(childPtr.p->m_info != 0&&childPtr.p->m_info->m_parent_row!=0);
+ (this->*(childPtr.p->m_info->m_parent_row))(signal,
+ requestPtr, childPtr,rowRef);
+ }
}
}
=== modified file 'storage/ndb/src/ndbapi/NdbQueryOperation.cpp'
--- a/storage/ndb/src/ndbapi/NdbQueryOperation.cpp 2011-11-09 13:38:13 +0000
+++ b/storage/ndb/src/ndbapi/NdbQueryOperation.cpp 2012-02-22 14:03:58 +0000
@@ -56,6 +56,7 @@ static const bool useDoubleBuffers = tru
/* Various error codes that are not specific to NdbQuery. */
static const int Err_TupleNotFound = 626;
+static const int Err_FalsePredicate = 899;
static const int Err_MemoryAlloc = 4000;
static const int Err_SendFailed = 4002;
static const int Err_FunctionNotImplemented = 4003;
@@ -225,12 +226,24 @@ public:
void incrOutstandingResults(Int32 delta)
{
+ if (traceSignals) {
+ ndbout << "incrOutstandingResults: " << m_outstandingResults
+ << ", with: " << delta
+ << endl;
+ }
m_outstandingResults += delta;
+ assert(!(m_confReceived && m_outstandingResults<0));
}
- void clearOutstandingResults()
+ void throwRemainingResults()
{
+ if (traceSignals) {
+ ndbout << "throwRemainingResults: " << m_outstandingResults
+ << endl;
+ }
m_outstandingResults = 0;
+ m_confReceived = true;
+ postFetchRelease();
}
void setConfReceived(Uint32 tcPtrI);
@@ -4977,23 +4990,34 @@ NdbQueryOperationImpl::execTCKEYREF(cons
NdbRootFragment& rootFrag = getQuery().m_rootFrags[0];
- if (ref->errorCode != DbspjErr::NodeFailure)
+ /**
+ * Error may be either a 'soft' or a 'hard' error.
+ * 'Soft error' are regarded 'informational', and we are
+ * allowed to continue execution of the query. A 'hard error'
+ * will terminate query, close comminication, and further
+ * incomming signals to this NdbReceiver will be discarded.
+ */
+ switch (ref->errorCode)
{
- // Compensate for children results not produced.
- // (doSend() assumed all child results to be materialized)
- Uint32 cnt = 0;
- cnt += 1; // self
+ case Err_TupleNotFound: // 'Soft error' : Row not found
+ case Err_FalsePredicate: // 'Soft error' : Interpreter_exit_nok
+ {
+ /**
+ * Need to update 'outstanding' count:
+ * Compensate for children results not produced.
+ * (doSend() assumed all child results to be materialized)
+ */
+ Uint32 cnt = 1; // self
cnt += getNoOfDescendantOperations();
if (getNoOfChildOperations() > 0)
{
cnt += getNoOfLeafOperations();
}
rootFrag.incrOutstandingResults(- Int32(cnt));
+ break;
}
- else
- {
- // consider frag-batch complete
- rootFrag.clearOutstandingResults();
+ default: // 'Hard error':
+ rootFrag.throwRemainingResults(); // Terminate receive -> complete
}
bool ret = false;
@@ -5004,7 +5028,6 @@ NdbQueryOperationImpl::execTCKEYREF(cons
if (traceSignals) {
ndbout << "NdbQueryOperationImpl::execTCKEYREF(): returns:" << ret
- << ", resultStream= {" << rootFrag.getResultStream(*this) << "}"
<< ", *this=" << *this << endl;
}
return ret;
@@ -5283,10 +5306,6 @@ NdbOut& operator<<(NdbOut& out, const Nd
}
out << " m_queryImpl: " << &op.m_queryImpl;
out << " m_operationDef: " << &op.m_operationDef;
- for(Uint32 i = 0; i<op.m_queryImpl.getRootFragCount(); i++){
- NdbRootFragment& rootFrag = op.m_queryImpl.m_rootFrags[i];
- out << " m_resultStream[" << i << "]{" << rootFrag.getResultStream(op) << "}";
- }
out << " m_isRowNull " << op.m_isRowNull;
out << " ]";
return out;
=== modified file 'storage/ndb/src/ndbapi/Ndbif.cpp'
--- a/storage/ndb/src/ndbapi/Ndbif.cpp 2011-09-09 13:13:52 +0000
+++ b/storage/ndb/src/ndbapi/Ndbif.cpp 2012-02-22 14:03:58 +0000
@@ -350,6 +350,7 @@ Ndb::handleReceivedSignal(const NdbApiSi
else
{
tCon = lookupTransactionFromOperation(keyConf);
+ if (tCon == NULL) goto InvalidSignal;
}
const BlockReference aTCRef = aSignal->theSendersBlockRef;
=== modified file 'storage/ndb/test/ndbapi/testSpj.cpp'
--- a/storage/ndb/test/ndbapi/testSpj.cpp 2011-12-13 12:20:00 +0000
+++ b/storage/ndb/test/ndbapi/testSpj.cpp 2012-02-22 14:03:58 +0000
@@ -31,7 +31,7 @@ static int faultToInject = 0;
enum faultsToInject {
FI_START = 17001,
- FI_END = 17020
+ FI_END = 17042
};
int
@@ -101,7 +101,7 @@ runLookupJoin(NDBT_Context* ctx, NDBT_St
int
runLookupJoinError(NDBT_Context* ctx, NDBT_Step* step){
int loops = ctx->getNumLoops();
- int joinlevel = ctx->getProperty("JoinLevel", 3);
+ int joinlevel = ctx->getProperty("JoinLevel", 8);
int records = ctx->getNumRecords();
int until_stopped = ctx->getProperty("UntilStopped", (Uint32)0);
Uint32 stepNo = step->getStepNo();
@@ -113,7 +113,12 @@ runLookupJoinError(NDBT_Context* ctx, ND
HugoQueries hugoTrans(*query);
NdbRestarter restarter;
- int lookupFaults[] = {17001, 17005, 17006, 17007, 17008};
+ int lookupFaults[] = {
+ 17001, 17005, 17006, 17007, 17008,
+ 17020, 17021, 17022, // lookup_send() encounter dead node -> NodeFailure
+ 17030, 17031, 17032, // LQHKEYREQ reply is LQHKEYREF('Invalid..')
+ 17040, 17041, 17042 // lookup_parent_row -> OutOfQueryMemory
+ };
loops = faultToInject ? 1 : sizeof(lookupFaults)/sizeof(int);
while ((i<loops || until_stopped) && !ctx->isTestStopped())
@@ -124,20 +129,23 @@ runLookupJoinError(NDBT_Context* ctx, ND
int randomId = rand() % restarter.getNumDbNodes();
int nodeId = restarter.getDbNodeId(randomId);
- ndbout << endl<< "LookupJoinError: Injecting error "<< inject_err <<
+ ndbout << "LookupJoinError: Injecting error "<< inject_err <<
" in node " << nodeId << " loop "<< i << endl;
- if (restarter.insertErrorInNode(nodeId, inject_err) != 0){
+ if (restarter.insertErrorInNode(nodeId, inject_err) != 0)
+ {
ndbout << "Could not insert error in node "<< nodeId <<endl;
+ g_info << endl;
return NDBT_FAILED;
}
// It'd be better if test could differentiates failures from
// fault injection and others.
- if (hugoTrans.runLookupQuery(GETNDB(step), records))
+ // We expect to fail, and it's a failure if we don't
+ if (!hugoTrans.runLookupQuery(GETNDB(step), records))
{
- ndbout << "LookUpJoinError can probably fail due to fault injection."<< endl;
- g_info << endl;
+ g_info << "LookUpJoinError didn't fail as expected."<< endl;
+ // return NDBT_FAILED;
}
addMask(ctx, (1 << stepNo), "Running");
@@ -188,7 +196,12 @@ runScanJoinError(NDBT_Context* ctx, NDBT
HugoQueries hugoTrans(* query);
NdbRestarter restarter;
- int scanFaults[] = {17002, 17004, 17005, 17006, 17007, 17008};
+ int scanFaults[] = {
+ 17002, 17004, 17005, 17006, 17007, 17008,
+ 17020, 17021, 17022, // lookup_send() encounter dead node -> NodeFailure
+ 17030, 17031, 17032, // LQHKEYREQ reply is LQHKEYREF('Invalid..')
+ 17040, 17041, 17042 // lookup_parent_row -> OutOfQueryMemory
+ };
loops = faultToInject ? 1 : sizeof(scanFaults)/sizeof(int);
while ((i<loops || until_stopped) && !ctx->isTestStopped())
@@ -199,23 +212,24 @@ runScanJoinError(NDBT_Context* ctx, NDBT
int randomId = rand() % restarter.getNumDbNodes();
int nodeId = restarter.getDbNodeId(randomId);
- ndbout << endl<<"ScanJoin: Injecting error "<< inject_err <<
+ ndbout << "ScanJoin: Injecting error "<< inject_err <<
" in node " << nodeId << " loop "<< i<< endl;
- if (restarter.insertErrorInNode(nodeId, inject_err) != 0){
+ if (restarter.insertErrorInNode(nodeId, inject_err) != 0)
+ {
ndbout << "Could not insert error in node "<< nodeId <<endl;
return NDBT_FAILED;
}
// It'd be better if test could differentiates failures from
// fault injection and others.
- if (hugoTrans.runScanQuery(GETNDB(step)))
+ // We expect to fail, and it's a failure if we don't
+ if (!hugoTrans.runScanQuery(GETNDB(step)))
{
- ndbout << "runScanJoinError failed probably due to fault injection."<< endl;
+ g_info << "ScanJoinError didn't fail as expected."<< endl;
// return NDBT_FAILED;
}
- g_info << endl;
addMask(ctx, (1 << stepNo), "Running");
i++;
}
No bundle (reason: useless for push emails).
| Thread |
|---|
| • bzr push into mysql-5.1-telco-7.0-spj-scan-vs-scan branch(ole.john.aske:3587 to 3588) | Ole John Aske | 24 Feb |