From: Ole John Aske Date: February 22 2012 2:04pm Subject: bzr push into mysql-5.1-telco-7.0-spj-scan-vs-scan branch (ole.john.aske:3587 to 3588) List-Archive: http://lists.mysql.com/commits/143029 Message-Id: <20120222140434.E427923E@fimafeng09.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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 #include #include #include @@ -1685,6 +1686,22 @@ Dbspj::abort(Signal* signal, PtrisLookup() && + !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 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 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 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 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 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 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 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 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; itheSendersBlockRef; === 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 ((iisTestStopped()) @@ -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 < NodeFailure + 17030, 17031, 17032, // LQHKEYREQ reply is LQHKEYREF('Invalid..') + 17040, 17041, 17042 // lookup_parent_row -> OutOfQueryMemory + }; loops = faultToInject ? 1 : sizeof(scanFaults)/sizeof(int); while ((iisTestStopped()) @@ -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 <