An error occurred fetching the project authors.
- 27 Sep, 2005 1 commit
-
-
unknown authored
Fixed bug #13411. Fixed name resolution for non-qualified reference to a view column in the HAVING clause. view.result, view.test: Added a test case for bug #13411. mysql-test/t/view.test: Added a test case for bug #13411. mysql-test/r/view.result: Added a test case for bug #13411. sql/item.cc: Fixed bug #13411. Fixed name resolution for non-qualified reference to a view column in the HAVING clause. sql/sql_base.cc: Fixed bug #13411. Fixed name resolution for non-qualified reference to a view column in the HAVING clause.
-
- 22 Sep, 2005 1 commit
-
-
unknown authored
Fixed problems in test suite where some test failed Fixed access to not initialized memory in federated Fixed access to not initialized memory when using BIT fields in internal temporary tables BitKeeper/etc/ignore: added libmysqld/sql_cursor.h mysql-test/r/information_schema.result: Change view names to 'v#' to not cause massive conflict with other tests if test dies in the middlecd mysql-test/r/information_schema_inno.result: Remove used tables at start mysql-test/r/multi_statement.result: Remove used tables at start mysql-test/r/temp_table.result: Change view names to 'v#' to not cause massive conflict with other tests if test dies in the middle mysql-test/r/type_bit.result: More tests mysql-test/t/information_schema.test: Change view names to 'v#' to not cause massive conflict with other tests if test dies in the middle mysql-test/t/information_schema_inno.test: Remove used tables at start mysql-test/t/multi_statement.test: Remove used tables at start mysql-test/t/temp_table.test: Change view names to 'v#' to not cause massive conflict with other tests if test dies in the middle mysql-test/t/type_bit.test: More tests mysql-test/valgrind.supp: Removed some valgrind warnings that isn't errors sql/ha_federated.cc: Fixed errors discovered by valgrind: - Socket was not initialized - share->scheme was deleted while there was still pointer into it from the hash sql/item_func.h: Remove access to table object from cleanup() as the table object may have been dropped earlier (In case of temporary tables or of close_thread_tables() is run before cleanup()) This fixed a bug with access to already freed memory sql/sql_base.cc: Reset variables used by fulltext sql/sql_select.cc: Fixed various problems with bit fields when used in internal temporary tables. Calculate space needed for bit fields correctly (previously we allocated more space than needed for rows in heap/myisam tables)
-
- 20 Sep, 2005 1 commit
-
-
unknown authored
The problem was in the way table references are pre-filtered when resolving a qualified field. When resolving qualified table references we search recursively in the operands of the join. If there is natural/using join with a merge view, the first call to find_field_in_table_ref makes a recursive call to itself with the view as the new table reference to search for the column. However the view has both nested_join and join_columns != NULL so it skipped the test whether the view name matches the field qualifier. As a result the field was found in the view since the view already has a field with the same name. Thus the field was incorrectly resolved as the view field. mysql-test/r/select.result: Test for BUG#13127. mysql-test/t/select.test: Test for BUG#13127. sql/sql_base.cc: The patch contains two independent changes: - When searching for qualified fields, include merge views and information schema tables used with SHOW (both using TABLE_LIST::field_translation to represent result fields) in the test that compares the qualifying table with the name of the table reference being searched. This change fixes the bug. - Do not search the materialized list of columns of a NATURAL/USING join if 'table_list' is a stored table or merge view. Instead search directly in the table or view as if it is not under a natural join. This is a performance improvement since if 'table_list' is a stored table, then the search can utilize the name hash for table names.
-
- 15 Sep, 2005 1 commit
-
-
unknown authored
libmysqld/lib_sql.cc: changed securety context switching mysql-test/r/rpl_sp.result: now it show real information from changed security context of SP (checked) sql/ha_innodb.cc: changed securety context switching sql/item.cc: changed securety context switching sql/item_func.cc: changed securety context switching sql/item_strfunc.cc: changed securety context switching sql/log.cc: changed securety context switching sql/mysql_priv.h: changed securety context switching sql/mysqld.cc: changed securety context switching sql/repl_failsafe.cc: changed securety context switching sql/set_var.cc: changed securety context switching sql/slave.cc: changed securety context switching sql/sp.cc: changed securety context switching sql/sp_head.cc: changed securety context switching in case of inability to switch context we return error now sql/sp_head.h: changed securety context switching sql/sql_acl.cc: changed securety context switching sql/sql_acl.h: changed securety context switching sql/sql_base.cc: changed securety context switching sql/sql_class.cc: changed securety context switching sql/sql_class.h: changed securety context switching sql/sql_db.cc: changed securety context switching sql/sql_insert.cc: changed securety context switching sql/sql_parse.cc: changed securety context switching sql/sql_show.cc: changed securety context switching sql/sql_trigger.cc: changed securety context switching sql/sql_view.cc: changed securety context switching sql/sql_yacc.yy: changed securety context switching
-
- 14 Sep, 2005 1 commit
-
-
unknown authored
This bug occurs when some trigger for table used by DML statement is created or changed while statement was waiting in lock_tables(). In this situation prelocking set which we have calculated becames invalid which can easily lead to errors and even in some cases to crashes. With proposed patch we no longer silently reopen tables in lock_tables(), instead caller of lock_tables() becomes responsible for reopening tables and recalculation of prelocking set. mysql-test/t/trigger.test: Added tests for bug #12704 "Server crashes during trigger execution". Unfortunately these tests rely on the order in which tables are locked by statement so they are non-determenistic and therefore should be disabled. sql/lock.cc: mysql_lock_tables(): Now instead of always reopening altered or dropped tables by itself mysql_lock_tables() can notify upper level and rely on caller doing this. sql/mysql_priv.h: Now mysql_lock_tables() can either reopen deleted or altered tables by itself or notify caller about such situation through 'need_reopen' argument and rely on it in this. Also lock_tables() has new 'need_reopen' out parameter through which it notifies caller that some tables were altered or dropped so he needs to reopen them (and rebuild prelocking set some triggers may change or simply appear). sql/sp.cc: sp_add_used_routine(): To be able to restore LEX::sroutines_list to its state right after parsing we now adjust LEX::sroutines_list_own_last/sroutines_list_own_elements when we add directly used routine. sp_remove_not_own_routines(): Added procedure for restoring LEX::sroutines/sroutines_list to their state right after parsing (by throwing out non-directly used routines). sp_cache_routines_and_add_tables_for_view()/sp_update_stmt_used_routines(): We should use LEX::sroutines_list instead of LEX::sroutines as source of routines used by view, since LEX::sroutines is not availiable for view on second attempt to open it (see comment in open_tables() about it). sql/sp.h: sp_remove_not_own_routines(): Added procedure for restoring LEX::sroutines/sroutines_list to their state right after parsing (by throwing out non-directly used routines). sql/sp_head.cc: Removed assert which is no longer always true. sql/sql_base.cc: reopen_table(): When we re-open table and do shallow copy of TABLE object we should adjust pointers to it in associated Table_triggers_list object. Removed nil operation. open_tables(): Now this function is able to rebuild prelocking set for statement if it is needed. It also correctly handles FLUSH TABLES which may occur during its execution. lock_tables(): Instead of allowing mysql_lock_tables() to silently reopen altered or dropped tables let us notify caller and rely on that it will do reopen itself. This solves the problem when trigger suddenly appears or changed during mysq_lock_tables(). close_tables_for_reopen(): Added routine for properly preparing for reopening of tables and recalculation of set of prelocked tables. sql/sql_handler.cc: Here we let mysql_lock_tables() to reopen dropped or altered tables by itself. sql/sql_insert.cc: Here we let mysql_lock_tables() to reopen dropped or altered tables by itself. sql/sql_lex.cc: LEX: Added 'sroutines_list_own_last' and 'sroutines_list_own_elements' members which are used for keeping state in which 'sroutines_list' was right after statement parsing (and for restoring of this list to this state). sql/sql_lex.h: LEX: Added 'sroutines_list_own_last' and 'sroutines_list_own_elements' members which are used for keeping state in which 'sroutines_list' was right after statement parsing (and for restoring of this list to this state). Added chop_off_not_own_tables() method to simplify throwing away list of implicitly used (prelocked) tables. sql/sql_prepare.cc: Now instead of silently reopening altered or dropped tables in lock_tables() we notify caller and rely on that the caller will reopen tables. sql/sql_table.cc: Here we let mysql_lock_tables() to reopen dropped or altered tables by itself. sql/sql_trigger.cc: Added Table_triggers_list::set_table() method to adjust Table_triggers_list to new pointer to TABLE instance. sql/sql_trigger.h: Added Table_triggers_list::set_table() method to adjust Table_triggers_list to new pointer to TABLE instance. sql/sql_update.cc: Now instead of silently reopening altered or dropped tables in lock_tables() we notify caller and rely on that the caller will reopen tables.
-
- 13 Sep, 2005 2 commits
-
-
unknown authored
Solution for 4.0 and 4.1. If the caller cannot re-open table(s), it gives a NULL 'refresh' argument to open_table(). We used to ignore flushes then. Now we ignore drops too.
-
unknown authored
Solution for 5.0. Changed calls to open_table(). Requested to ignore flush at places where the command did already lock tables. This could happen in CREATE ... SELECT and ALTER TABLE. No test case. The bug can only be triggered by true concurrency. The stress test suite provides a test case for this. sql/sql_base.cc: Bug#12845 - Stress test: Server crashes on CREATE .. SELECT statement Solution for 5.0. Changed open_table() so that ignoring flush requests is dependend on the 'flags' parameter as ignoring drop request was already. This aims for consistent behaviour. sql/sql_table.cc: Bug#12845 - Stress test: Server crashes on CREATE .. SELECT statement Solution for 5.0. Changed calls to open_table(). Requested to ignore flush at places where the command did already lock tables. This could happen in CREATE ... SELECT and ALTER TABLE.
-
- 12 Sep, 2005 1 commit
-
-
unknown authored
mysql-test/r/select.result: Test for BUG#13067 mysql-test/t/select.test: Test for BUG#13067 sql/sql_base.cc: Correctly compare field names with respect to case sensitivity.
-
- 11 Sep, 2005 1 commit
-
-
unknown authored
When view column aliased in subselect alias is set on ref which represents field. When tmp table is created for subselect, it takes name of original field not ref. Because of this alias on view column in subselect is lost. Which results in reported error. Now when alias is set on ref, it's set on ref real item too. mysql-test/r/view.result: Test case for bug #12993 View column rename broken in subselect mysql-test/t/view.test: Test case for bug #12993 View column rename broken in subselect sql/sql_base.cc: Fix bug #12993 View column rename broken in subselect Now when alias is set on ref, it's set on ref real item too.
-
- 08 Sep, 2005 2 commits
-
-
unknown authored
are thus dangling later) mysql-test/r/ps.result: test for bug #12651 (data allocated on thd's arena but not on permanent arena) mysql-test/t/ps.test: test for bug #12651 (data allocated on thd's arena but not on permanent arena) sql/sql_base.cc: if there is tree transformation then backup the current arena and use permanent one (for PS) otherwise the data will be deallocated after the prepare process is finished. this bug was introduced with the recent natural join patch
-
unknown authored
mysql-test/r/select.result: Test for BUG#12977. mysql-test/t/select.test: Test for BUG#12977. sql/sql_base.cc: - Compare table qualifier of qualified fields only with tables that are not natural joins or their operands. - For qualified fields perform recursive search in all operands of natural joins that are nested joins. - Symmetrically detect ambiguous columns for both operands of NATURAL/USING joins.
-
- 02 Sep, 2005 2 commits
-
-
unknown authored
- current_arena to stmt_arena: the thread may have more than one 'current' arenas: one for runtime data, and one for the parsed tree of a statement. Only one of them is active at any moment. - set_item_arena -> set_query_arena, because Item_arena was renamed to Query_arena a while ago - set_n_backup_item_arena -> set_n_backup_active_arena; the active arena is the arena thd->mem_root and thd->free_list are currently pointing at. - restore_backup_item_arena -> restore_active_arena (with the same rationale) - change_arena_if_needed -> activate_stmt_arena_if_needed; this method sets thd->stmt_arena active if it's not done yet. sql/item.cc: Rename. sql/item_cmpfunc.cc: Rename. sql/item_func.cc: Rename. sql/item_subselect.cc: Rename. sql/item_subselect.h: Remove an unused forward declaration. sql/item_sum.h: Remove an unused forward declaration. sql/mysql_priv.h: Remove an unused forward declaration. sql/sp.cc: Rename. sql/sp_head.cc: Rename. sql/sql_base.cc: Rename. sql/sql_class.cc: Rename. sql/sql_class.h: Rename. sql/sql_lex.cc: Rename. sql/sql_parse.cc: Rename. sql/sql_prepare.cc: Rename. sql/sql_select.cc: Rename. sql/sql_show.cc: Rename. sql/sql_union.cc: Rename. sql/sql_view.cc: Rename. sql/table.cc: Rename.
-
unknown authored
mysql-test/t/lowercase_view.test: error code changed after merege mysql-test/t/view.test: error code changed after merege sql/item.cc: inline function used instead of frequently used expression removed old TODO sql/sql_base.cc: layoutfixed inline function used instead of frequently used expression sql/sql_insert.cc: inline function used instead of frequently used expression
-
- 24 Aug, 2005 2 commits
- 23 Aug, 2005 2 commits
-
-
unknown authored
mysql-test/r/select.result: Test for BUG#6276. mysql-test/t/select.test: Test for BUG#6276. sql/sql_base.cc: Add a true ON condition for outer joins without common columns.
-
unknown authored
* Provide backwards compatibility extension to name resolution of coalesced columns. The patch allows such columns to be qualified with a table (and db) name, as it is in 4.1. Based on a patch from Monty. * Adjusted tests accordingly to test both backwards compatible name resolution of qualified columns, and ANSI-style resolution of non-qualified columns. For this, each affected test has two versions - one with qualified columns, and one without. mysql-test/include/ps_query.inc: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/bdb.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/innodb.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/join.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/join_nested.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/join_outer.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/null_key.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/order_by.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/ps_2myisam.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/ps_3innodb.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/ps_4heap.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/ps_5merge.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/ps_6bdb.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/ps_7ndb.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/select.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/subselect.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/r/type_ranges.result: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/t/bdb.test: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/t/innodb.test: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/t/join.test: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/t/join_nested.test: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/t/join_outer.test: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/t/null_key.test: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/t/order_by.test: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/t/select.test: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/t/subselect.test: Put back old tests to test that coalesced columns of natural joins can be qualified. mysql-test/t/type_ranges.test: Put back old tests to test that coalesced columns of natural joins can be qualified. sql/sql_base.cc: * Applied Monty's patch for backwards compatible name resolution of qualified columns. The idea is: - When a column is qualified, search for the column in all tables/views underlying each natural join. In this case natural joins are *not* considered leaves. - If a column is not qualified, then consider natural joins as leaves, thus directly search the result columns of natural joins. * Simplified 'find_field_in_tables()' - unified two similar loops into one. sql/table.cc: - Removed method & members not needed after Monty's patch. sql/table.h: - Removed method & members not needed after Monty's patch. tests/mysql_client_test.c: Put back old tests to test that coalesced columns of natural joins can be qualified.
-
- 21 Aug, 2005 1 commit
-
-
unknown authored
include/my_global.h: Safer macros to avoid possible overflows sql/item_cmpfunc.cc: Simple optimization sql/sp_head.cc: Indentation fixes Remove not needed "else" levels Added error checking for 'new' Simpler reseting of thd->spcont in execute_procedure sql/sql_base.cc: Faster new sql/sql_lex.cc: Use 'TRUE' instead of 'true' sql/sql_parse.cc: Faster new sql/sql_view.cc: No need to set 'tables' as it's not used sql/table.cc: Simpler DBUG_ASSERT()
-
- 20 Aug, 2005 1 commit
-
-
unknown authored
Fixed new bug when running a SP without a default database mysql-test/r/information_schema.result: Added test to cover changes made in default handling mysql-test/r/sp-security.result: Added test when executing SP without a default database mysql-test/t/information_schema.test: Added test to cover changes made in default handling mysql-test/t/sp-security.test: Added test when executing SP without a default database sql/item_strfunc.cc: Removed wrong push sql/mysqld.cc: Indentation fix sql/sql_base.cc: Use share->db instead of share->table_cache_key Remove assert that can never fail (because of test in previous row) sql/sql_db.cc: Allow empty database name when called from SP (To allow on run without a default database) sql/sql_parse.cc: Added comment sql/sql_show.cc: Indentation fixes Simplified code by checking for 'wrong' condition first and doing continue instead of going down one level Simplified precision and decimal handling
-
- 19 Aug, 2005 1 commit
-
-
unknown authored
- Corrected problem with N-way nested natural joins in PS mode. - Code cleanup - More asserts to check consistency of name resolution contexts - Fixed potential memory leak of name resolution contexts mysql-test/r/join.result: - Corrected problem with N-way nested natural joins in PS mode. mysql-test/t/join.test: - Corrected problem with N-way nested natural joins in PS mode. sql/item.h: - Fixed potential memory leak. sql/sql_base.cc: - the local context of Item_fields that participate in TABLE_LIST::on_cond for natural joins is correctly set to the tables where the corresponding fields originate from. - removed unused variables - correct allocation of contexts sql/sql_parse.cc: - correct allocation of contexts for JOIN ON conditions. sql/table.cc: - added asserts to check the consistency of name resolution contexts sql/table.h: - added asserts to check the consistency of name resolution contexts
-
- 18 Aug, 2005 1 commit
-
-
unknown authored
If we are in stored function or trigger we should ensure that we won't change table that is already used by calling statement (this can damage table or easily cause infinite loops). Particularly this means that recursive triggers should be disallowed. mysql-test/r/sp-error.result: Added tests checking that in functions we don't allow to update tables which are used by statements which invoke these functions. mysql-test/r/trigger.result: Added test for bug #11896 "Partial locking in case of recursive trigger definitions". mysql-test/t/sp-error.test: Added tests checking that in functions we don't allow to update tables which are used by statements which invoke these functions. mysql-test/t/trigger.test: Added test for bug #11896 "Partial locking in case of recursive trigger definitions". sql/share/errmsg.txt: Added error messages for complaining about situations when in function or trigger we try to change table which is used in statement invoking this function or trigger. sql/sql_base.cc: open_table(): If we are in stored function or trigger we should ensure that we won't change table that is already used by calling statement (this can damage table or easily cause infinite loops). So if we are opening table for writing, we should check that it is not already open by some calling stamement.
-
- 17 Aug, 2005 3 commits
-
-
unknown authored
- fixed a problem with RIGHT JOIN ON and enabled corresponding tests in select.test - fixed a memory leak mysql-test/r/select.result: Fixed a problem with RIGHT JOIN ON queries, enabling the corresponding tests. mysql-test/t/select.test: Fixed a problem with RIGHT JOIN ON queries, enabling the corresponding tests. sql/sql_base.cc: Fixed a problem with RIGHT JOINs that have operand(s) which are NATURAL JOIN(s). sql/table.h: Inherit from Sql_alloc for proper memory allocation. The change fixes a memory leak.
-
unknown authored
-
unknown authored
- Applied Monty's patch after his review of sql_base.cc sql/sql_base.cc: Applied Monty's patch after his review of WL#2486.
-
- 16 Aug, 2005 1 commit
-
-
unknown authored
(after review commit) mysql-test/r/show_check.result: test the extended functionality (so far not documented) of SHOW OPEN FILES mysql-test/t/show_check.test: test the extended functionality (so far not documented) of SHOW OPEN FILES sql/mysql_priv.h: pass the name of the database for checking sql/sql_base.cc: first check against the db if present (SHOW OPEN FILES FROM xxx) then do wild compare but only against the table name sql/sql_show.cc: pass the DB if specified
-
- 12 Aug, 2005 3 commits
-
-
unknown authored
Now we keep all active XID's in a hash
-
unknown authored
"Process NATURAL and USING joins according to SQL:2003". * Some of the main problems fixed by the patch: - in "select *" queries the * expanded correctly according to ANSI for arbitrary natural/using joins - natural/using joins are correctly transformed into JOIN ... ON for any number/nesting of the joins. - column references are correctly resolved against natural joins of any nesting and combined with arbitrary other joins. * This patch also contains a fix for name resolution of items inside the ON condition of JOIN ... ON - in this case items must be resolved only against the JOIN operands. To support such 'local' name resolution, the patch introduces a stack of name resolution contexts used at parse time. NOTICE: - This patch is not complete in the sense that - there are 2 test cases that still do not pass - one in join.test, one in select.test. Both are marked with a comment "TODO: WL#2486". - it does not include a new test specific for the task mysql-test/include/ps_query.inc: Adjusted according to standard NATURAL/USING join semantics., mysql-test/r/bdb.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/derived.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/errors.result: The column as a whole cannot be resolved, so different error message. mysql-test/r/fulltext.result: Adjusted according to standard JOIN ... ON semantics => the ON condition can refer only to the join operands. mysql-test/r/fulltext_order_by.result: More detailed error message. mysql-test/r/innodb.result: Adjusted according to standard NATURAL/USING join semantics. This test doesn't pass completetly yet! mysql-test/r/insert_select.result: More detailed error message. mysql-test/r/join.result: Adjusted according to standard NATURAL/USING join semantics. NOTICE: there is one test case that still fails, and it is commeted out and marked with WL#2486 in the test file. mysql-test/r/join_crash.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/join_nested.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/join_outer.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/multi_update.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/null_key.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/order_by.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/ps_2myisam.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/ps_3innodb.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/ps_4heap.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/ps_5merge.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/ps_6bdb.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/ps_7ndb.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/select.result: Adjusted according to standard NATURAL/USING join semantics. NOTICE: there is one failing test case which is commented with WL#2486 in the test file. mysql-test/r/subselect.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/type_ranges.result: Adjusted according to standard NATURAL/USING join semantics. mysql-test/r/union.result: More detailed error message. mysql-test/t/bdb.test: Adjusted according to standard NATURAL/USING join semantics. mysql-test/t/errors.test: Adjusted according to standard NATURAL/USING join semantics. mysql-test/t/fulltext.test: Adjusted according to standard JOIN ... ON semantics => the ON condition can refer only to the join operands. mysql-test/t/fulltext_order_by.test: More detailed error message. mysql-test/t/innodb.test: Adjusted according to standard NATURAL/USING join semantics. This test doesn't pass completetly yet! mysql-test/t/insert_select.test: More detailed error message. mysql-test/t/join.test: Adjusted according to standard NATURAL/USING join semantics. NOTICE: there is one test case that still fails, and it is commeted out and marked with WL#2486 in the test file. mysql-test/t/join_crash.test: Adjusted according to standard NATURAL/USING join semantics. mysql-test/t/join_nested.test: Adjusted according to standard NATURAL/USING join semantics. mysql-test/t/join_outer.test: Adjusted according to standard NATURAL/USING join semantics. mysql-test/t/null_key.test: Adjusted according to standard NATURAL/USING join semantics. mysql-test/t/order_by.test: Adjusted according to standard NATURAL/USING join semantics. mysql-test/t/select.test: Adjusted according to standard NATURAL/USING join semantics. NOTICE: there is one test case that still fails, and it is commeted out and marked with WL#2486 in the test file. mysql-test/t/subselect.test: Adjusted according to standard NATURAL/USING join semantics. mysql-test/t/type_ranges.test: Adjusted according to standard NATURAL/USING join semantics. mysql-test/t/union.test: More detailed error message. sql/item.cc: - extra parameter to find_field_in_tables - find_field_in_real_table renamed to find_field_in_table - fixed comments/typos sql/item.h: - added [first | last]_name_resolution_table to class Name_resolution_context - commented old code - standardized formatting sql/mysql_priv.h: - refactored the find_field_in_XXX procedures, - added a new procedure for natural join table references, - renamed the find_field_in_XXX procedures to clearer names sql/sp.cc: - pass the top-most list of the FROM clause to setup_tables - extra parameter to find_field_in_tables sql/sql_acl.cc: - renamed find_field_in_table => find_field_in_table_ref - extra parameter to find_field_in_table_ref - commented old code sql/sql_base.cc: This file contains the core of the implementation of the processing of NATURAL/USING joins (WL#2486). - added many comments to old code - refactored the group of find_field_in_XXX procedures, and added a new procedure for natural joins. There is one find_field_in_XXX procedure per each type of table reference (stored table, merge view, or natural join); one meta-procedure that selects the correct one depeneding on the table reference; and one procedure that goes over a list of table referenes. - NATURAL/USING joins are processed through the procedures: mark_common_columns, store_natural_using_join_columns, store_top_level_join_columns, setup_natural_join_row_types. The entry point to processing NATURAL/USING joins is the procedure 'setup_natural_join_row_types'. - Replaced the specialized Field_iterator_XXX iterators with one generic iterator over the fields of a table reference. - Simplified 'insert_fields' and 'setup_conds' due to encapsulation of the processing of natural joins in a separate set of procedures. sql/sql_class.h: - Commented old code. sql/sql_delete.cc: - Pass the FROM clause to setup_tables. sql/sql_help.cc: - pass the end name resolution table to find_field_in_tables - adjust the list of tables for name resolution sql/sql_insert.cc: - Changed the code that saves and restores the current context to support the list of tables for name resolution - context->first_name_resolution_table, and table_list->next_name_resolution_table. Needed to support an ugly trick to resolve inserted columns only in the first table. - Added Name_resolution_context::[first | last]_name_resolution_table. - Commented old code sql/sql_lex.cc: - set select_lex.parent_lex correctly - set correct state of the current name resolution context sql/sql_lex.h: - Added a stack of name resolution contexts to support local contexts for JOIN ... ON conditions. - Commented old code. sql/sql_load.cc: - Pass the FROM clause to setup_tables. sql/sql_olap.cc: - Pass the FROM clause to setup_tables. sql/sql_parse.cc: - correctly set SELECT_LEX::parent_lex - set the first table of the current name resoltion context - added support for NATURAL/USING joins - commented old code sql/sql_select.cc: - Pass the FROM clause to setup_tables. - Pass the end table to find_field_in_tables - Improved comments sql/sql_show.cc: - Set SELECT_LEX::parent_lex. sql/sql_update.cc: - Pass the FROM clause to setup_tables. sql/sql_yacc.yy: - Added support for a stack of name resolution contexts needed to implement name resolution for JOIN ... ON. A context is pushed for each new JOIN ... ON, and popped afterwards. - Added support for NATURAL/USING joins. sql/table.cc: - Added new class Natural_join_column to hide the heterogeneous representation of column references for stored tables and for views. - Added a new list TABLE_LIST::next_name_resolution_table to support name resolution with NATURAL/USING joins. Also added other members to TABLE_LIST to support NATURAL/USING joins. - Added a generic iterator over the fields of table references of various types - class Field_iterator_table_ref sql/table.h: - Added new class Natural_join_column to hide the heterogeneous representation of column references for stored tables and for views. - Added a new list TABLE_LIST::next_name_resolution_table to support name resolution with NATURAL/USING joins. Also added other members to TABLE_LIST to support NATURAL/USING joins. - Added a generic iterator over the fields of table references of various types - class Field_iterator_table_ref tests/mysql_client_test.c: Adjusted according to standard NATURAL JOIN syntax.
-
unknown authored
Fixed bug #12470. A misplaced initialization of the cond_count counter resulted in a wrong calculation of it. This caused a memory corruption since this counter was used as a parameter of some memory allocation. view.test: Added a test case for bug #12470. mysql-test/t/view.test: Added a test case for bug #12470. sql/sql_base.cc: Fixed bug #12470. A misplaced initialization of the cond_count counter resulted in a wrong calculation of it. This caused a memory corruption since this counter was used as a parameter of some memory allocation.
-
- 11 Aug, 2005 2 commits
-
-
unknown authored
Fixed bug #12382. INSERT statement effectively changed thd->set_query_id to 0, while SELECT statement changed it to 0. As a result the insert_fields function that expanded '*' was called with different values of thd->set_query_id for the query SELECT * FROM view depending on whether it was run after an INSERT or after a SELECT statement. This was corrected by restoring the old value of thd->set_query_id when returning from the function setup_fields where possible reset could occur. If the value of thd->set_query_id == 0 then the fields substituted instead of '*' were not registered as used for bitmaps used_keys. This caused selection of an invalid execution plan for the query SELECT * from <view>. view.result, view.test: Added a test case for bug #12382. mysql-test/t/view.test: Added a test case for bug #12382. mysql-test/r/view.result: Added a test case for bug #12382. sql/sql_base.cc: Fixed bug #12382. INSERT statement effectively changed thd->set_query_id to 0, while SELECT statement changed it to 0. As a result the insert_fields function that expanded '*' was called with different values of thd->set_query_id for the query SELECT * FROM view depending on whether it was run after an INSERT or after a SELECT statement. This was corrected by restoring the old value of thd->set_query_id when returning from the function setup_fields where possible reset could occur. If the value of thd->set_query_id == 0 then the fields substituted instead of '*' were not registered as used for bitmaps used_keys. This caused selection of an invalid execution plan for the query SELECT * from <view>.
-
unknown authored
mysql-test/t/sp.test: Use --disable_parsing instead of comments sql/lock.cc: Remove compiler warning sql/mysqld.cc: Always send valid flag argument to reload_acl_and_cache() sql/sp_cache.cc: Simple optimization Don't use mutex to read 'long' variable Indentation fixes sql/sp_head.cc: Fix comments to use /* */ Set proc_info to 0 after close_thread_tables() sql/sql_base.cc: remove not needed test sql/sql_parse.cc: Always send valid flag argument to reload_acl_and_cache() Fixed indentation Ensure we get an error if reset_master() fails.
-
- 08 Aug, 2005 1 commit
-
-
unknown authored
result set". To enable full access to contents of I_S tables from stored functions or statements that use them, we manipulate with thread's open tables state and ensure that we won't cause deadlock when we open tables by ignoring flushes and name-locks. Building of contents of I_S.TABLES no longer requires locking of tables since we use use handler::info() method with HA_STATUS_AUTO flag instead of handler::update_auto_increment() for obtaining information about auto-increment values. But this also means that handlers have to implement support for HA_STATUS_AUTO flag (particularly InnoDB needs it). mysql-test/r/alter_table.result: Updated test results. This change was caused by the fact that now when we build contents of I_S tables (and thus output of SHOW INDEX) we don't use instances of tables which may be already opened and locked by thread (we always use new instance). mysql-test/r/information_schema.result: Added test which checks how information about current auto-increment value for table is reported in INFORMATION_SCHEMA.TABLES view. mysql-test/r/sp.result: Added test for bug #10055 "Using stored function with information_schema causes empty result set". mysql-test/t/information_schema.test: Added test which checks how information about current auto-increment value for table is reported in INFORMATION_SCHEMA.TABLES view. mysql-test/t/sp.test: Added test for bug #10055 "Using stored function with information_schema causes empty result set". sql/mysql_priv.h: close_thread_tables(): Get rid of 'stopper' argument which is no longer used. Now when we need to open and then close some table without touching tables which are already opened we use THD::reset_n/restore_backup_open_tables_state() methods. open_tables()/open_normal_and_derived_tables(): Added 'flags' argument to be able open tables even if some has done a flush or hold namelock on them. sql/sp.cc: close_proc_table/open_proc_table_for_read/db_find_routine(): Replaced push_open_tables_state/pop_open_tables_state() methods which were saving/restoring current open tables state in/from THD::open_state_list with reset_n_backup_open_tables_state/restore_backup_open_tables_state() methods which assume that backup storage for this state is allocated on stack (or elsewhere) by their caller. open_proc_table_for_read(): Since now we can have several open tables states stacked up we can't rely rely on checking whether we have some tables open in previous state. Instead we always assume that some tables are open and we need to ignore flush while locking mysql.proc. We don't really need MYSQL_LOCK_IGNORE_GLOBAL_READ_LOCK in this case since we open mysql.proc table only for reading. sql/sp.h: Added declarations of open_proc_table_for_read()/close_proc_table() to be able to use them in sql_show.cc. sql/sql_base.cc: close_thread_tables(): Get rid of 'stopper' argument which is no longer used. Now when we need to open and then close some table without touching tables which are already opened we use THD::reset_n/restore_backup_open_tables_state() methods. open_tables()/open_normal_and_derived_tables(): Added 'flags' argument to be able open tables even if some has done a flush or hold namelock on them. sql/sql_class.cc: Open_tables_state, THD: Replaced push_open_tables_state/pop_open_tables_state() methods which were saving/restoring current open tables state in/from THD::open_state_list with reset_n_backup_open_tables_state/restore_backup_open_tables_state() methods which assume that backup storage for this state is allocated on stack (or elsewhere) by their caller. sql/sql_class.h: Open_tables_state, THD: Replaced push_open_tables_state/pop_open_tables_state() methods which were saving/restoring current open tables state in/from THD::open_state_list with reset_n_backup_open_tables_state/restore_backup_open_tables_state() methods which assume that backup storage for this state is allocated on stack (or elsewhere) by their caller. sql/sql_handler.cc: open_tables()/open_normal_and_derived_tables(): Added 'flags' argument to be able open tables even if some has done a flush or hold namelock on them. sql/sql_prepare.cc: open_tables()/open_normal_and_derived_tables(): Added 'flags' argument to be able open tables even if some has done a flush or hold namelock on them. sql/sql_show.cc: get_all_tables(): Now we use THD::reset_n_/restore_backup_open_tables_state() for saving/restoring open tables state instead of working with it directly (This also allows us to have proper content of I_S system tables in statements with stored functions and in stored functions). We also ignore possible flushes when opening tables (we may create deadlock otherwise). Also we do all needed manipulations with LEX in this function and not in get_schema_tables_result() now. get_schema_tables_record(): Let us use handler::info() method with HA_STATUS_AUTO flag for obtaining information about table's auto-increment value. This allows to avoid locking of tables which is needed when we use handler::update_auto_increment() method. fill_schema_proc(): Now we use open_proc_table_for_read/close_proc_table() for access to mysql.proc table (so we won't cause deadlock if we already have some tables open and locked, this also allows us to have proper content in ROUTINES system table in statements using stored functions/in stored functions). get_schema_tables_result(): Moved all manipulations with Open_tables_state and LEX needed for safe opening of tables to ST_SCHEMA_TABLE::fill_table functions (i.e. get_all_tables() and fill_schema_proc()). sql/sql_update.cc: open_tables()/open_normal_and_derived_tables(): Added 'flags' argument to be able open tables even if some has done a flush or hold namelock on them.
-
- 03 Aug, 2005 1 commit
-
-
unknown authored
* Don't activate prelocking mode for evaluating procedure arguments when it is not necessary. * Code structure simplification and cleanup. * Cleanup in .test files mysql-test/r/sp-prelocking.result: Prelocking-free SPs, post-review fixes: Added comment, s/testdb/mysqltest/, fixed a wrong test (error wasnt reported because of known bug in mysqltestrun) mysql-test/r/sp-security.result: Don't drop the table we're not using. mysql-test/r/sp.result: Prelocking-free SPs, post-review fixes: remove redundant "drop table if exists t3" statements mysql-test/t/sp-prelocking.test: Prelocking-free SPs, post-review fixes: Added comment, s/testdb/mysqltest/, fixed a wrong test (error wasnt reported because of known bug in mysqltestrun) mysql-test/t/sp-security.test: Don't drop the table we're not using. mysql-test/t/sp.test: Prelocking-free SPs, post-review fixes: remove redundant "drop table if exists t3" statements sql/sp.cc: New, better defined, sp_get_prelocking_info() function to get info about statement prelocking options sql/sp.h: Prelocking-free SPs, post-review fixes: New, better defined, sp_get_prelocking_info() function to get info about statement prelocking options sql/sp_cache.h: Prelocking-free SPs, post-review fixes: Amended the comments sql/sp_head.cc: Prelocking-free SPs, post-review fixes: Amend the comments, simplify the code that attaches removes statement's prelocking tables. sql/sql_base.cc: Prelocking-free SPs, post-review fixes: * Use a better defined sp_get_prelocking_info() function to get info about statement prelocking options * Don't activate prelocked mode for evaluation of SP arguments that use tables but don't need prelocking. sql/sql_class.cc: Prelocking-free SPs, post-review fixes: Initialize THD members in the order they are declared.
-
- 02 Aug, 2005 1 commit
-
-
unknown authored
frequently used command sequence replaced with inline function BitKeeper/etc/config: logging switching off mysql-test/r/lowercase_view.result: hided view underlying tables from error message mysql-test/r/view.result: hided view underlying tables from error message mysql-test/t/lowercase_view.test: hided view underlying tables from error message mysql-test/t/view.test: hided view underlying tables from error message sql/mysql_priv.h: subroutine which return correct error message sql/share/errmsg.txt: new error message sql/sql_base.cc: subroutine which issue correct error message in case of view presence for duplicated table on update sql/sql_delete.cc: issue correct error message in case of view presence for duplicated table on update sql/sql_insert.cc: issue correct error message in case of view presence for duplicated table on update sql/sql_parse.cc: issue correct error message in case of view presence for duplicated table on update sql/sql_update.cc: issue correct error message in case of view presence for duplicated table on update sql/sql_view.cc: frequently used command sequence replaced with inline function sql/table.cc: frequently used command sequence replaced with inline function sql/table.h: frequently used command sequence replaced with inline function
-
- 31 Jul, 2005 1 commit
-
-
unknown authored
Change bool in C code to my_bool Added to mysqltest --enable_parsning and --disable_parsing to avoid to have to comment parts of tests Added comparison of LEX_STRING's and use this to compare file types for view and trigger files. client/client_priv.h: Added OPT_TRIGGERS (to get rid of compiler warning) client/mysql.cc: Added cast to get rid of compiler warning client/mysqldump.c: Added OPT_TRIGGERS (to get rid of compiler warning) Abort if we can't write to outfile (even if --ignore-errors is given) client/mysqltest.c: Added --enable_parsning and --disable_parsing to avoid to have to comment parts of tests include/my_sys.h: Make my_progname const include/my_time.h: Avoid using 'bool' in C programs mysql-test/lib/init_db.sql: Align with mysql_create_system_tables (Ideally this file should be auto-generated from the above script) mysql-test/r/mysqltest.result: Test for --enable_parsing mysql-test/r/variables.result: Update results after fix for overflow checking of max_heap_table_size mysql-test/t/information_schema.test: USe --enable/disable parsing instead of comments mysql-test/t/mysqltest.test: Test for --enable_parsing mysql-test/t/sp.test: USe --enable/disable parsing instead of comments mysql-test/t/variables.test: Portability fix for 64 bit systems mysql-test/t/view.test: USe --enable/disable parsing instead of comments mysys/my_init.c: May my_progname const mysys/my_static.c: May my_progname const mysys/thr_lock.c: Remove not needed casts sql-common/my_time.c: Change bool -> my_bool as bool is not portable in C programs sql/field.cc: Test number_to_datetime() for -1 instead of < 0 (Safety fix) New prototype for TIME_to_timestamp() sql/item.h: Don't have prototypes for both uint32 and ulong as these 'may' be the same thing sql/item_timefunc.cc: New prototype for TIME_to_timestamp() sql/log.cc: Remove compiler warnings sql/mysql_priv.h: New prototype for TIME_to_timestamp() Added function for comparing LEX_STRING sql/set_var.cc: Added overflow checking when setting ulong variable sql/sql_base.cc: Added function is_equal() Changed strncmp -> is_equal() as strncmp() to not match "V" (instead of "VIEW") sql/sql_class.cc: Added comment sql/sql_select.cc: Portability fixes After review fixes sql/sql_trigger.cc: Use 'tables_alias_charset' for comparing database name Use 'is_equal()' to compare file type. (Old code didn't do the comparison correctly) sql/sql_view.cc: Use 'is_equal()' to compare file type. (Old code didn't do the comparison correctly) sql/time.cc: New prototype for TIME_to_timestamp() to allow easyer mapping to C function sql/tztime.cc: bool -> my_bool (to allow calling C code from C++ code) sql/tztime.h: bool -> my_bool (to allow calling C code from C++ code)
-
- 30 Jul, 2005 1 commit
-
-
unknown authored
its body, but lets each statement to get/release its own locks. This allows a broader set of statements to be executed inside PROCEDUREs (but breaks replication) This patch should fix BUG#8072, BUG#8766, BUG#9563, BUG#11126 mysql-test/r/sp-security.result: Drop tables this test attempts to create mysql-test/r/sp-threads.result: Update test results mysql-test/r/sp.result: Disabled a test that triggers BUG#11986, cleanup used tables when tests start. mysql-test/r/view.result: Enabled a test case that now works with prelocking-free SPs mysql-test/t/sp-security.test: Drop tables this test attempts to create mysql-test/t/sp.test: Disabled a test that triggers BUG#11986, cleanup used tables when tests start. mysql-test/t/view.test: Enabled a test case that now works with prelocking-free SPs sql/handler.cc: Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt sql/item_func.cc: Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt sql/sp.cc: Non-prelocked SP execution: Added support for skipping prelocking of procedure body for "CALL proc(...)" statements. sql/sp.h: Non-prelocked SP execution: Added support for skipping prelocking of procedure body for "CALL proc(...)" statements. sql/sp_cache.h: Added comments sql/sp_head.cc: Non-prelocked SP execution: * Try to unlock tables after PROCEDURE arguments have been evaluated. * Make sp_lex_keeper be able to execute in 2 modes: A) when already in prelocked mode B) when its statement enters/leaves prelocked mode itself. sql/sp_head.h: Non-prelocked SP execution: Make sp_lex_keeper to additionally keep list of tables it needs to prelock when its statement enters/leaves prelocked mode on its own. sql/sql_base.cc: Non-prelocked SP execution: Make open_tables() to * detect 'CALL proc(...)' and not to do prelocking for procedure body statements. * Make lex->query_tables_last to point precisely to a boundary in lex->query_tables list where 'own' tables and views' tables end and added-for-prelocking tables begin. (it was not true before - view's tables could end up after query_tables_own_last) sql/sql_class.cc: Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt sql/sql_class.h: Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt sql/sql_lex.cc: Non-prelocked SP execution: More rigourous cleanup in st_lex::cleanup_after_one_table_open() sql/sql_parse.cc: Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt, remove outdated comments sql/sql_trigger.h: Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt
-
- 28 Jul, 2005 2 commits
-
-
unknown authored
client/mysqldump.c: Fixed wrong argument to printf() client/mysqltest.c: Fixed compiler warning myisam/ft_boolean_search.c: Fixed compiler warning myisammrg/myrg_static.c: Fixed compiler warning mysql-test/r/rpl_drop_temp.result: Drop used database mysql-test/t/rpl_drop_temp.test: Drop used database ndb/src/common/logger/LogHandler.cpp: Fixed compiler warning sql/field.cc: Fixed compiler warning sql/ha_ndbcluster.cc: Fixed compiler warning sql/sql_base.cc: Fixed compiler warning tests/mysql_client_test.c: Fixed compiler warning
-
unknown authored
Ensure mysql_close() is called if mysql_set_character_set() fails libmysql/libmysql.c: Indentation cleanup mysql-test/r/select.result: Fix bad merge & align code with 4.1 mysql-test/r/type_newdecimal.result: Added test of extreme case mysql-test/t/select.test: Fix bad merge & align code with 4.1 mysql-test/t/type_newdecimal.test: Added test of extreme case mysys/charset.c: Removed not used variable mysys/default.c: Simplify code sql-common/client.c: Ensure mysql_close() is called if mysql_set_character_set() fails sql/log.cc: strmov(strmov()) -> strxmov() sql/sp.cc: Indentation fixes sql/sql_acl.cc: Indentation fixes sql/sql_base.cc: Added commments Moved variable to inner block sql/sql_show.cc: Simple optimization (removed loop variable) sql/sql_trigger.cc: strmov(strmov()) -> strxmov() strings/decimal.c: Indentation fixes
-
- 26 Jul, 2005 1 commit
-
-
unknown authored
Fixed portability problem with bool in C programs Moved close_thread_tables out from LOCK_thread_count mutex (safety fix) my_sleep() -> pthread_cond_timedwait() include/thr_lock.h: bool -> my_bool (bool is not portable in C programs) mysys/thr_lock.c: bool -> my_bool (bool is not portable in C programs) sql/lock.cc: Added comment Don't use | on bool variable sql/mysql_priv.h: Added comment sql/slave.cc: Moved close_thread_tables out from LOCK_thread_count mutex (safety fix) sql/sql_base.cc: Added comments my_sleep() -> pthread_cond_timedwait() to get less code and potentitally faster loop BitKeeper/etc/ignore: added ac_available_languages_fragment
-
- 21 Jul, 2005 1 commit
-
-
unknown authored
-
- 20 Jul, 2005 1 commit
-
-
unknown authored
sql/lock.cc: Used flags immediately in call sql/mysql_priv.h: Added RTFC (short for remove_table_from_cache) for constants and used hex syntax to clarify it is bits in the flags sql/sql_base.cc: Use flags parameter immediately and use flags immediately in call Change to other variant of eternal loop variant sql/sql_table.cc: Use flags immediately in call
-