- 30 Apr, 2007 2 commits
- 27 Apr, 2007 1 commit
-
-
unknown authored
Before this fix, the parser would sometime change where a token starts by altering Lex_input_string::tok_start, which later confused the code in sql_yacc.yy that needs to capture the source code of a SQL statement, like to represent the body of a stored procedure. This line of code in sql_lex.cc : case MY_LEX_USER_VARIABLE_DELIMITER: lip->tok_start= lip->ptr; // Skip first ` would <skip the first back quote> ... and cause the bug reported. In general, the responsibility of sql_lex.cc is to *find* where token are in the SQL text, but is *not* to make up fake or incomplete tokens. With a quoted label like `my_label`, the token starts on the first quote. Extracting the token value should not change that (it did). With this fix, the lexical analysis has been cleaned up to not change lip->tok_start (in the case found for this bug). The functions get_token() and get_quoted_token() now have an extra parameters, used when some characters from the beginning of the token need to be skipped when extracting a token value, like when extracting 'AB' from '0xAB', for example, for a HEX_NUM token. This exposed a bad assumption in Item_hex_string and Item_bin_string, which has been fixed: The assumption was that the string given, 'AB', was in fact preceded in memory by '0x', which might be false (it can be preceded by "x'" and followed by "'" -- or not be preceded by valid memory at all) If a name is needed for Item_hex_string or Item_bin_string, the name is taken from the original and true source code ('0xAB'), and assigned in the select_item rule, instead of relying on assumptions related to how memory is used. mysql-test/r/sp.result: Lex_input_stream::tok_start must point at the real start of a token. mysql-test/t/sp.test: Lex_input_stream::tok_start must point at the real start of a token. sql/item.cc: Lex_input_stream::tok_start must point at the real start of a token. sql/sql_lex.cc: Lex_input_stream::tok_start must point at the real start of a token. sql/sql_yacc.yy: Lex_input_stream::tok_start must point at the real start of a token.
-
- 26 Apr, 2007 1 commit
-
-
unknown authored
-
- 25 Apr, 2007 2 commits
- 24 Apr, 2007 2 commits
-
-
unknown authored
into weblab.(none):/home/marcsql/TREE/mysql-5.0-25411_d sql/item_func.cc: Auto merged sql/log_event.cc: Auto merged sql/mysql_priv.h: Auto merged sql/slave.cc: Auto merged sql/sp.cc: Auto merged sql/sp_head.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_lex.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_parse.cc: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_view.cc: Auto merged
-
unknown authored
The issue found with bug 25411 is due to the function skip_rear_comments() which damages the source code while implementing a work around. The root cause of the problem is in the lexical analyser, which does not process special comments properly. For special comments like : [1] aaa /*!50000 bbb */ ccc since 5.0 is a version older that the current code, the parser is in lining the content of the special comment, so that the query to process is [2] aaa bbb ccc However, the text of the query captured when processing a stored procedure, stored function or trigger (or event in 5.1), can be after rebuilding it: [3] aaa bbb */ ccc which is wrong. To fix bug 25411 properly, the lexical analyser needs to return [2] when in lining special comments. In order to implement this, some preliminary cleanup is required in the code, which is implemented by this patch. Before this change, the structure named LEX (or st_lex) contains attributes that belong to lexical analysis, as well as attributes that represents the abstract syntax tree (AST) of a statement. Creating a new LEX structure for each statements (which makes sense for the AST part) also re-initialized the lexical analysis phase each time, which is conceptually wrong. With this patch, the previous st_lex structure has been split in two: - st_lex represents the Abstract Syntax Tree for a statement. The name "lex" has not been changed to avoid a bigger impact in the code base. - class lex_input_stream represents the internal state of the lexical analyser, which by definition should *not* be reinitialized when parsing multiple statements from the same input stream. This change is a pre-requisite for bug 25411, since the implementation of lex_input_stream will later improve to deal properly with special comments, and this processing can not be done with the current implementation of sp_head::reset_lex and sp_head::restore_lex, which interfere with the lexer. This change set alone does not fix bug 25411. sql/item_func.cc: Refactoring, separate lex_input_stream from st_lex. sql/log_event.cc: Refactoring, separate lex_input_stream from st_lex. sql/mysql_priv.h: Refactoring, separate lex_input_stream from st_lex. sql/slave.cc: Refactoring, separate lex_input_stream from st_lex. sql/sp.cc: Refactoring, separate lex_input_stream from st_lex. sql/sp_head.cc: Refactoring, separate lex_input_stream from st_lex. sql/sp_head.h: Refactoring, separate lex_input_stream from st_lex. sql/sql_class.cc: Refactoring, separate lex_input_stream from st_lex. sql/sql_class.h: Refactoring, separate lex_input_stream from st_lex. sql/sql_lex.cc: Refactoring, separate lex_input_stream from st_lex. sql/sql_lex.h: Refactoring, separate lex_input_stream from st_lex. sql/sql_parse.cc: Refactoring, separate lex_input_stream from st_lex. sql/sql_prepare.cc: Refactoring, separate lex_input_stream from st_lex. sql/sql_trigger.cc: Refactoring, separate lex_input_stream from st_lex. sql/sql_view.cc: Refactoring, separate lex_input_stream from st_lex. sql/sql_yacc.yy: Refactoring, separate lex_input_stream from st_lex.
-
- 21 Apr, 2007 6 commits
-
-
unknown authored
into blade09.mysql.com:/tmp/mmj/mysql-5.0-runtime
-
unknown authored
into blade09.mysql.com:/tmp/mmj/mysql-5.1-runtime
-
unknown authored
mysql-test/t/sp_trans_log.test: test disabled in embedded server
-
unknown authored
into mysql.com:/d2/hf/mrg/mysql-5.1-opt sql/item_cmpfunc.cc: Auto merged sql/sql_select.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_view.cc: Auto merged
-
unknown authored
into bk-internal.mysql.com:/data0/bk/mysql-5.1-opt sql/item_cmpfunc.cc: Auto merged sql/sql_select.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_view.cc: Auto merged
-
unknown authored
-
- 20 Apr, 2007 20 commits
-
-
unknown authored
-
unknown authored
into bk-internal.mysql.com:/data0/bk/mysql-5.0-opt sql/item_cmpfunc.cc: Auto merged sql/sql_select.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_view.cc: Auto merged
-
unknown authored
into weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge mysql-test/r/sp.result: Auto merged mysql-test/t/sp.test: Auto merged
-
unknown authored
into weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge client/mysqldump.c: Auto merged mysql-test/t/sp.test: Auto merged sql/event_data_objects.cc: Auto merged sql/item_func.cc: Auto merged sql/sp_head.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged
-
unknown authored
into moonbone.local:/mnt/gentoo64/work/bk-trees/mysql-5.1-opt mysql-test/r/func_str.result: Auto merged mysql-test/r/key.result: Auto merged mysql-test/r/row.result: Auto merged mysql-test/r/subselect.result: Auto merged mysql-test/r/subselect3.result: Auto merged mysql-test/r/view.result: Auto merged mysql-test/t/func_str.test: Auto merged mysql-test/t/key.test: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_cmpfunc.h: Auto merged sql/item_strfunc.h: Auto merged sql/item_subselect.h: Auto merged sql/sql_select.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_view.cc: Auto merged mysql-test/t/view.test: Manually merged sql/sql_lex.h: Manually merged
-
unknown authored
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1 BitKeeper/deleted/.del-rpl_critical_errors.result: Delete: mysql-test/r/rpl_critical_errors.result
-
unknown authored
mysql-test/r/rpl_critical_errors.result: New BitKeeper file ``mysql-test/r/rpl_critical_errors.result''
-
unknown authored
mysql-test/r/rpl_critical_errors.result: New BitKeeper file ``mysql-test/r/rpl_critical_errors.result''
-
unknown authored
into gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt-27704
-
unknown authored
into gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt-27704 mysql-test/r/subselect.result: Auto merged mysql-test/t/row.test: Auto merged mysql-test/r/row.result: Test case updated for Bug#27704 (incorrect comparison of rows with NULL components). sql/item_cmpfunc.cc: Bug#27704: incorrect comparison of rows with NULL components. sql/item_cmpfunc.h: Bug#27704: incorrect comparison of rows with NULL components. Cosmetic fix.
-
unknown authored
Support for NULL components was incomplete for row comparison, fixed. Added support for abort_on_null at compare_row() like in 5.x sql/item_cmpfunc.h: Bug#27704: incorrect comparison of rows with NULL components Added support for abort_on_null at Item_bool_func2 like in 5.x sql/item_cmpfunc.cc: Bug#27704: incorrect comparison of rows with NULL components Support for NULL components was incomplete for row comparison, fixed. Added support for abort_on_null at compare_row() like in 5.x mysql-test/t/row.test: Test case updated for Bug#27704 (incorrect comparison of rows with NULL components) mysql-test/r/row.result: Test case updated for Bug#27704 (incorrect comparison of rows with NULL components) mysql-test/r/subselect.result: Test case updated for Bug#27704 (incorrect comparison of rows with NULL components)
-
unknown authored
into magare.gmz:/home/kgeorge/mysql/autopush/B27786-5.0-opt
-
unknown authored
This bug was intruduced by the fix for bug#17212 (in 4.1). It is not ok to call test_if_skip_sort_order since this function will alter the execution plan. By contract it is not ok to call test_if_skip_sort_order in this context. This bug appears only in the case when the optimizer has chosen an index for accessing a particular table but finds a covering index that enables it to skip ORDER BY. This happens in test_if_skip_sort_order. mysql-test/r/key.result: Bug#24778 test case. The bug causes the result to be the empty set. mysql-test/t/key.test: Bug#24778 The minimal test case that reveals the bug. The reason for such a complicated schema is that we have to convince the optimizer to pick one index, then discard it in order to be able to skip ORDER BY. sql/sql_select.cc: bug#24778 Removed the call to test_if_skip_sort_order that constituted the bug.
-
unknown authored
into romeo.(none):/home/bk/merge-mysql-5.1 client/mysql.cc: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/item.cc: Auto merged sql/item_cmpfunc.cc: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/set_var.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_delete.cc: Auto merged sql/sql_select.cc: Auto merged sql/sql_table.cc: Auto merged configure.in: Merging 5.0 into 5.1 sql/slave.cc: Merging 5.0 into 5.1
-
unknown authored
into romeo.(none):/home/bk/merge-mysql-5.1 BitKeeper/etc/ignore: auto-union client/mysql.cc: Auto merged client/mysqlbinlog.cc: Auto merged configure.in: Auto merged client/mysqltest.c: Auto merged mysql-test/r/rpl_ndb_basic.result: Auto merged mysql-test/t/disabled.def: Auto merged sql/CMakeLists.txt: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/ha_ndbcluster.h: Auto merged sql/ha_ndbcluster_binlog.cc: Auto merged sql/log.cc: Auto merged sql/log_event.cc: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/set_var.cc: Auto merged sql/slave.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_insert.cc: Auto merged sql/sql_repl.cc: Auto merged
-
unknown authored
into romeo.(none):/home/bk/merge-mysql-5.0 client/mysql.cc: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/set_var.cc: Auto merged sql/slave.cc: Auto merged sql/sql_class.cc: Auto merged
-
unknown authored
into romeo.(none):/home/bkroot/mysql-5.0-rpl
-
unknown authored
into romeo.(none):/home/bk/b27779-mysql-5.1-rpl
-
unknown authored
-
unknown authored
When merging views into the enclosing statement the ORDER BY clause of the view is merged to the parent's ORDER BY clause. However when the VIEW is merged into an UNION branch the ORDER BY should be ignored. Use of ORDER BY for individual SELECT statements implies nothing about the order in which the rows appear in the final result because UNION by default produces unordered set of rows. Fixed by ignoring the ORDER BY clause from the merge view when expanded in an UNION branch. mysql-test/r/view.result: Bug #27786: test case mysql-test/t/view.test: Bug #27786: test case sql/sql_lex.h: Bug #27786: add a is_union() inlined function Returns true if the unit represents an UNION. sql/sql_view.cc: Bug #27786: ignore ORDER BY in mergeable views when in UNION context
-
- 19 Apr, 2007 3 commits
-
-
unknown authored
into magare.gmz:/home/kgeorge/mysql/autopush/B27530-5.0-opt
-
unknown authored
They can drop table after table names list creation and before table opening. We open non existing table and get ER_NO_SUCH_TABLE error. In this case we do not store the record into I_S table and clear error. sql/sql_show.cc: Hide error for not existing table
-
unknown authored
mysql-test/r/ndb_binlog_ddl_multi.result: corrrection of test case (this was actually a bug that had not been spotted, that was fixed by previous patch)
-
- 18 Apr, 2007 3 commits
-
-
unknown authored
revert back to old show_binlog_events asto many test failures, and create a show_binlog_events2 instead BitKeeper/etc/ignore: Added client/log_event_old.cc client/log_event_old.h client/rpl_record_old.cc client/rpl_record_old.h libmysqld/log_event_old.cc libmysqld/rpl_record.cc libmysqld/rpl_record_old.cc to the ignore list mysql-test/include/show_binlog_events2.inc: New BitKeeper file ``mysql-test/include/show_binlog_events2.inc''
-
unknown authored
- test case sql/ha_ndbcluster_binlog.cc: drop table not logged when it should mysql-test/r/ndb_binlog_log_bin.result: New BitKeeper file ``mysql-test/r/ndb_binlog_log_bin.result'' mysql-test/t/ndb_binlog_log_bin.test: New BitKeeper file ``mysql-test/t/ndb_binlog_log_bin.test''
-
unknown authored
- both for data schema operations - also make sure schema events vet the right server id when injected into the binlog - use same mechanism to signal server_id in bug#17095, and reserve some "id's" for flagging special conditions on the event, in this case do not log it - enable printing of server ids in the testcases to show that we cot it right
-