summaryrefslogtreecommitdiff
path: root/sql/sql_yacc.yy
Commit message (Collapse)AuthorAgeFilesLines
* Merge Bug#43230 into mysql-5.1-bugteamDavi Arnaut2009-04-031-1/+6
|\
| * Bug#43230: SELECT ... FOR UPDATE can hang with FLUSH TABLES WITH READ LOCK ↵Davi Arnaut2009-04-031-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | indefinitely The problem is that a SELECT .. FOR UPDATE statement might open a table and later wait for a impeding global read lock without noticing whether it is holding a table that is being waited upon the the flush phase of the process that took the global read lock. The same problem also affected the following statements: LOCK TABLES .. WRITE UPDATE .. SET (update and multi-table update) TRUNCATE TABLE .. LOAD DATA .. The solution is to make the above statements wait for a impending global read lock before opening the tables. If there is no impending global read lock, the statement raises a temporary protection against global read locks and progresses smoothly towards completion. Important notice: the patch does not try to address all possible cases, only those which are common and can be fixed unintrusively enough for 5.0.
* | Bug#39843 DELETE requires write access to table in subquery in where clauseKristofer Pettersson2009-03-051-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | An unnecessarily restrictive lock were taken on sub-SELECTs during DELETE. During parsing, a global structure is reused for sub-SELECTs and the attribute keeping track of lock options were not reset properly. This patch introduces a new attribute to keep track on the syntactical lock option elements found in a sub-SELECT and then sets the lock options accordingly. Now the sub-SELECTs will try to acquire a READ lock if possible instead of a WRITE lock as inherited from the outer DELETE statement.
* | Bug#41077: Warning contains wrong future versionDavi Arnaut2009-02-161-7/+7
| | | | | | | | | | Substitute all references of MySQL version "5.2" to "6.0" in deprecation warning messages.Deprecated constructs are being removed in the 6.0 tree.
* | merged additional fix for bug 33813 to 5.1-bugteamGeorgi Kodinov2009-02-121-3/+35
|\ \ | |/
| * Bug #33813: Schema names are case-sensitive in DROP FUNCTIONGeorgi Kodinov2009-02-121-3/+35
| | | | | | | | | | | | | | | | | | | | Additional fix: 1. Revert the unification of DROP FUNCTION and DROP PROCEDURE, because DROP FUNCTION can be used to drop UDFs (that have a non-qualified name and don't require database name to be present and valid). 2. Fixed the case sensitivity problem by adding a call to check_db_name() (similar to the sp_name production).
* | merged bug 33813 to 5.1-bugteamGeorgi Kodinov2009-02-121-30/+3
|\ \ | |/
| * Bug #33813: Schema names are case-sensitive in DROP FUNCTIONGeorgi Kodinov2009-02-101-30/+3
| | | | | | | | | | | | | | The parser was not using the correct fully-qualified-name production for DROP FUNCTION. Fixed by copying the production from DROP PROCEDURE. Tested in the windows specific suite to make sure it's tested on a case-insensitive file system.
* | Merge from mysql-5.1.30-releasetimothy.smith@sun.com2008-11-271-1/+1
|\ \
| * | Added "Sun Microsystems, Inc." to copyright headers on files modifiedBuild Team2008-11-101-1/+1
| | | | | | | | | | | | since Oct 1st
* | | Bug#39434: ALTER TABLE CHECK/OPTIMIZE/ANALYZE PARTITION workMattias Jonsson2008-10-101-4/+4
|/ / | | | | | | | | | | | | | | | | | | | | | | on non-partitioned table Problem was that partitioning specific commands was accepted for non partitioned tables and treated like ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE, after bug-20129 was fixed, which changed the code path from mysql_alter_table to mysql_admin_table. Solution was to check if the table was partitioned before trying to execute the admin command
* | 5.0->5.1 bugteam mergeSergey Glukhov2008-10-021-2/+1
|\ \ | |/
| * Bug#35924 DEFINER should be stored 'quoted' in I_SSergey Glukhov2008-10-021-2/+1
| | | | | | | | | | | | | | | | | | The '@' symbol can not be used in the host name according to rfc952. The fix: added function check_host_name(LEX_STRING *str) which checks that all symbols in host name string are valid and host name length is not more than max host name length (just moved check_string_length() function from the parser into check_host_name()).
| * Bug#38296 (low memory crash with many conditions in a query)Marc Alff2008-08-111-331/+1444
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fix is for 5.0 only : back porting the 6.0 patch manually The parser code in sql/sql_yacc.yy needs to be more robust to out of memory conditions, so that when parsing a query fails due to OOM, the thread gracefully returns an error. Before this fix, a new/alloc returning NULL could: - cause a crash, if dereferencing the NULL pointer, - produce a corrupted parsed tree, containing NULL nodes, - alter the semantic of a query, by silently dropping token values or nodes With this fix: - C++ constructors are *not* executed with a NULL "this" pointer when operator new fails. This is achieved by declaring "operator new" with a "throw ()" clause, so that a failed new gracefully returns NULL on OOM conditions. - calls to new/alloc are tested for a NULL result, - The thread diagnostic area is set to an error status when OOM occurs. This ensures that a request failing in the server properly returns an ER_OUT_OF_RESOURCES error to the client. - OOM conditions cause the parser to stop immediately (MYSQL_YYABORT). This prevents causing further crashes when using a partially built parsed tree in further rules in the parser. No test scripts are provided, since automating OOM failures is not instrumented in the server. Tested under the debugger, to verify that an error in alloc_root cause the thread to returns gracefully all the way to the client application, with an ER_OUT_OF_RESOURCES error.
* | Bug#34306: Can't make copy of log tables when server binary log is enabledDavi Arnaut2008-09-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The problem is that when statement-based replication was enabled, statements such as INSERT INTO .. SELECT FROM .. and CREATE TABLE .. SELECT FROM need to grab a read lock on the source table that does not permit concurrent inserts, which would in turn be denied if the source table is a log table because log tables can't be locked exclusively. The solution is to not take such a lock when the source table is a log table as it is unsafe to replicate log tables under statement based replication. Furthermore, the read lock that does not permits concurrent inserts is now only taken if statement-based replication is enabled and if the source table is not a log table.
* | Bug#26020: User-Defined Variables are not consistent withGleb Shchepa2008-09-181-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | columns data types The "SELECT @lastId, @lastId := Id FROM t" query returns different result sets depending on the type of the Id column (INT or BIGINT). Note: this fix doesn't cover the case when a select query references an user variable and stored function that updates a value of that variable, in this case a result is indeterminate. The server uses incorrect assumption about a constantness of an user variable value as a select list item: The server caches a last query number where that variable was changed and compares this number with a current query number. If these numbers are different, the server guesses, that the variable is not updating in the current query, so a respective select list item is a constant. However, in some common cases the server updates cached query number too late. The server has been modified to memorize user variable assignments during the parse phase to take them into account on the next (query preparation) phase independently of the order of user variable references/assignments in a select item list.
* | Bug#35981: ALTER EVENT causes the server to change the PRESERVE option.Tatiana A. Nurnberg2008-09-111-0/+2
|\ \ | | | | | | | | | | | | | | | | | | If [NOT] PRESERVE was not given, parser always defaulted to NOT PRESERVE, making it impossible for the "not given = no change" rule to work in ALTER EVENT. Leaving out the PRESERVE-clause defaults to NOT PRESERVE on CREATE now, and to "no change" in ALTER.
| * | Bug#35981: ALTER EVENT causes the server to change the PRESERVE option.Tatiana A. Nurnberg2008-08-181-0/+2
| | | | | | | | | | | | | | | | | | | | | If [NOT] PRESERVE was not given, parser always defaulted to NOT PRESERVE, making it impossible for the "not given = no change" rule to work in ALTER EVENT. Leaving out the PRESERVE-clause defaults to NOT PRESERVE on CREATE now, and to "no change" in ALTER.
* | | Bug#37908: Skipped access right check caused server crash.Evgeny Potemkin2008-09-051-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The check_table_access function initializes per-table grant info and performs access rights check. It wasn't called for SHOW STATUS statement thus left grants info uninitialized. In some cases this led to server crash. In other cases it allowed a user to check for presence/absence of arbitrary values in any tables. Now the check_table_access function is called prior to the statement processing.
* | | merge (into the latest mysql-5.1-bugteam tree)Mattias Jonsson2008-08-131-0/+8
|\ \ \
| * | | Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains thatMattias Jonsson2008-08-111-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | partition is corrupt The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION took another code path (over mysql_alter_table instead of mysql_admin_table) which differs in two ways: 1) alter table opens the tables in a different way than admin tables do resulting in returning with error before it tried the command 2) alter table does not start to send any diagnostic rows to the client which the lower admin functions continue to use -> resulting in assertion crash The fix: Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t. Adding check in mysql_admin_table to setup the partition list for which partitions that should be used. Partitioned tables will still not work with REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions to tables, REPAIR TABLE t USE_FRM, and check that the data still fulfills the partitioning function and then move the table back to being a partition. NOTE: I have removed the following functions from the handler interface: analyze_partitions, check_partitions, optimize_partitions, repair_partitions Since they are not longer needed. THIS ALTERS THE STORAGE ENGINE API
* | | | Bug#38296 (low memory crash with many conditions in a query)Marc Alff2008-08-121-335/+1317
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fix is for 5.1 only : back porting the 6.0 patch manually The parser code in sql/sql_yacc.yy needs to be more robust to out of memory conditions, so that when parsing a query fails due to OOM, the thread gracefully returns an error. Before this fix, a new/alloc returning NULL could: - cause a crash, if dereferencing the NULL pointer, - produce a corrupted parsed tree, containing NULL nodes, - alter the semantic of a query, by silently dropping token values or nodes With this fix: - C++ constructors are *not* executed with a NULL "this" pointer when operator new fails. This is achieved by declaring "operator new" with a "throw ()" clause, so that a failed new gracefully returns NULL on OOM conditions. - calls to new/alloc are tested for a NULL result, - The thread diagnostic area is set to an error status when OOM occurs. This ensures that a request failing in the server properly returns an ER_OUT_OF_RESOURCES error to the client. - OOM conditions cause the parser to stop immediately (MYSQL_YYABORT). This prevents causing further crashes when using a partially built parsed tree in further rules in the parser. No test scripts are provided, since automating OOM failures is not instrumented in the server. Tested under the debugger, to verify that an error in alloc_root cause the thread to returns gracefully all the way to the client application, with an ER_OUT_OF_RESOURCES error.
* | | Bug#35577, manual merge mysql-5.0-bugteam -> mysql-5.1-bugteamMarc Alff2008-07-141-52/+29
|\ \ \ | | |/ | |/|
| * | Bug#35577 (CREATE PROCEDURE causes either crash or syntax error depending onMarc Alff2008-07-141-38/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | build) The crash was caused by freeing the internal parser stack during the parser execution. This occured only for complex stored procedures, after reallocating the parser stack using my_yyoverflow(), with the following C call stack: - MYSQLparse() - any rule calling sp_head::restore_lex() - lex_end() - x_free(lex->yacc_yyss), xfree(lex->yacc_yyvs) The root cause is the implementation of stored procedures, which breaks the assumption from 4.1 that there is only one LEX structure per parser call. The solution is to separate the LEX structure into: - attributes that represent a statement (the current LEX structure), - attributes that relate to the syntax parser itself (Yacc_state), so that parsing multiple statements in stored programs can create multiple LEX structures while not changing the unique Yacc_state. Now, Yacc_state and the existing Lex_input_stream are aggregated into Parser_state, a structure that represent the complete state of the (Lexical + Syntax) parser.
* | | Manual merge of bug#26030 in mysql-5.1-bugteamMarc Alff2008-07-071-76/+34
|\ \ \ | |/ / | | / | |/ |/|
| * Bug#26030 (Parsing fails for stored routine w/multi-statement executionMarc Alff2008-07-071-45/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | enabled) Before this fix, the lexer and parser would treat the ';' character as a different token (either ';' or END_OF_INPUT), based on convoluted logic, which failed in simple cases where a stored procedure is implemented as a single statement, and used in a multi query. With this fix: - the character ';' is always parsed as a ';' token in the lexer, - parsing multi queries is implemented in the parser, in the 'query:' rules, - the value of thd->client_capabilities, which is the capabilities negotiated between the client and the server during bootstrap, is immutable and not arbitrarily modified during parsing (which was the root cause of the bug)
| * Merge bk-internal.mysql.com:/home/bk/mysql-5.0-buildcmiller@zippy.cornsilk.net2008-04-021-27/+26
| |\ | | | | | | | | | into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-build
| | * Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my50-bug15776cmiller@zippy.cornsilk.net2008-04-021-27/+26
| | |\ | | | | | | | | | | | | into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-build
* | | \ Merge bk-internal.mysql.com:/home/bk/mysql-5.1kostja@bodhi.(none)2008-05-201-2/+12
|\ \ \ \ | | | | | | | | | | | | | | | into bodhi.(none):/opt/local/work/mysql-5.1-27430
| * \ \ \ Merge bk-internal.mysql.com:/home/bk/mysql-5.1kostja@bodhi.(none)2008-04-191-2/+12
| |\ \ \ \ | | | | | | | | | | | | | | | | | | into bodhi.(none):/opt/local/work/mysql-5.1-27430
| | * | | | Fix create.test in --ps-protocol broken by the previous push.kostja@bodhi.(none)2008-04-171-2/+12
| | | | | |
* | | | | | Bug #32858: Erro: "Incorrect usage of UNION and INTO" does not take gkodinov/kgeorge@magare.gmz2008-05-131-9/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | subselects into account It is forbidden to use the SELECT INTO construction inside UNION statements unless on the last SELECT of the union. The parser records whether it has seen INTO or not when parsing a UNION statement. But if the INTO was legally used in an outer query, an error is thrown if UNION is seen in a subquery. Fixed in 5.0 by remembering the nesting level of INTO tokens and mitigate the error unless it collides with the UNION.
* | | | | | Bug#35997 Event scheduler seems to let the server crash, if it is embedded.thek@adventure.(none)2008-05-091-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The event scheduler was not designed to work in embedded mode. This patch disables and excludes the event scheduler when the server is compiled for embedded build.
* | | | | | Merge ↵cmiller@zippy.cornsilk.net2008-04-091-5/+4
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776-encore/my51-bug15776-encore into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-build
| * \ \ \ \ \ Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my51-bug15776cmiller@zippy.cornsilk.net2008-04-091-32/+31
| |\ \ \ \ \ \ | | |_|/ / / / | |/| | | | | | | | | | | | into zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776-encore/my51-bug15776-encore
| | * | | | | Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my50-bug15776cmiller@zippy.cornsilk.net2008-03-311-27/+26
| | |\ \ \ \ \ | | | | |_|_|/ | | | |/| | | | | | | | | | into zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my51-bug15776
| | | * | | | Fix minor complaints of Marc Alff, for patch against B-g#15776.cmiller@zippy.cornsilk.net2008-03-261-1/+1
| | | | | | |
| | | * | | | Bug#15776: 32-bit signed int used for length of blobcmiller@zippy.cornsilk.net2007-08-311-28/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Based on contributed patch from Martin Friebe, CLA from 2007-02-24. The parser lacked support for field sizes after signed long, when it should extend to 2**32-1. Now, we correct that limitation, and also make the error handling consistent for casts.
* | | | | | | Merge bk-internal.mysql.com:/home/bk/mysql-5.1-buildcmiller@zippy.cornsilk.net2008-04-031-28/+28
|\ \ \ \ \ \ \ | |_|_|_|/ / / |/| | | | | | | | | | | | | into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-build
| * | | | | | Bug#15776: 32-bit signed int used for length of blobcmiller@zippy.cornsilk.net2008-04-011-28/+28
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Based on contributed patch from Martin Friebe, CLA from 2007-02-24. The parser lacked support for field sizes after signed long, when it should extend to 2**32-1. Now, we correct that limitation, and also make the error handling consistent for casts. --- Fix minor complaints of Marc Alff, for patch against B-g#15776. --- Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my50-bug15776 into zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my51-bug15776 --- Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my51-bug15776 into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-build --- testing
* | | | | | Merge a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-mainjani@a88-113-38-195.elisa-laajakaista.fi2008-03-281-4/+25
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | | | | | | into a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-marvel
| * | | | | Merge a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-mainjani@a88-113-38-195.elisa-laajakaista.fi2008-03-261-4/+25
| |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | into a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-marvel
| | * \ \ \ \ Merge a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-mainjani@a88-113-38-195.elisa-laajakaista.fi2008-03-131-4/+25
| | |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | into a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-marvel
| | * \ \ \ \ \ Merge a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-mainjani@a88-113-38-195.elisa-laajakaista.fi2008-03-071-4/+25
| | |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | into a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-marvel
| | | * \ \ \ \ \ Merge a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-mainjani@a88-113-38-195.elisa-laajakaista.fi2008-02-081-4/+25
| | | |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-marvel
| | | | * \ \ \ \ \ Merge a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-mainjani@a88-113-38-195.elisa-laajakaista.fi2007-12-071-4/+25
| | | | |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-marvel
| | | | | * \ \ \ \ \ Merge hynda.mysql.fi:/home/my/mysql-5.1-mainjani@hynda.mysql.fi2007-11-261-4/+25
| | | | | |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into hynda.mysql.fi:/home/my/mysql-5.1-marvel
| | | | | | * \ \ \ \ \ Merge hynda.mysql.fi:/home/my/mysql-5.1-mainjani@hynda.mysql.fi2007-11-141-1/+1
| | | | | | |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into hynda.mysql.fi:/home/my/mysql-5.1-marvel
| | | | | | * \ \ \ \ \ \ Merge hynda.mysql.fi:/home/my/mysql-5.1-mainjani@hynda.mysql.fi2007-11-081-4/+25
| | | | | | |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into hynda.mysql.fi:/home/my/mysql-5.1-marvel
| | | | | | | * | | | | | | Moved a lot of old bug fixes and safe cleanups from Maria 5.1 tree to 5.1monty@mysql.com/narttu.mysql.fi2007-10-111-4/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Reserver namespace and place in frm for TABLE_CHECKSUM and PAGE_CHECKSUM create options - Added syncing of directory when creating .frm files - Portability fixes - Added missing cast that could cause bugs - Code cleanups - Made some bit functions inline - Moved things out of myisam.h to my_handler.h to make them more accessable - Renamed some myisam variables and defines to make them more globaly usable (as they are used outside of MyISAM) - Fixed bugs in error conditions - Use compiler time asserts instead of run time - Fixed indentation HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP as the old name was wrong (Added a define for old value to ensure we don't break any old code) Added HA_EXTRA_PREPARE_FOR_RENAME as a signal for rename (before we used a DROP signal which is wrong) - Initialize error messages early to get better errors when mysqld or an engine fails to start - Fix windows bug that query_performance_frequency was not initialized if registry code failed - thread_stack -> my_thread_stack_size