- 12 Feb, 2007 2 commits
-
-
malff/marcsql@weblab.(none) authored
into weblab.(none):/home/marcsql/TREE/mysql-5.1-24532-merge
-
malff/marcsql@weblab.(none) authored
operations) Before this change, the boolean predicates: - X IS TRUE, - X IS NOT TRUE, - X IS FALSE, - X IS NOT FALSE were implemented by expanding the Item tree in the parser, by using a construct like: Item_func_if(Item_func_ifnull(X, <value>), <value>, <value>) Each <value> was a constant integer, either 0 or 1. A bug in the implementation of the function IF(a, b, c), in Item_func_if::fix_length_and_dec(), would cause the following : When the arguments b and c are both unsigned, the result type of the function was signed, instead of unsigned. When the result of the if function is signed, space for the sign could be counted twice (in the max() expression for a signed argument, and in the total), causing the member max_length to be too high. An effect of this is that the final type of IF(x, int(1), int(1)) would be int(2) instead of int(1). With this fix, the problems found in Item_func_if::fix_length_and_dec() have been fixed. While it's semantically correct to represent 'X IS TRUE' with Item_func_if(Item_func_ifnull(X, <value>), <value>, <value>), there are however more problems with this construct. a) Building the parse tree involves : - creating 5 Item instances (3 ints, 1 ifnull, 1 if), - creating each Item calls my_pthread_getspecific_ptr() once in the operator new(size), and a second time in the Item::Item() constructor, resulting in a total of 10 calls to get the current thread. Evaluating the expression involves evaluating up to 4 nodes at runtime. This representation could be greatly simplified and improved. b) Transforming the parse tree internally with if(ifnull(...)) is fine as long as this transformation is internal to the server implementation. With views however, the result of the parse tree is later exposed by the ::print() functions, and stored as part of the view definition. Doing this has long term consequences: 1) The original semantic 'X IS TRUE' is lost, and replaced by the if(ifnull(...)) expression. As a result, SHOW CREATE VIEW does not restore the original code. 2) Should a future version of MySQL implement the SQL BOOLEAN data type for example, views created today using 'X IS NULL' can be exported using mysqldump, and imported again. Such views would be converted correctly and automatically to use a BOOLEAN column in the future version. With 'X IS TRUE' and the current implementations, views using these "boolean" predicates would not be converted during the export/import, and would use integer columns instead. The difference traces back to how SHOW CREATE VIEW preserves 'X IS NULL' but does not preserve the 'X IS TRUE' semantic. With this fix, internal representation of 'X IS TRUE' booleans predicates has changed, so that: - dedicated Item classes are created for each predicate, - only 1 Item is created to represent 1 predicate - my_pthread_getspecific_ptr() is invoked 1 time instead of 10 - SHOW CREATE VIEW preserves the original semantic, and prints 'X IS TRUE'. Note that, because of the fix in Item_func_if, views created before this fix will: - correctly use a int(1) type instead of int(2) for boolean predicates, - incorrectly print the if(ifnull(...), ...) expression in SHOW CREATE VIEW, since the original semantic (X IS TRUE) has been lost. - except for the syntax used in SHOW CREATE VIEW, these views will operate properly, no action is needed. Views created after this fix will operate correctly, and will preserve the original code semantic in SHOW CREATE VIEW.
-
- 08 Feb, 2007 1 commit
-
-
kroki/tomash@moonlight.home authored
into moonlight.home:/home/tomash/src/mysql_ab/mysql-5.1-bug16425
-
- 06 Feb, 2007 2 commits
-
-
malff/marcsql@weblab.(none) authored
into weblab.(none):/home/marcsql/TREE/mysql-5.1-12976-merge
-
malff/marcsql@weblab.(none) authored
Before this change, a local variables in stored procedures / stored functions or triggers, when declared with a type of bit(N), would not evaluate their value properly. The problem was that the data was incorrectly typed as a string, causing for example bit b'1', implemented as a byte 0x01, to be interpreted as a string starting with the character 0x01. This later would cause implicit conversions to integers or booleans to fail. The root cause of this problem was an incorrect translation between field types, like bit(N), and internal types used when representing values in Item objects. Also, before this change, the function HEX() would sometime print extra "0" characters when invoked with bit(N) values. With this fix, the type translation (sp_map_result_type, sp_map_item_type) has been changed so that bit(N) fields are represented with integer values. A consequence is that, for the function HEX(), when called with a stored procedure local variable of type bit(N) as argument, HEX() is provided with an integer instead of a string, and therefore does not print "0" padding. A test case for Bug 12976 was present in the test suite, and has been updated.
-
- 05 Feb, 2007 1 commit
-
-
kroki/tomash@moonlight.home authored
into moonlight.home:/home/tomash/src/mysql_ab/mysql-5.1
-
- 04 Feb, 2007 1 commit
-
-
kroki/tomash@moonlight.home authored
fails The bug was introduced with the push of the fix for bug#20953: after the error on view creation we never reset the error state, so some valid statements would give the same error after that. The solution is to properly reset the error state.
-
- 03 Feb, 2007 1 commit
-
-
kroki/tomash@moonlight.home authored
into moonlight.home:/home/tomash/src/mysql_ab/mysql-5.1-bug23225
-
- 02 Feb, 2007 2 commits
-
-
kroki/tomash@moonlight.home authored
There was already support for CREATE DEFINER=... EVENT syntax in the parser, but DEFINER information was ignored. This patch adds processing of DEFINER, and a new ALTER DEFINER=... EVENT syntax.
-
kroki/tomash@moonlight.home authored
wrong file After execution of SET GLOBAL SLOW_QUERY_LOG_FILE=...; slow query log data would go into the general log file. The problem was in the bogus cut-n-paste in the code.
-
- 01 Feb, 2007 2 commits
-
-
malff/marcsql@weblab.(none) authored
into weblab.(none):/home/marcsql/TREE/mysql-5.1-21904_b-merge
-
malff/marcsql@weblab.(none) authored
-
- 31 Jan, 2007 1 commit
-
-
kroki/tomash@moonlight.home authored
Original patch did not have these leaks, they were introduced later during manual applying of the patch.
-
- 30 Jan, 2007 4 commits
-
-
malff/marcsql@weblab.(none) authored
-
malff/marcsql@weblab.(none) authored
into weblab.(none):/home/marcsql/TREE/mysql-5.0-21904
-
malff/marcsql@weblab.(none) authored
into weblab.(none):/home/marcsql/TREE/mysql-5.1-21904-merge
-
malff/marcsql@weblab.(none) authored
Before this fix, a IN predicate of the form: "IN (( subselect ))", with two parenthesis, would be evaluated as a single row subselect: if the subselect returns more that 1 row, the statement would fail. The SQL:2003 standard defines a special exception in the specification, and mandates that this particular form of IN predicate shall be equivalent to "IN ( subselect )", which involves a table subquery and works with more than 1 row. This fix implements "IN (( subselect ))", "IN ((( subselect )))" etc as per the SQL:2003 requirement. All the details related to the implementation of this change have been commented in the code, and the relevant sections of the SQL:2003 spec are given for reference, so they are not repeated here. Having access to the spec is a requirement to review in depth this patch.
-
- 29 Jan, 2007 3 commits
-
-
malff/marcsql@weblab.(none) authored
into weblab.(none):/home/marcsql/TREE/mysql-5.1-24392
-
kroki/tomash@moonlight.home authored
This patch implements the idea of the bug report by making Event_queue unaware of Event_db_repository by making a higher level class - Events, which is aware of most of all classes, responsible for passing all data needed for adding/updating/deleting an event to/from the queue. Introduces few new classes : - Event_worker_thread - Event_queue_element_for_exec
-
malff/marcsql@weblab.(none) authored
into weblab.(none):/home/marcsql/TREE/mysql-5.1-24392
-
- 25 Jan, 2007 16 commits
-
-
kroki/tomash@moonlight.home authored
into moonlight.home:/home/tomash/src/mysql_ab/mysql-5.1-bug23527
-
dlenev@mockturtle.local authored
into mockturtle.local:/home/dlenev/src/mysql-5.1-merge
-
-
kroki/tomash@moonlight.home authored
into moonlight.home:/home/tomash/src/mysql_ab/mysql-5.0-bug23527
-
kroki/tomash@moonlight.home authored
into moonlight.home:/home/tomash/src/mysql_ab/mysql-5.1-bug23527
-
kroki/tomash@moonlight.home authored
high load MySQL server could crash if two or more threads would initiate query cache resize at the moments very close in time. The problem was introduced with the fix of bug 21051 in 5.0 and 5.1: simultaneous query cache resizes would wait for the first one in progress, but then each thread would try to finish the operation, accessing the data that was already reset (attempt to dereference 'bins' pointer, which may be NULL already). The solution is to check after synchronization if another thread has done the reset already (test 'query_cache_size > 0' again). No test case is provided because the bug is a subject to a race.
-
jani/jamppa@bk-internal.mysql.com authored
Don't use -Wshadow by default yet
-
dlenev@mockturtle.local authored
into mockturtle.local:/home/dlenev/src/mysql-5.1-merge
-
jani/jamppa@bk-internal.mysql.com authored
into bk-internal.mysql.com:/data0/bk/mysql-5.1-marvel
-
jani/jamppa@bk-internal.mysql.com authored
into bk-internal.mysql.com:/data0/bk/mysql-5.1-marvel
-
tomas@poseidon.mysql.com authored
into poseidon.mysql.com:/home/tomas/mysql-5.1-new-ndb
-
dlenev@mockturtle.local authored
into mockturtle.local:/home/dlenev/src/mysql-5.1-merge
-
dlenev@mockturtle.local authored
into mockturtle.local:/home/dlenev/src/mysql-5.0-merge
-
dlenev@mockturtle.local authored
into mockturtle.local:/home/dlenev/src/mysql-5.1-merge
-
tomas@poseidon.mysql.com authored
into poseidon.mysql.com:/home/tomas/mysql-5.1-new-ndb
-
tomas@poseidon.mysql.com authored
- added extra cluster connect inicator bit for better handeling of delacation of event operations on cluster disconnect - added extra assert to try to track down valgrind issue
-
- 24 Jan, 2007 4 commits
-
-
svoj@april.(none) authored
into mysql.com:/home/svoj/devel/mysql/merge/mysql-5.1-engines
-
svoj@april.(none) authored
into mysql.com:/home/svoj/devel/mysql/merge/mysql-5.1-engines
-
malff/marcsql@weblab.(none) authored
into weblab.(none):/home/marcsql/TREE/mysql-5.1-21029
-
malff/marcsql@weblab.(none) authored
The build scripts in general, using automake, autoconf, etc, contain several special commands and work around all related to the way the bison code in the parser is built, for sql/sql_yacc.yy. These work arounds, accumulated over time during development, ultimately cause the build scripts to be unstable and cause build defects by not enforcing dependencies. This fix simplifies the build process and aligns it with the automake tooling, which provides native support for bison and *.yy files. In particular, the following problem have been fixed: - dependencies with sql_yacc.cc were not honored (Bug 21029), leading to corrupted builds, - the work around introduced by Bug 24557, to cleanup the generated files sql_yacc.h and sql_yacc.cc, has been removed, - the generated makefile, in a source distribution, used to destroy the files sql_yacc.h and sql_yacc.cc on a 'make clean' target. This has been fixed: these files are now removed by make maintainer-clean. - The root cause of the problem found with gcc 4.1 (see Bug 24619) has been clearly documented, and the "sed" hack has been replaced by a cleaner work around, when building the code with bison 1.875. - Removed the file sql/sql_yacc.yy.bak, added by WL 3031 by accident. - Removed the unnecessary AM_YFLAG= --debug introduced by WL 3432, since the compiling option DBUG_OFF takes precedence when setting YYDEBUG.
-