An error occurred fetching the project authors.
  1. 01 Nov, 2005 1 commit
  2. 27 Oct, 2005 1 commit
    • unknown's avatar
      support of view underlying tables and SP functions security check added (BUG#9505) (WL#2787) · 24ac4019
      unknown authored
      mysql-test/r/information_schema.result:
        error message changed
      mysql-test/r/sp.result:
        error message changed
      mysql-test/r/sql_mode.result:
        fixed test suite
      mysql-test/r/view.result:
        error message changed
      mysql-test/r/view_grant.result:
        test of underlying view tables check
      mysql-test/t/sql_mode.test:
        fixed test suite
      mysql-test/t/view_grant.test:
        test of underlying view tables check
      sql/item.cc:
        check of underlying tables privilege added
      sql/item.h:
        Name the resolution context points to the security  context of view (if item belong to the view)
      sql/item_func.cc:
        a view error hiding for execution of prepared function belonged to a view
        fixed checking privileges if stored functions belonds to some view
      sql/mysql_priv.h:
        refult of derived table processing functions changed to bool
        Security_context added as an argument to find_field_in_table()
      sql/share/errmsg.txt:
        error message fixed
      sql/sql_acl.cc:
        Storing requested privileges of tables added
        View underlying tables privilege check added
      sql/sql_base.cc:
        View underlying tables privilege check added
      sql/sql_cache.cc:
        Code cleunup: we should not register underlying tables of view second time
      sql/sql_delete.cc:
        ancestor -> merge_underlying_list renaming
      sql/sql_derived.cc:
        refult of derived table processing functions changed to bool
        do not give SELECT_ACL for TEMPTABLE views
      sql/sql_lex.h:
        The comment added
      sql/sql_parse.cc:
        registration of requested privileges added
      sql/sql_prepare.cc:
        registration of requested privileges added
      sql/sql_update.cc:
        manipulation of requested privileges for underlying tables made the same as for table which we are updating
      sql/sql_view.cc:
        underlying tables of view security check support added
      sql/table.cc:
        renaming and fixing view preparation methods, methods for checking underlyoing tables security context added
      sql/table.h:
        storege for reuested privileges added
      24ac4019
  3. 25 Oct, 2005 1 commit
    • unknown's avatar
      BUG#13126: When choosing join order for join with nested joins, don't produce join · 2b7f5a45
      unknown authored
      orders that cannot be handled by the executioner.
      
      
      mysql-test/r/bigint.result:
        Added mssing "drop table if exists"
      mysql-test/r/join_nested.result:
        Testcase for BUG#13126
      mysql-test/t/bigint.test:
        Added mssing "drop table if exists"
      mysql-test/t/join_nested.test:
        Testcase for BUG#13126
      sql/mysql_priv.h:
        BUG#13126: Added nested_join_map type.
      sql/sql_prepare.cc:
        BUG#13126: Don't set NESTED_JOIN::counter to 0 here as it is reset in other place now.
      sql/sql_select.cc:
        BUG#13126: When choosing join order for join with nested joins, don't produce join orders
        that the executioner cannot handle. The work is done by check_interleaving_with_nj() and 
        restore_prev_nj_state() functions that are used from the join optimizer to avoid building
        invalid join orders.
      sql/sql_select.h:
        BUG#13126: Added JOIN_TAB::embedding_map and JOIN::cur_embedding_map.
      sql/table.h:
        BUG#13126: In NESTED_JOIN: added nj_map, added comment about where counter is used.
      2b7f5a45
  4. 17 Oct, 2005 1 commit
    • unknown's avatar
      Fix for bug #12739 "Deadlock in multithreaded environment during creating/ · dd02b98d
      unknown authored
      droping trigger on InnoDB table".
      
      Deadlock occured in cases when we were trying to create two triggers for
      the same InnoDB table concurrently and both threads were able to reach
      close_cached_table() simultaneously. Bugfix implements new approach to
      table locking and table cache invalidation during creation/dropping
      of trigger.
      
      No testcase is supplied since bug was repeatable only under high concurrency.
      
      
      sql/mysql_priv.h:
        reopen_name_locked_table():
          Changed function signature to make it more robust against erroneous usage.
      sql/sql_base.cc:
        reopen_name_locked_table():
          Changed function signature to make it more robust against erroneous usage.
          Obtaining LOCK_open lock is now resposibility of caller.
          When searching for the table to open we should not prefer connection's current
          database over database which was explicitly specified in TABLE_LIST::db member
          (even if database is not explicitly specified for table in original query
          TABLE_LIST::db will be set properly at parsing stage).
          Fixed behavior of function in cases when error occurs during opening of table.
      sql/sql_table.cc:
        prepare_for_restore()/prepare_for_repair():
          We should not prefer connection's current database over database which was
          specified in TABLE_LIST::db member (even if database is not explicitly
          specified for table in original query TABLE_LIST::db will be set properly
          at parsing stage). Fixed behavior in unlikely case when we are unable
          to open table which we are restoring/reparing at the end of preparation
          stage.
      sql/sql_trigger.cc:
        mysql_create_or_drop_trigger():
          Now instead of opening and locking table, creating trigger, and then trying
          to invalidate all instances of this table in table cache, we obtain name
          lock on table first (thus ensuring that no other thread has this table
          open), open it, create trigger and then close table therefore releasing lock.
          New approach is more in line with other places where change .frm files
          (i.e. change table meta-data).
          With this change we also get rid of deadlock which occured in cases when we
          were trying to create two triggers for the same InnoDB table concurrently
          and both threads were able to reach close_cached_table() simultaneously.
          (Alternative was to forbid to InnoDB downgrade locks for CREATE/DROP
           TRIGGER statements in one way or another but I think that proposed
           solution is better long term).
      dd02b98d
  5. 08 Oct, 2005 1 commit
  6. 06 Oct, 2005 1 commit
    • unknown's avatar
      my_pthread.h: · 3c2dca47
      unknown authored
        Let pthread_mutex_init() macro return 0 on Windows
      mysql_priv.h:
        Return type is to be 'my_bool' for 'opt_enable_shared_memory'
      
      
      sql/mysql_priv.h:
        Return type is to be 'my_bool' for 'opt_enable_shared_memory'
      include/my_pthread.h:
        Let pthread_mutex_init() macro return 0 on Windows
      3c2dca47
  7. 04 Oct, 2005 1 commit
    • unknown's avatar
      Fixed several boolean type options used in my_long_options[]. · b2fa7d16
      unknown authored
      Some options were declared as 'bool', but since those are being
      handled in my_getopt.c, bool can be machine dependent. To make
      sure it works in all circumstances, the type should be my_bool
      for C (not C++) programs.
      
      
      sql/mysql_priv.h:
        Fixed some bools to my_bools.
      sql/mysqld.cc:
        Changed several bools to my_bools.
      sql/slave.cc:
        Changed bool to my_bool.
      sql/slave.h:
        Changed bool to my_bool.
      b2fa7d16
  8. 03 Oct, 2005 1 commit
    • unknown's avatar
      Next big patch for loadable storage engines! · 5655d31d
      unknown authored
      Handlerton array is now created instead of using sys_table_types_st. All storage engines can now have inits and giant ifdef's are now gone for startup. No compeltely clean yet, handlertons will next be merged with sys_table_types. Federated and archive now have real cleanup if their inits fail. 
      
      
      sql/examples/ha_archive.cc:
        Modifications for new ha_init code. The init method now checks for errors and will not start up if the errors occur.
      sql/examples/ha_archive.h:
        Change for new init method.
      sql/examples/ha_example.cc:
        New handlerton pieces.
      sql/examples/ha_tina.cc:
        New handlerton pieces.
      sql/ha_berkeley.cc:
        New handlerton pieces, plus changes for ha_init changes. I'm not happy with our current "skip" setup.
      sql/ha_berkeley.h:
        Change in init return.
      sql/ha_blackhole.cc:
        Changes for new handlerton pieces.
      sql/ha_federated.cc:
        Changes for new handlerton and true cleanup code.
      sql/ha_heap.cc:
        Changes for new handlerton returns.
      sql/ha_innodb.cc:
        Changes for handlerton code.
      sql/ha_innodb.h:
        Change in init.
      sql/ha_myisam.cc:
        Changes for additional handlerton bits.
      sql/ha_myisammrg.cc:
        Changes for  new handlerton bits.
      sql/ha_ndbcluster.cc:
        Changes for new handlerton bits.
      sql/ha_ndbcluster.h:
        Changes for handlerton bits.
      sql/handler.cc:
        Changes for ditching show_table_type_st types, and collapsing it into a handlerton array. The ha_init now just loops through all handlers to init (much cleaner...). handlertons and sys_table_types should be merged next.
      sql/handler.h:
        Additions for sys_table_types
      sql/log.cc:
        Clean up of binlog for changes in handlerton
      sql/mysql_priv.h:
        Removed unneeded define for binlog_init
      sql/sql_show.cc:
        Changes for change in handlerton to sys_table_types
      5655d31d
  9. 30 Sep, 2005 1 commit
    • unknown's avatar
      BUG#12915: Added single-table UPDATE/DELTE ... ORDER BY ... LIMIT · 1fe423ae
      unknown authored
      optimization: now can use index to find records to update/delete
      when there is no WHERE clause.
      
      
      mysql-test/r/update.result:
        Testcase for BUG#12915
      mysql-test/t/update.test:
        Testcase for BUG#12915
      sql/mysql_priv.h:
        BUG#12915: Added init_read_record_idx function.
      sql/opt_range.cc:
        BUG#12915: Added get_index_for_order() - find an index that can be
        used to get first N table records in given ordering cheaper then 
        one would with full table scan.
      sql/opt_range.h:
        BUG#12915: Added get_index_for_order() function
      sql/records.cc:
        BUG#12915: Added init_read_record_idx(), rr_index() that allow to scan
        index using init_read_record()/read_record.read_record()
      sql/sql_delete.cc:
        BUG#12915: Added single-table DELETE ... ORDER BY ... LIMIT optimization: 
        now can use index to find records to delete when there is no WHERE clause.
      sql/sql_update.cc:
        BUG#12915: Added single-table UPDATE ... ORDER BY ... LIMIT optimization: 
        now can use index to find records to update when there is no WHERE clause.
      sql/structs.h:
        BUG#12915: Added init_read_record_idx(), rr_index() that allow to scan
        index using init_read_record()/READ_RECORD::read_record()
      1fe423ae
  10. 29 Sep, 2005 1 commit
    • unknown's avatar
      Bug #13231 mysqltest: fails to dectect when mysql_next_result fails · b4f41433
      unknown authored
       - Packets out of order when reading cached data stored by a normal select from a ps or vice versa.
       - Add pkt_nr to query cache flags 
      
      
      mysql-test/r/query_cache.result:
        Update test results
        Add the resultsets that wasn't there before.
      mysql-test/t/query_cache.test:
        Improve test to call queries from both a regular statment and a statement inside a stored procedure.
      sql/mysql_priv.h:
        Add pkt_nr to query cache flags
      sql/sql_cache.cc:
        Set pkt_nr in flags before retrieving/storing a query in the cache
      b4f41433
  11. 23 Sep, 2005 1 commit
    • unknown's avatar
      Several fixes revelaled by Intel compiler. · ecffc1b8
      unknown authored
      cmd-line-utils/readline/complete.c:
        Added a cast.
      dbug/my_main.c:
        Added an include to avoid implicit declaration of
        my_thread_global_init()
      include/my_global.h:
        undef cannot be used on this predefined name.
        Since it is a custom fix for gcc 2.8.0, let's make it only
        effective in that case.
      include/my_sys.h:
        Added a new type, TYPE_NOT_SET.
      myisam/ft_boolean_search.c:
        Added casts.
      myisam/mi_key.c:
        Added cast.
      myisam/mi_open.c:
        Added cast.
        Changed function types.
      myisam/mi_test1.c:
        Added cast.
      myisam/myisamchk.c:
        Added cast.
      myisam/myisamdef.h:
        Changed function type.
      myisam/myisampack.c:
        Added casts.
      myisam/sp_key.c:
        Added cast.
      mysys/mf_iocache.c:
        Fixed invalid use of 0 to info->type. According to comment it
        should not have been set, but in earlier code by setting it
        to 0 would have been same as setting it to READ_CACHE. This
        probably was not desired, potential bug.
      server-tools/instance-manager/instance_options.cc:
        Fixed a typo.
      server-tools/instance-manager/protocol.cc:
        Changed enum to int.
        Changed char to uchar.
        Added casts.
      sql/mysql_priv.h:
        Bit overflow.
      sql/sql_base.cc:
        Removed unused label. The code below label was unused too, because
        there is a return just before.
      sql/sql_parse.cc:
        Removed unneccessary extra argument.
      ecffc1b8
  12. 20 Sep, 2005 1 commit
    • unknown's avatar
      WL#2787 (Add view definer/owner to the view definition (.frm) to check... · 3fe752f5
      unknown authored
      WL#2787 (Add view definer/owner to the view definition (.frm) to check privileges on used tables and stored routines when using a VIEW.)
      Part 2 postreview fixes.
      
      
      sql/ha_innodb.cc:
        Renamed structure st_security_context to class Security_context
      sql/item_func.cc:
        Renamed structure st_security_context to class Security_context
      sql/item_strfunc.cc:
        fixed USER() function
      sql/log.cc:
        variable used to optimize access to security context
      sql/mysql_priv.h:
        Renamed structure st_security_context to class Security_context
      sql/mysqld.cc:
        main security context used direcly
      sql/sp_head.cc:
        Renamed structure st_security_context to class Security_context
        removed unneed variable
      sql/sp_head.h:
        Comment inmroved
        Renamed structure st_security_context to class Security_context
      sql/sql_acl.cc:
        Renamed structure st_security_context to class Security_context
        fixed function comment and return value
        variable used to optimize access to security context
        Renamed method of Security_ontext
      sql/sql_acl.h:
        fixed return value type
      sql/sql_class.cc:
        Renamed structure st_security_context to class Security_context
      sql/sql_class.h:
        Renamed structure st_security_context to class Security_context
        Method renamed
      sql/sql_db.cc:
        Renamed structure st_security_context to class Security_context
        fixed layout
      sql/sql_parse.cc:
        registration of wanted access for underlying tables
      sql/sql_show.cc:
        Renamed structure st_security_context to class Security_context
        fixed layout
      sql/sql_yacc.yy:
        Renamed structure st_security_context to class Security_context
      3fe752f5
  13. 15 Sep, 2005 1 commit
    • unknown's avatar
      WL#2787 (part 2, ver 3 (merged)) changed securety context switching · 84f029a4
      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
      84f029a4
  14. 14 Sep, 2005 3 commits
    • unknown's avatar
      Fix for bug #12704 "Server crashes during trigger execution". · d5303b8a
      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.
      d5303b8a
    • unknown's avatar
      fix for BUG#11139 (multi-delete with alias breaking replication if table rules are · f89424f8
      unknown authored
       present): the problem originally was that the tables in auxilliary_tables did not have 
      the correct real_name, which caused problems in the second call to tables_ok(). 
      The fix corrects the real_name problem, and also sets the updating flag properly, 
      which makes the second call to tables_ok() unnecessary.
      
      
      mysql-test/r/rpl_multi_delete2.result:
        updates for for BUG#11139
      mysql-test/t/rpl_multi_delete2-slave.opt:
        updates for for BUG#11139
      mysql-test/t/rpl_multi_delete2.test:
        updates for for BUG#11139
      sql/mysql_priv.h:
        fix for BUG#11139 (multi-delete with alias breaking replication if table rules are
         present)
      sql/slave.cc:
        fix for BUG#11139 (multi-delete with alias breaking replication if table rules are
         present)
      sql/sql_parse.cc:
        fix for BUG#11139 (multi-delete with alias breaking replication if table rules are
         present)
      sql/sql_yacc.yy:
        fix for BUG#11139 (multi-delete with alias breaking replication if table rules are
         present)
      f89424f8
    • unknown's avatar
      part 1 (ver 2, postreview fix) of WL#2787 · f7aeb6f9
      unknown authored
      view definer information syntax/storage/replication
      fixed SOURCE field of .frm
      
      
      mysql-test/r/func_in.result:
        definer information added to CREATE VIEW
      mysql-test/r/lowercase_view.result:
        definer information added to CREATE VIEW
      mysql-test/r/mysqldump.result:
        definer information added to CREATE VIEW
      mysql-test/r/rpl_view.result:
        check log of queries
      mysql-test/r/skip_grants.result:
        --skip-grants do not allow use user information
      mysql-test/r/sql_mode.result:
        definer information added to CREATE VIEW
      mysql-test/r/temp_table.result:
        definer information added to CREATE VIEW
      mysql-test/r/view.result:
        definer information added to CREATE VIEW
        test of storing/restoring definer information
      mysql-test/r/view_grant.result:
        test of grant check of definer information
        definer information added to CREATE VIEW
      mysql-test/t/rpl_view.test:
        check log of queries
      mysql-test/t/skip_grants.test:
        --skip-grants do not allow use user information
      mysql-test/t/view.test:
        test of storing/restoring definer information
      mysql-test/t/view_grant.test:
        test of grant check of definer information
      sql/mysql_priv.h:
        CREATE/ALTER VIEW print support
        set current user as definer procedure
      sql/share/errmsg.txt:
        new errors/warnings
      sql/sql_acl.cc:
        make find_acl_user public to allow to check user
      sql/sql_acl.h:
        make find_acl_user public to allow to check user
      sql/sql_lex.h:
        storing definer information
      sql/sql_parse.cc:
        send CREATE/ALTER VIEW for replication with full list of options
        set current user as definer procedure
      sql/sql_show.cc:
        new CREATE VIEW options printed
      sql/sql_view.cc:
        check of definer clause
        changes in .frm file
        definer information storage support
        now we store only original SELECT in SOURCE field of .frm
      sql/sql_yacc.yy:
        definer information sintax support
        getting SOURCE field information for .frm
      sql/table.h:
        definer information storage
      f7aeb6f9
  15. 13 Sep, 2005 1 commit
    • unknown's avatar
      Bug#9683 INFORMATION_SCH: Creation of temporary table allowed in · 3764875c
      unknown authored
               Information_schema DB 
      Bug#9846 Inappropriate error displayed while
               dropping table from 'INFORMATION_SCHEMA'
      Bug#10734 Grant of privileges other than 'select' and 
               'create view' should fail on schema 
      Bug#10708 SP's can use INFORMATION_SCHEMA as ROUTINE_SCHEMA
      
       cumulative fix for bugs above(after review, 2nd version)
       added privilege check for information schema db & tables
      
      
      3764875c
  16. 06 Sep, 2005 1 commit
    • unknown's avatar
      support of concurent query cache resizing (BUG#12848) · f5f896b4
      unknown authored
      sql/mysql_priv.h:
        initialisation moved to mysqld.cc
      sql/mysqld.cc:
        initialisation moved to mysqld.cc
      sql/sql_cache.cc:
        support of concurent query cache resizing:
              - resizing made atomic
              - check stack size after each quard mutex lock
      sql/sql_cache.h:
        initialisation moved to mysqld.cc
        removed uneed parameter (now it is always under guard mutex protection or called from destruction)
      f5f896b4
  17. 05 Sep, 2005 1 commit
    • unknown's avatar
      mysqld.cc, mysql_priv.h, sql_parse.cc: · 50c44c9b
      unknown authored
        bug#9948
        changed client-charset behavior in 4.1.x libmysql, which issue BC prob
        after review fixes
      
      
      sql/mysql_priv.h:
        bug#9948
        changed client-charset behavior in 4.1.x libmysql, which issue BC prob
        after review fixes
      sql/mysqld.cc:
        bug#9948
        changed client-charset behavior in 4.1.x libmysql, which issue BC prob
        after review fixes
      50c44c9b
  18. 02 Sep, 2005 2 commits
    • unknown's avatar
      Implement WL#2661 "Prepared Statements: Dynamic SQL in Stored Procedures". · c910050a
      unknown authored
      The idea of the patch is to separate statement processing logic,
      such as parsing, validation of the parsed tree, execution and cleanup, 
      from global query processing logic, such as logging, resetting
      priorities of a thread, resetting stored procedure cache, resetting
      thread count of errors and warnings.
      This makes PREPARE and EXECUTE behave similarly to the rest of SQL
      statements and allows their use in stored procedures.
      This patch contains a change in behaviour:
      until recently for each SQL prepared statement command, 2 queries
      were written to the general log, e.g.
      [Query]   prepare stmt from @stmt_text;
      [Prepare] select * from t1 <-- contents of @stmt_text
      The chagne was necessary to prevent [Prepare] commands from being written
      to the general log when executing a stored procedure with Dynamic SQL.
      We should consider whether the old behavior is preferrable and probably
      restore it.
      This patch refixes Bug#7115, Bug#10975 (partially), Bug#10605 (various bugs
      in Dynamic SQL reported before it was disabled).
      
      
      mysql-test/r/not_embedded_server.result:
        Since we don't want to log Dynamic SQL in stored procedures,
        now the general log gets only one log entry per SQL statement.
      mysql-test/r/sp-error.result:
        - remove obsolete tests
        - a better error message for the case when a stored procedure that
        returns a result set is called from a function
      mysql-test/r/trigger.result:
        - a better error message for the case when a stored procedure that
        returns a result set is called from a trigger
      mysql-test/t/sp-error.test:
        - a better error message for the case when a stored procedure that
          returns a result set is called from a function.
        - move the comment to its place (end of file).
      mysql-test/t/trigger.test:
        - a better error message for the case when a stored procedure that
        returns a result set is called from a trigger
      sql/item_func.cc:
        - we need to pass sql_command explicitly to get_var_with_binlog, because
        when creating a query for SQL prepared statement thd->lex->sql_command
        points at SQLCOM_EXECUTE, which is not listed in the list of update
        queries.
      sql/log_event.h:
        - remove an extra copy of the previous sentence
      sql/mysql_priv.h:
        - fix declarations of sql_prepare.cc API
      sql/share/errmsg.txt:
        - a new error message, when one attempts to execute a prepared statement
        which is currently being executed (this can happen only in Dynamic SQL
        at the moment).
      sql/sp_head.cc:
        - extend sp_multi_results_command to return different flags for a
        command (and rename it)
        - add support for SQLCOM_PREPARE,SQLCOM_EXECUTE, SQLCOM_DEALLOCATE
          to sp_get_flags_for_command
        - replace multiple boolean sp_head members with uint m_flags
        - a fix for a crash when user variables are used in a stored procedure
          and binlog is on. A temporary fix for Bug#12637 "SP crashes the server 
         if it has update query with user var & binlog is enabled", which actually
         stands for stored functions: now instead of a crash we break
         replication if a user variable is used in a stored function which 
         is executed in prelocked mode.
      sql/sp_head.h:
        - replace multiple boolean flags of sp_head with uint m_flags;
        - add flag CONTAINS_DYNAMIC_SQL
        - use this flag to error if a stored procedure with Dynamic SQL is
          called from a function or trigger.
      sql/sql_class.cc:
        - Statement_map::insert should not delete a statement if it exists,
          now it's done externally to be able to handle the case when the
          statement being deleted is in use.
        - remove extra code (free_list is already reset in free_items)
      sql/sql_lex.cc:
        - add lex->stmt_prepare_mode; we can't rely on thd->command any more,
          because we don't reset it any more (Dynamic SQL requirement is that
          PS are as little intrusive as possible).
      sql/sql_lex.h:
        - declare bool LEX::stmt_prepare_mode
      sql/sql_parse.cc:
        - move prepared statement code to sql_prepare.cc
        - change declarations (refactored code)
        - better error message when one attempts to use Dynamic SQL or a 
          stored procedure that returns a result set in a function or trigger.
      sql/sql_prepare.cc:
        - major refactoring to ensure PREPARE/EXECUTE commands do not reset global THD
          state and allow their use in stored procedures.
        - add Prepared_statement::flags and use it to ensure no recursive execution
          of a prepared statement is possible
        - better comments
      sql/sql_yacc.yy:
        - enable PREPARE/EXECUTE/DEALLOCATE in stored procedures
        - produce an error message on attempt to use PREPARE/EXECUTE/DEALLOCATE
          in a stored function or trigger
      mysql-test/r/sp-dynamic.result:
        - sp-dynamic.test results
      mysql-test/t/sp-dynamic.test:
        - a new test for PREPARE/EXECUTE/DEALLOCATE in stored procedures.
      c910050a
    • unknown's avatar
      Rename: · dc922213
      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.
      dc922213
  19. 30 Aug, 2005 1 commit
    • unknown's avatar
      Bug #11946: Review fixes. · c12a760c
      unknown authored
      sql/ha_innodb.cc:
        Add 'value' parameter to reset_auto_increment.
      sql/ha_innodb.h:
        Add 'value' parameter to reset_auto_increment.
      sql/handler.h:
        Add 'value' parameter to reset_auto_increment.
      sql/mysql_priv.h:
        Add 'reset_auto_increment' parameter to mysql_delete.
      sql/sql_delete.cc:
        Add 'reset_auto_increment' parameter to mysql_delete, and use it instead
        of checking for SQLCOM_TRUNCATE.
        
        mysql_truncate: Adapt to changes in mysql_delete.
      sql/sql_parse.cc:
        mysql_execute_command: Adapt to changes in mysql_delete.
      c12a760c
  20. 25 Aug, 2005 1 commit
    • unknown's avatar
      Fix for BUG#12335 (SP replication) : New binlogging strategy for stored PROCEDUREs/FUNCTIONs. · 8a5e5274
      unknown authored
      "Interleaved SPs execution is now binlogged properly, "SELECT spfunc()" is binlogged too.
      The known remaining issue is binlogging/replication of "a routine is deleted while it is executed" scenario.
      
      
      mysql-test/r/rpl_sp.result:
        Fix for BUG#12335: updated test cases/results
      mysql-test/t/rpl_sp.test:
        Fix for BUG#12335: updated test cases/results
      sql/item.cc:
        Fix for BUG#12335 (SP replication): 
         - Added Item_name_const 'function'
         - Addede 'delete reuse' to call dtor on item reuse
      sql/item.h:
        Fix for BUG#12335 (SP replication) : Added Item_name_const 'function' + code cleanup
      sql/item_create.cc:
         Fix for BUG#12335 (SP replication) : Added Item_name_const 'function'
      sql/item_create.h:
         Fix for BUG#12335 (SP replication) : Added Item_name_const 'function'
      sql/item_func.cc:
        Fix for BUG#12335 (SP replication) : binary log is now constrolled from within execute_function.
      sql/lex.h:
        Fix for BUG#12335 (SP replication) : Added Item_name_const 'function'
      sql/log.cc:
        Fix for BUG#12335 (SP replication) : Added MYSQL_LOG::{start|stop}_union_events to allow
        one to temporary disable binlogging but collect a 'union' information about binlog write
        calls.
      sql/mysql_priv.h:
        Fix for BUG#12335 (SP replication)
      sql/sp_head.cc:
        Fix for BUG#12335 (SP replication) : Now we use different SP binlogging strategy, grep for 
        StoredRoutinesBinlogging for details
      sql/sp_head.h:
        Comments added
      sql/sp_pcontext.h:
        Comments added
      sql/sp_rcontext.h:
        Comments added
      sql/sql_class.cc:
        Fix for BUG#12335 (SP replication) : Now we use different SP binlogging strategy, grep for 
        StoredRoutinesBinlogging for details
      sql/sql_class.h:
        Fix for BUG#12335 (SP replication) : Added MYSQL_LOG::{start|stop}_union_events to allow
        one to temporary disable binlogging but collect a 'union' information about binlog write
        calls.
      sql/sql_delete.cc:
        Fix for BUG#12335: check THD::query_str_binlog_unsuitable when writing to binlog.
      sql/sql_insert.cc:
        Fix for BUG#12335: check THD::query_str_binlog_unsuitable when writing to binlog.
      sql/sql_lex.cc:
        Fix for BUG#12335 (SP replication): Add ability to extract previous returned token from
        the tokenizer.
      sql/sql_lex.h:
        Fix for BUG#12335 (SP replication): Add ability to extract previous returned token from
        the tokenizer.
      sql/sql_parse.cc:
        Fix for BUG#12335 (SP replication) : Now we use different SP binlogging strategy, grep for 
        StoredRoutinesBinlogging for details
      sql/sql_update.cc:
        Fix for BUG#12335: check THD::query_str_binlog_unsuitable when writing to binlog.
      sql/sql_yacc.yy:
        Fix for BUG#12335 (SP replication) : When creating Item_splocal, remember where it is located
        in the query.
      8a5e5274
  21. 19 Aug, 2005 1 commit
    • unknown's avatar
      updated patch for BUG#4680 (incomplete DROP DATABASE breaking replication). · 4652c6b0
      unknown authored
      We binlog the DROP TABLE for each table that was actually dropped. Per Sergei's 
      suggestion a fixed buffer for the DROP TABLE query is pre-allocated from THD pool, and 
      logging now is done in batches - new batch is started if the buffer becomes full.
      Reduced memory usage by reusing the table list instead of accumulating a list of 
      dropped table names. Also fixed the problem if the table was not actually dropped, eg
      due to permissions. Extended the test case to make sure batched query 
      logging does work.  
      
      
      mysql-test/r/rpl_drop_db.result:
        test for query buffer overrun
      mysql-test/t/rpl_drop_db.test:
        test for query buffer overrun
      sql/mysql_priv.h:
        updated patch for BUG#4680 (incomplete DROP DATABASE breaking replication)
      BitKeeper/etc/ignore:
        Added support-files/MacOSX/postflight support-files/MacOSX/preflight to the ignore list
      sql/sql_db.cc:
        updated patch for BUG#4680 (incomplete DROP DATABASE breaking replication)
      sql/sql_table.cc:
        updated patch for BUG#4680 (incomplete DROP DATABASE breaking replication)
      sql/table.h:
        updated patch for BUG#4680 (incomplete DROP DATABASE breaking replication)
      4652c6b0
  22. 16 Aug, 2005 1 commit
    • unknown's avatar
      fix for bug #12183 "SHOW OPEN TABLES behavior doesn't match grammar" · 1566ec35
      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
      1566ec35
  23. 12 Aug, 2005 3 commits
    • unknown's avatar
      Implementation of WL#2486 - · 7517d7e1
      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.
      7517d7e1
    • unknown's avatar
      Fixes during review of new pushed code · d6c3d655
      unknown authored
      Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      
      
      sql/ha_berkeley.cc:
        Removed not used variable (and options)
      sql/ha_berkeley.h:
        Removed not used argument
      sql/ha_ndbcluster.cc:
        Remove compiler warning
      sql/init.cc:
        Simplify code
      sql/item_sum.cc:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/mysql_priv.h:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/mysqld.cc:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_class.h:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_delete.cc:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_derived.cc:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_lex.h:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_parse.cc:
        Indentation fixes
      sql/sql_select.cc:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_select.h:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_show.cc:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_union.cc:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_update.cc:
        Removed duplicate usage of TMP_TABLE_FORCE_MYISAM by making 'options' longlong
      sql/sql_yacc.yy:
        Changed variable name i to more descriptive name
        Removed compiler warning
      d6c3d655
    • unknown's avatar
      Avoid spurious error when restoring INFORMATION_SCHEMA as the current · e0607f0a
      unknown authored
      database after failing to execute a stored procedure in an inaccessible
      database. (Bug #12318)
      
      
      mysql-test/r/sp-security.result:
        Update results
      mysql-test/t/sp-security.test:
        Add regression test
      sql/mysql_priv.h:
        Add additional argument to mysql_change_db()
      sql/sp.cc:
        Use mysql_change_db(), get rid of sp_change_db().
      sql/sp.h:
        Get rid of sp_change_db().
      sql/sql_db.cc:
        Handle no_access_check flag to mysql_change_db, and remove the send_ok()
        call.
      sql/sql_parse.cc:
        Add extra argument to mysql_change_db(), and call send_ok() after
        successful calls to same (since it no longer does it for us).
      e0607f0a
  24. 08 Aug, 2005 1 commit
    • unknown's avatar
      Fix for bug #10055 "Using stored function with information_schema causes empty · 39fda600
      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.
      39fda600
  25. 07 Aug, 2005 1 commit
    • unknown's avatar
      BUG#11869:part 2: post-review fixes: merging into 5.0 · d7086c4a
      unknown authored
      We're out of bits in st_select_lex->options so make TMP_TABLE_FORCE_MYISAM ==
      OPTION_FOUND_COMMENT (the latter is not used by create_tmp_table).
      
      
      mysql-test/r/create.result:
        Updated the test result
      mysql-test/r/fulltext_order_by.result:
        Drop all tables this test uses
      mysql-test/t/fulltext_order_by.test:
        Drop all tables this test uses
      d7086c4a
  26. 06 Aug, 2005 1 commit
    • unknown's avatar
      BUG#11869 (cont'd, eliminating "table type doesn't support FULLTEXT" error): · 852dcb75
      unknown authored
      When creating temporary table for UNION, pass TMP_TABLE_FORCE_MYISAM flag to 
      create_tmp_table if we will be using fulltext function(s) when reading from the 
      temp. table.
      
      
      mysql-test/r/fulltext_order_by.result:
        Testcase for BUG#11869 (cont'd, eliminating "table type doesn't support FULLTEXT" error)
      mysql-test/t/fulltext_order_by.test:
        Testcase for BUG#11869 (cont'd, eliminating "table type doesn't support FULLTEXT" error)
      sql/mysql_priv.h:
        BUG#11869 (cont'd, eliminating "table type doesn't support FULLTEXT" error):
        Added TMP_TABLE_FORCE_MYISAM flag
      sql/sql_select.cc:
        BUG#11869 (cont'd, eliminating "table type doesn't support FULLTEXT" error):
        In create_tmp_table(), honor the TMP_TABLE_FORCE_MYISAM flag
      852dcb75
  27. 05 Aug, 2005 1 commit
    • unknown's avatar
      mysql_priv.h: · 4811f7bd
      unknown authored
        Fixed bug #12154: a query returned: Column <name> cannot be null.
        The problem was due to a bug in the function setup_table_map:
        the flag maybe_null was set up incorrectly for inner tables of
        nested outer joins.
      join_nested.result, join_nested.test:
        Added a test case for bug #12154.
      
      
      mysql-test/t/join_nested.test:
        Added a test case for bug #12154.
      mysql-test/r/join_nested.result:
        Added a test case for bug #12154.
      sql/mysql_priv.h:
        Fixed bug #12154: a query returned: Column <name> cannot be null.
        The problem was due to a bug in the function setup_table_map:
        the flag maybe_null was set up incorrectly for inner tables of
        nested outer joins.
      4811f7bd
  28. 04 Aug, 2005 2 commits
  29. 02 Aug, 2005 1 commit
    • unknown's avatar
      issue correct error message in case of view presence for duplicated table on update (BUG#10773) · 705118d1
      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
      705118d1
  30. 31 Jul, 2005 1 commit
    • unknown's avatar
      Fixes during review of new pushed code · 6b3478ec
      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)
      6b3478ec
  31. 27 Jul, 2005 1 commit
    • unknown's avatar
      Review of new code: · 34b340c4
      unknown authored
      Change argument order to be database, tablename for some functions
      
      
      sql/lock.cc:
        Remove not needed block
      sql/mysql_priv.h:
        Change argument order to be database, tablename (like in most other functions)
      sql/sql_table.cc:
        Change argument order to be database, tablename (like in most other functions)
        Make 'flags' inline
      sql/table.cc:
        Change argument order to be database, tablename (like in most other functions)
      sql/unireg.cc:
        Change argument order to be database, tablename (like in most other functions)
      34b340c4
  32. 26 Jul, 2005 1 commit
    • unknown's avatar
      Review fixes: · 90e41fac
      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
      90e41fac
  33. 23 Jul, 2005 1 commit
    • unknown's avatar
      store SERVER_MORE_RESULTS_EXISTS in key of query cache (BUG#6897) · cebe1b5d
      unknown authored
      mysql-test/r/query_cache.result:
        query in QC from normal execution and SP
      mysql-test/t/query_cache.test:
        environment restoring fix
        layout fix
        query in QC from normal execution and SP
      sql/mysql_priv.h:
        store SERVER_MORE_RESULTS_EXISTS
      sql/sql_cache.cc:
        store SERVER_MORE_RESULTS_EXISTS in key of query cache
      BitKeeper/etc/config:
        switching logging off
      cebe1b5d
  34. 22 Jul, 2005 1 commit
    • unknown's avatar
      Fix error message generated when trying to create a table in a · 41984105
      unknown authored
      non-existent database. (Bug #10407)
      
      
      mysql-test/r/create.result:
        Update results
      mysql-test/t/create.test:
        Update error numbers
      sql/mysql_priv.h:
        Adjust some other function signature so table and db information
        is passed down into create_frm().
      sql/sql_table.cc:
        Check for database not existing after hitting an error when
        copying the .frm file for 'CREATE TABLE ... LIKE ...', and
        pass table and db name into rea_create_table().
      sql/table.cc:
        Generate specific error message when .frm creation fails because
        the database does not exist.
      sql/unireg.cc:
        Pass database and table name down into create_frm().
      41984105