An error occurred fetching the project authors.
  1. 27 Sep, 2005 1 commit
    • unknown's avatar
      sql_base.cc, item.cc: · ba027f01
      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.
      ba027f01
  2. 22 Sep, 2005 1 commit
    • unknown's avatar
      Fixed problems found by valgrind · b762e55c
      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)
      b762e55c
  3. 20 Sep, 2005 1 commit
    • unknown's avatar
      Fix for BUG#13127. · 5968baf8
      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.
      5968baf8
  4. 15 Sep, 2005 1 commit
    • unknown's avatar
      WL#2787 (part 2, ver 3 (merged)) changed securety context switching · e80e4b10
      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
      e80e4b10
  5. 14 Sep, 2005 1 commit
    • unknown's avatar
      Fix for bug #12704 "Server crashes during trigger execution". · d8dea0bb
      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.
      d8dea0bb
  6. 13 Sep, 2005 2 commits
    • unknown's avatar
      Bug#12845 - Stress test: Server crashes on CREATE .. SELECT statement · c158b8a8
      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.
      
      c158b8a8
    • unknown's avatar
      Bug#12845 - Stress test: Server crashes on CREATE .. SELECT statement · 6eece59c
      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.
      6eece59c
  7. 12 Sep, 2005 1 commit
  8. 11 Sep, 2005 1 commit
    • unknown's avatar
      Fix bug #12993 View column rename broken in subselect · e9840fa6
      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.
      e9840fa6
  9. 08 Sep, 2005 2 commits
    • unknown's avatar
      fix for bug #12651 (item of a prepared query allocated on non-permanent · 77589752
      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
      77589752
    • unknown's avatar
      Fix for BUG#12977. · 15560cdb
      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.
      15560cdb
  10. 02 Sep, 2005 2 commits
    • unknown's avatar
      Rename: · 8857d641
      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.
      8857d641
    • unknown's avatar
      postmerge changes · 5985c127
      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
      5985c127
  11. 24 Aug, 2005 2 commits
    • unknown's avatar
      Cleanups during review of new code · 9fbd86a2
      unknown authored
      Removed ASSERT that can obviously never be wrong
      
      9fbd86a2
    • unknown's avatar
      Post-fix for BUG#6276. · 45fa37fe
      unknown authored
      sql/sql_base.cc:
        Fixed a bug in PS (prepared statements) mode - the "always TRUE" constant
        Item created for outer joins with no common columns was not created in
        the PS memory.
        Now it is created in the right memory.
      45fa37fe
  12. 23 Aug, 2005 2 commits
    • unknown's avatar
      Fix for BUG#6276. · 3bfeefff
      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.
      3bfeefff
    • unknown's avatar
      WL#2486 - natural and using join according to SQL:2003 · 1647932c
      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.
      1647932c
  13. 21 Aug, 2005 1 commit
    • unknown's avatar
      Cleanup during review of new pushed code · 0776999d
      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()
      0776999d
  14. 20 Aug, 2005 1 commit
    • unknown's avatar
      Fixes during review of new pushed code · 8cc25933
      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
      8cc25933
  15. 19 Aug, 2005 1 commit
    • unknown's avatar
      WL#2486 - natural and using join according to SQL:2003 · 57e82913
      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
      57e82913
  16. 18 Aug, 2005 1 commit
    • unknown's avatar
      Fix for bug #11896 "Partial locking in case of recursive trigger definitions". · fb431ecf
      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.
      fb431ecf
  17. 17 Aug, 2005 3 commits
    • unknown's avatar
      WL#2486 - natural and using join according to SQL:2003 · d24ce05d
      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.
      d24ce05d
    • unknown's avatar
      Fixed code formatting. · 0a962dd5
      unknown authored
      0a962dd5
    • unknown's avatar
      WL#2486 - Process NATURAL and USING joins according to SQL:2003 · 694fea17
      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.
      694fea17
  18. 16 Aug, 2005 1 commit
    • unknown's avatar
      fix for bug #12183 "SHOW OPEN TABLES behavior doesn't match grammar" · 881e2a50
      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
      881e2a50
  19. 12 Aug, 2005 3 commits
    • unknown's avatar
      BUG#12162 - one can start two transactions with the same XID. · a0725e13
      unknown authored
      Now we keep all active XID's in a hash
      
      a0725e13
    • unknown's avatar
      Implementation of WL#2486 - · bcc00c1f
      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.
      bcc00c1f
    • unknown's avatar
      sql_base.cc: · 09d116ea
      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.
      09d116ea
  20. 11 Aug, 2005 2 commits
    • unknown's avatar
      sql_base.cc: · b9ebcf40
      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>.
      b9ebcf40
    • unknown's avatar
      Cleanups during review of new code · 8fd5120d
      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.
      8fd5120d
  21. 08 Aug, 2005 1 commit
    • unknown's avatar
      Fix for bug #10055 "Using stored function with information_schema causes empty · 4eac93cd
      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.
      4eac93cd
  22. 03 Aug, 2005 1 commit
    • unknown's avatar
      Prelocking-free SPs, post-review fixes: · efade190
      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.
      efade190
  23. 02 Aug, 2005 1 commit
    • unknown's avatar
      issue correct error message in case of view presence for duplicated table on update (BUG#10773) · 1e905f8a
      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
      1e905f8a
  24. 31 Jul, 2005 1 commit
    • unknown's avatar
      Fixes during review of new pushed code · f5589f21
      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)
      f5589f21
  25. 30 Jul, 2005 1 commit
    • unknown's avatar
      Added Non-prelocked SP execution: Now a PROCEDURE doesn't enter/leave prelocked mode for · 965abcfd
      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
      965abcfd
  26. 28 Jul, 2005 2 commits
    • unknown's avatar
      Fixed compiler warnings · 9036db20
      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
      9036db20
    • unknown's avatar
      Cleanups during review of new code · c8e2aee9
      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
      c8e2aee9
  27. 26 Jul, 2005 1 commit
    • unknown's avatar
      Review fixes: · a5240d7d
      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
      a5240d7d
  28. 21 Jul, 2005 1 commit
  29. 20 Jul, 2005 1 commit
    • unknown's avatar
      Bug #10600 After review fixes · 1b6ac530
      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
      1b6ac530