- 08 Apr, 2008 2 commits
-
-
unknown authored
-
unknown authored
WL#4165 Prepared statements: validation WL#4166 Prepared statements: automatic re-prepare Fixes Bug#27430 Crash in subquery code when in PS and table DDL changed after PREPARE Bug#27690 Re-execution of prepared statement after table was replaced with a view crashes Bug#27420 A combination of PS and view operations cause error + assertion on shutdown The basic idea of the patch is to keep track of table metadata between prepared statement prepare and execute. If some table used in the statement has changed, the prepared statement is re-prepared before execution. See WL#4165 and WL#4166 contents and comments in the code for details of the implementation. include/my_global.h: Remove 'register' keyword to avoid warnings when swapping large structures that don't fit into a register. Any modern compiler is capable of placing a variable in a register when that would benefit performance. mysql-test/r/ps_1general.result: Update test results: since now we re-prepare automatically, more correct results are produced in prepare-ddl-execute scenario. mysql-test/r/query_cache_merge.result: Ensure that the table definition cache is large enough for the test to pass in --ps-protocol mysql-test/r/trigger.result: Update test results to reflect automatic statement reprepare. mysql-test/t/disabled.def: Enable ps_ddl.test, which now passes. mysql-test/t/ps_1general.test: Since now we re-execute prepared statements after DDL successfully, change the test to produce repeatable results. Remove expectancy of an error in one place where now we automatically reprepare the prepared statement. mysql-test/t/query_cache_merge.test: Ensure the table definition cache is large enough for the test to pass in --ps-protocol mysql-test/t/trigger.test: Sinc sql/item.cc: Implement Item_param "copy" functionality, used at re-prepare of a prepared statement. We copy the type of the original parameter, and move the assigned value, if any. Sic, the value is "moved", since it can be quite big -- e.g. in case we deal with a LONG DATA parameter. It's essential to move the value from the old parameter since at the time of re-prepare the client packet with the necessary information may be not available. sql/item.h: Declare a new method used for reprepare. sql/my_decimal.h: Implement "swap()" functionality of class my_decimal to be able to easily swap two decimal values. sql/mysql_priv.h: Declare enum_metadata_type. sql/mysqld.cc: Implement a status variable for the number of reprepared statements. sql/sql_base.cc: Implement metadata version validation. sql/share/errmsg.txt: Add two new error messages: ER_NEED_REPREPARE and ER_PS_REBIND. The first error (theoretically) never reaches the user. It is issued by the metadata validation framework when a metadata version has changed between prepare and execute. Later on it's intercepted and the statement is automatically re-prepared. Only if the error has occurred repeatedly MAX_REPREPARE_ATTEMTS (3) times do we return it to the user. The second error is issued when after re-prepare we discover that the metadata we sent over to the client using the binary protocol differs drammatically from the new result set metadata that the reprepared statement produces (e.g. number of result set columns is different). sql/sql_class.cc: Implement metadata version validation framework. sql/sql_class.h: Declarations for metadata version validation framework. sql/sql_parse.cc: Mark commands for which we must invalidate and reprepare a prepared statement when metadata has changed. sql/sql_prepare.cc: Implement WL#4165 and WL#4166 (limited support of metadata validation and re-prepare). sql/table.h: Implement metadata validation. tests/mysql_client_test.c: Add a test case for WL#4166
-
- 07 Apr, 2008 5 commits
-
-
unknown authored
-
unknown authored
Enable back the disabled test case. mysql-test/t/disabled.def: Enable the test case innodb_mysql. sql/sql_parse.cc: Fix the random failure of innodb_mysql test. The failure is not random any more after a patch for Bug 12713 added asserts around handler commit.
-
unknown authored
into mockturtle.local:/home/dlenev/src/mysql-5.1-symlink
-
unknown authored
-
unknown authored
The problem was that symlink.test failed due to debug assertions or due to errors emitted for wrong statements (in non-debug builds) if 6.0 version of server was run with --thread-handling=pool-of-threads option. The above problems were caused by that on the one hand code mi_create() which handles case when error is returned relies on my_errno being set to appropriate non-0 value, but on the other it has not done this in case when error was emitted due to discovery that share for table which we are going to create is already present in the list of open shares. Running server with pool-of-threads option just exposed this bug since in this scheduler mode my_errno is reset to 0 when connection (THD) is reattached to the "real" thread. This fix ensures that code in mi_create() properly sets my_errno in the case described above. Since original reason that caused this bug to be exposed in 6.0 tree might also under very special conditions lead to incorrect behavior of earlier versions of server (i.e. to errors emitted for wrong statements) this patch is also being pushed into 5.1 tree. No test case is present as this code is already covered by a test case + pushbuild options combination in 6.0. storage/myisam/mi_create.c: Code in mi_create() which handles case when error is returned relies on my_errno being set to appropriate non-0 value. Adjusted code which emits error when we discover that share for table which we are going to create is already present in the list of open shares to do this.
-
- 01 Apr, 2008 3 commits
-
-
unknown authored
This is a code clean up. Removed redundant (and unused) TABLE_LIST variable intended as an IN- parameter for setup_order. sql/sql_update.cc: Removed redundant (and unused) TABLE_LIST variable intended as an IN- parameter for setup_order.
-
unknown authored
into adventure.(none):/home/thek/Development/cpp/mysql-5.1-runtime sql/sql_acl.cc: Auto merged mysys/my_thr_init.c: Null merge.
-
unknown authored
into adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime sql/sql_acl.cc: Auto merged
-
- 31 Mar, 2008 2 commits
- 28 Mar, 2008 3 commits
-
-
unknown authored
general_log_file/slow_query_log_file. The problem was that log file path was rejected if directory path was empty. The fix is to reject log file path only if it is entirely empty. mysql-test/r/log_state.result: Update result file. mysql-test/t/log_state.test: A test case for Bug#32748: Inconsistent handling of assignments to general_log_file/slow_query_log_file. sql/set_var.cc: Accept file path if dirname is empty. Reject file path if it is empty.
-
unknown authored
We have "set" variables, which can accept empty values (like sql_mode), and which can not (like log_output). The problem was that the code does not distinguish them and allow empty values for every set variable. The fix is to introduce an attribute of a set variable telling whether it can accept empty values. mysql-test/r/variables.result: Update result file. mysql-test/t/variables.test: A test case for Bug#34820: log_output can be set to illegal value. sql/set_var.cc: Don't allow empty values if it is prohibitted. sql/set_var.h: Add a flag (m_allow_empty_value) telling if an empty value is acceptable for this variable.
-
unknown authored
into quad.opbmk:/mnt/raid/alik/MySQL/devel/5.1-rt-merged mysql-test/r/grant.result: Auto merged mysql-test/t/grant.test: Auto merged sql/sql_acl.cc: Auto merged
-
- 27 Mar, 2008 25 commits
-
-
unknown authored
into mysql.com:/misc/mysql/mysql-5.1-opt CMakeLists.txt: Auto merged configure.in: Auto merged include/config-win.h: Auto merged include/my_global.h: Auto merged
-
unknown authored
into mysql.com:/misc/mysql/mysql-5.0-opt CMakeLists.txt: Auto merged configure.in: Auto merged include/config-win.h: Auto merged include/my_global.h: Auto merged
-
unknown authored
into mysql.com:/misc/mysql/mysql-5.1-opt CMakeLists.txt: Auto merged configure.in: Auto merged include/config-win.h: Auto merged include/my_global.h: Auto merged sql/sql_acl.cc: Auto merged sql/sql_db.cc: Auto merged storage/innobase/handler/ha_innodb.cc: Auto merged
-
unknown authored
into host.loc:/home/uchum/work/5.1-opt configure.in: Auto merged sql/item.cc: Auto merged
-
unknown authored
into host.loc:/home/uchum/work/5.0-opt configure.in: Auto merged sql/item.cc: Auto merged
-
unknown authored
into trift2.:/MySQL/M51/push-5.1
-
unknown authored
into trift2.:/MySQL/M51/push-5.1
-
unknown authored
into trift2.:/MySQL/M50/push-5.0
-
unknown authored
into trift2.:/MySQL/M51/push-5.1
-
unknown authored
into host.loc:/home/uchum/work/5.1-opt sql/sql_delete.cc: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_update.cc: Auto merged configure.in: SCCS merged
-
unknown authored
into pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build BitKeeper/deleted/.del-configure.js: Auto merged
-
unknown authored
-
unknown authored
into host.loc:/home/uchum/work/5.0-opt configure.in: Merge with 4.1-opt.
-
unknown authored
into host.loc:/home/uchum/work/5.1-opt client/mysqltest.c: Auto merged mysql-test/r/information_schema.result: Auto merged mysql-test/t/information_schema.test: Auto merged sql/item.cc: Auto merged sql/log.cc: Auto merged sql/mysql_priv.h: Auto merged sql/sql_acl.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_delete.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_update.cc: Auto merged
-
unknown authored
into trift2.:/MySQL/M51/push-5.1 configure.in: Auto merged
-
unknown authored
into host.loc:/home/uchum/work/5.0-opt sql/sql_delete.cc: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_update.cc: Auto merged
-
unknown authored
into trift2.:/MySQL/M51/push-5.1 configure.in: Auto merged mysql-test/r/federated.result: Auto merged mysql-test/t/federated.test: Auto merged
-
unknown authored
into trift2.:/MySQL/M50/push-5.0 configure.in: Auto merged
-
unknown authored
into quad.opbmk:/mnt/raid/alik/MySQL/devel/5.1-rt-merged mysql-test/t/disabled.def: Auto merged
-
unknown authored
-
unknown authored
into rhel5-ia64-a.mysql.com:/data0/tsmith/build/51
-
unknown authored
into rhel5-ia64-a.mysql.com:/data0/tsmith/build/50
-
unknown authored
into rhel5-ia64-a.mysql.com:/data0/tsmith/build/51
-
unknown authored
into rhel5-ia64-a.mysql.com:/data0/tsmith/build/51 sql/mysqld.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_class.cc: Auto merged mysql-test/r/drop.result: SCCS merged mysql-test/t/drop.test: SCCS merged
-
unknown authored
Fixes: - Bug #34920: auto_increment resets to 1 on foreign key creation We need to use/inherit the passed in autoinc counter for ALTER TABLE statements too. mysql-test/r/innodb.result: Apply innodb-5.1-ss2360 snapshot Revision r2345: branches/5.1: Fix Bug# 34920. We need to use/inherit the passed in autoinc counter for ALTER TABLE statements too. mysql-test/t/innodb.test: Apply innodb-5.1-ss2360 snapshot Revision r2345: branches/5.1: Fix Bug# 34920. We need to use/inherit the passed in autoinc counter for ALTER TABLE statements too. storage/innobase/dict/dict0dict.c: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. storage/innobase/handler/ha_innodb.cc: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. Revision r2345: branches/5.1: Fix Bug# 34920. We need to use/inherit the passed in autoinc counter for ALTER TABLE statements too. storage/innobase/handler/ha_innodb.h: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. storage/innobase/include/dict0dict.h: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. storage/innobase/include/dict0mem.h: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. storage/innobase/include/row0sel.h: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. storage/innobase/include/univ.i: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. storage/innobase/row/row0sel.c: Apply innodb-5.1-ss2360 snapshot Revision r2353: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned.
-