1. 22 May, 2006 1 commit
    • unknown's avatar
      fix for bug #17619 Scheduler race conditions · 6b6a9b76
      unknown authored
      - Scheduler is either initialized at server start or never.
        Starting & stopping is now suspending & resuming.
      - The scheduler has clear OO interface
      - Now all calls to the scheduler are synchronous
      - GLOBAL event_scheduler uses thd::sys_var_tmp (see set_var.cc)
      - External API is encapsulated into class Events
      - Includes fixes for all comments of Kostja's review of 19.05.2005
      
      Starting to merge into 5.1-release (5.1.10) and push
      
      
      BitKeeper/etc/ignore:
        Added libmysqld/event_scheduler.cc to the ignore list
      libmysqld/Makefile.am:
        executor -> scheduler
      mysql-test/r/events.result:
        update result
      mysql-test/r/events_bugs.result:
        update result
      mysql-test/r/events_logs_tests.result:
        update result
      mysql-test/r/events_microsec.result:
        update result
      mysql-test/r/events_scheduling.result:
        update result
      mysql-test/r/events_stress.result:
        update result
      mysql-test/t/disabled.def:
        enable these tests
      mysql-test/t/events.test:
        optimize the test a bit for speed, save some seconds runtime
        remove FULL from SHOW EVENTS
        mostly use I_S.EVENTS
      mysql-test/t/events_bugs.test:
        Skip irrelevant for the current design tests - all events are loaded
        on server startup. Change in mysql.event will be visible on next server start.
        Don't use numeric error codes.
      mysql-test/t/events_logs_tests.test:
        optimize the test a bit for speed
      mysql-test/t/events_microsec.test:
         Skip irrelevant for the current design tests - all events are loaded
            on server startup. Change in mysql.event will be visible on next server start.
            Don't use numeric error codes.
      mysql-test/t/events_scheduling.test:
        broader test
      mysql-test/t/events_stress.test:
        Rework the test to the new architecture of suspending/resuming.
        Use less events, no need for thousands, hundreds is still ok.
      sql/Makefile.am:
        executor -> scheduler
      sql/cmakelists.txt:
        executor -> scheduler
      sql/event.cc:
        - remove todo comments
        - remove unneded evex_queue abstraction functions
        - move events_init() and events_shutdown() from event_executor.cc to here
        - export db_create_event
        - remove evex_load_and_compile_event, part of class Event_scheduler
        - integrate the public interface found in event.h and used by sql_parse.cc
          to use the new class Event_scheduler.
      sql/event.h:
        - add COND_finished so if one thread kills a running event it waits on this
        - export callback event_timed_definer_equal, event_timed_identifier_equal(),
          event_timed_name_equal and event_timed_db_equal()
          to be used by Event_scheduler::drop_matching_events()
        - cleanup event.h
        - encapsulated all external interface into class Events
      sql/event_executor.cc:
        make it empty, will delete after that
      sql/event_priv.h:
        - more things in the private header
        - remove event queue abstraction functions. tightly bind to QUEUE
        - export privately db_drop_event, db_find_event, db_create_event()
        - made change_security_context() and restore_security_context() free functions
      sql/event_timed.cc:
        - fix calculation of time when ENDS is set (STARTS is always set)
        - during Event_timed::compile() set the right Security_ctx. Prevents a crash
              during Event_scheduler::load_events_from_db()
        - add Event_timed::kill_thread()
        - implement event_timed_*_equal()
        - made change_security_context() and restore_security_context() free functions.
        - Comments cleanups
      sql/lex.h:
        new word scheduler for SHOW SCHEDULER STATUS (available only debug builds)
      sql/log.cc:
        move these from event_scheduler.cc
      sql/mysql_priv.h:
        refactor kill_one_thread
        export sql_print_message_func and sql_print_message_handlers
      sql/mysqld.cc:
        In close_connections, called by kill_server() skip the main scheduler
        thread and use events_shutdown() for shutting down the scheduler, in the same
        manner it's done for RPL.
        Add a new value to --event-scheduler :
        0 <- No scheduler available
        1 <- Start with scheduler enabled
        2 <- Start with scheduler suspended
      sql/repl_failsafe.cc:
        refactor thd::system_thread to be an enum
      sql/set_var.cc:
        move sys_var_event_executor::update() to set_var.cc
        executor -> scheduler
        use thd::sys_var_tmp
      sql/set_var.h:
        executor -> scheduler
      sql/share/errmsg.txt:
        3 new error messages
      sql/sql_class.cc:
        refactor thd::system_thread to be an enum . more type-safety
      sql/sql_class.h:
        refactor thd::system_thread to be an enum . more type-safety
      sql/sql_db.cc:
        get the error from evex_drop_schema_events
      sql/sql_error.h:
        export warning_level_names
      sql/sql_lex.h:
        new command SHOW SCHEDULER STATUS, available only in debug build and
        for debug purposes.
      sql/sql_parse.cc:
        refactor kill_one_thread() -> does the *dirty* work, and sql_kill
        just the reporting.
        add handler for SQLCOM_SHOW_SCHEDULER_STATUS
      sql/sql_show.cc:
        fix verbosity handling (this will be obsoleted anyway by the fix for 17394).
      sql/sql_yacc.yy:
        remove FULL from SHOW EVENTS
        add SHOW SCHEDULER STATUS in debug builds
      sql/table.cc:
        Fix valgrind warning.
      6b6a9b76
  2. 12 May, 2006 2 commits
    • unknown's avatar
      Fix for bug#18177 any access to INFORMATION_SCHEMA.ROUTINES crashes · dc42ab6d
      unknown authored
      replaced get_field(MEM_ROOT *mem, Field *field) with 
      get_field(MEM_ROOT *mem, Field *field, String *res).
      It allows to avoid strlen().
      
      
      mysql-test/r/information_schema.result:
        Fix for bug#18177 any access to INFORMATION_SCHEMA.ROUTINES crashes
        test case
      mysql-test/t/information_schema.test:
        Fix for bug#18177 any access to INFORMATION_SCHEMA.ROUTINES crashes
        test case
      dc42ab6d
    • unknown's avatar
      Fix for bug#19236 bad COLUMNS.CHARACTER_MAXIMUM_LENGHT and CHARACTER_OCTET_LENGTH · fd0f0ca1
      unknown authored
      mysql-test/r/information_schema.result:
        Fix for bug#19236 bad COLUMNS.CHARACTER_MAXIMUM_LENGHT and CHARACTER_OCTET_LENGTH
        test case
      mysql-test/r/join.result:
        Fix for bug#19236 bad COLUMNS.CHARACTER_MAXIMUM_LENGHT and CHARACTER_OCTET_LENGTH
        result fix
      mysql-test/t/information_schema.test:
        Fix for bug#19236 bad COLUMNS.CHARACTER_MAXIMUM_LENGHT and CHARACTER_OCTET_LENGTH
        test case
      fd0f0ca1
  3. 11 May, 2006 1 commit
  4. 10 May, 2006 2 commits
    • unknown's avatar
      BUG#19010: Fix issues with that ALTER TABLE from auto-partitioned NDB table... · 884f36a0
      unknown authored
      BUG#19010: Fix issues with that ALTER TABLE from auto-partitioned NDB table doesn't work unless primary key exists on table.
      
      
      mysql-test/r/ndb_bitfield.result:
        Test cases changes now that auto-partitioning is remembered in frm file
      mysql-test/r/ndb_dd_basic.result:
        Test cases changes now that auto-partitioning is remembered in frm file
      mysql-test/r/ndb_dd_disk2memory.result:
        Test cases changes now that auto-partitioning is remembered in frm file
      mysql-test/r/ndb_gis.result:
        Test cases changes now that auto-partitioning is remembered in frm file
      mysql-test/r/ndb_partition_key.result:
        New test cases for auto-partitioning change that was made to fix bug
      mysql-test/r/rpl_ndb_UUID.result:
        Test cases changes now that auto-partitioning is remembered in frm file
      mysql-test/r/rpl_ndb_dd_advance.result:
        Test cases changes now that auto-partitioning is remembered in frm file
      mysql-test/t/ndb_partition_key.test:
        New test cases for auto-partitioning change that was made to fix bug
      sql/partition_info.h:
        New boolean to keep track of auto partitioned or not
      sql/sql_partition.cc:
        Ensure that auto-partitiong flag is reset when partitions are dropped, added, reorganised or coalesced.
        Ensure that auto-partitioned tables are altered into non-partitioned table when ALTER TABLE t1 engine=X
        is performed.
      sql/sql_show.cc:
        Only print partition info for non-auto-partitioned tables
      sql/sql_table.cc:
        Set auto partition flag when auto partitions are generated in create table
      sql/table.cc:
        Fix reading of frm file where new auto-partition flag is introduced.
      sql/table.h:
        New flag for auto partition on share object
      sql/unireg.cc:
        Fix code for writing frm to also write autopartition flag at end of partition info, fix some length issues
        at the same time that was in this part that caused no problems since partition info always was the last info
        in the file.
      884f36a0
    • unknown's avatar
      Merge 5.0 to 5.1 · d758c040
      unknown authored
      sql/sql_show.cc:
        Add the variable "limited_mysql_mode" to function 'store_create_info'
      d758c040
  5. 08 May, 2006 1 commit
  6. 04 May, 2006 1 commit
    • unknown's avatar
      Bug#19025 4.1 mysqldump doesn't correctly dump "auto_increment = [int]" · 64828eeb
      unknown authored
      mysqldump / SHOW CREATE TABLE will show the NEXT available value for
      the PK, rather than the *first* one that was available (that named in
      the original CREATE TABLE ... AUTO_INCREMENT = ... statement).
      
      This should produce correct and robust behaviour for the obvious use
      cases -- when no data were inserted, then we'll produce a statement
      featuring the same value the original CREATE TABLE had; if we dump
      with values, INSERTing the values on the target machine should set the
      correct next_ID anyway (and if not, we'll still have our AUTO_INCREMENT =
      ... to do that). Lastly, just the CREATE statement (with no data) for
      a table that saw inserts would still result in a table that new values
      could safely be inserted to).
      
      There seems to be no robust way however to see whether the next_ID
      field is > 1 because it was set to something else with CREATE TABLE
      ... AUTO_INCREMENT = ..., or because there is an AUTO_INCREMENT column
      in  the table (but no initial value was set with AUTO_INCREMENT = ...)
      and then one or more rows were INSERTed, counting up next_ID. This
      means that in both cases, we'll generate an AUTO_INCREMENT =
      ... clause in SHOW CREATE TABLE / mysqldump.  As we also show info on,
      say, charsets even if the user did not explicitly give that info in
      their own CREATE TABLE, this shouldn't be an issue.
      
      As per above, the next_ID will be affected by any INSERTs that have
      taken place, though.  This /should/ result in correct and robust
      behaviour, but it may look non-intuitive to some users if they CREATE
      TABLE ... AUTO_INCREMENT = 1000 and later (after some INSERTs) have
      SHOW CREATE TABLE give them a different value (say, CREATE TABLE
      ... AUTO_INCREMENT = 1006), so the docs should possibly feature a
      caveat to that effect.
      
      It's not very intuitive the way it works now (with the fix), but it's
      *correct*.  We're not storing the original value anyway, if we wanted
      that, we'd have to change on-disk representation?
      
      If we do dump/load cycles with empty DBs, nothing will change.  This
      changeset includes an additional test case that proves that tables
      with rows will create the same next_ID for AUTO_INCREMENT = ... across
      dump/restore cycles.
      
      Confirmed by support as likely solution for client's problem.
      
      
      mysql-test/r/auto_increment.result:
        test for creation of AUTO_INCREMENT=... clause
      mysql-test/r/gis-rtree.result:
        Add AUTO_INCREMENT=... clauses where appropriate
      mysql-test/r/mysqldump.result:
        show that AUTO_INCREMENT=... will survive dump/restore cycles
      mysql-test/r/symlink.result:
        Add AUTO_INCREMENT=... clauses where appropriate
      mysql-test/t/auto_increment.test:
        test for creation of AUTO_INCREMENT=... clause
      mysql-test/t/mysqldump.test:
        show that AUTO_INCREMENT=... will survive dump/restore cycles
      sql/sql_show.cc:
        Add AUTO_INCREMENT=... to output of SHOW CREATE TABLE if there is an
        AUTO_INCREMENT column, and NEXT_ID > 1 (the default).  We must not print
        the clause for engines that do not support this as it would break the
        import of dumps, but as of this writing, the test for whether
        AUTO_INCREMENT columns are allowed and wether AUTO_INCREMENT=...
        is supported is identical, !(file->table_flags() & HA_NO_AUTO_INCREMENT))
        Because of that, we do not explicitly test for the feature,
        but may extrapolate its existence from that of an AUTO_INCREMENT column.
      64828eeb
  7. 03 May, 2006 1 commit
    • unknown's avatar
      Added support for key_block_size for key and table level (WL#602) · 0ab1abad
      unknown authored
      Added support for key_block_size to MyISAM.
      Simplify interface to 'new Key' to make it easier to add new key options.
      mysqld option --new is used to define where key options are printed.
      (In 5.3 we should move all key options to after key part definition to avoid problem with reserved names)
      Fixed some compiler warnings and a memory leak in ssl
      
      
      include/my_base.h:
        Added flag to check if block size for key was secified
      include/my_sys.h:
        Added new support function to round up to a power of two
      include/myisam.h:
        Rename block_size -> block_size_index to avoid confusion with 'block_size'
      include/violite.h:
        Added function to free memory after new_VioSSLAcceptorFd
        (Will rename all vio_ssl functions in a future changeset)
      mysql-test/mysql-test-run.pl:
        Don't print port number info when we use --extern
      mysql-test/r/myisam.result:
        Added test for key_block_size
      mysql-test/t/myisam.test:
        Added test for key_block_size
      mysys/mf_keycache.c:
        Simplify code
      mysys/my_bit.c:
        Added new support function to round up to a power of two
      sql/ha_myisam.cc:
        Tell MyISAM to use the specified key_block_size
        MyISAM also updates the global key_block_size from the used values.
      sql/handler.cc:
        Added 'default_key_create_info' to be used as 'dummy' argument to 'new Key'
      sql/handler.h:
        Added KEY_CREATE_INFO, to be used as for general options for KEY's
      sql/item_func.h:
        Removed compiler warning
      sql/lex.h:
        Added new symbol
      sql/mysqld.cc:
        Fixed memory leak in ssl (new_VioSSLAcceptorFd)
      sql/sql_class.h:
        Change 'new Key' to use KEY_CREATE_INFO instead of 'algoritm', parser, key_page_size.
        This makes it easier to add new key options in the future.
      sql/sql_lex.h:
        Added key create options
      sql/sql_parse.cc:
        Use new interface to 'new Key'
      sql/sql_show.cc:
        Added support for key_block_size
        If --new is used, key options are printed after the key part definition.
      sql/sql_table.cc:
        Use new interface to 'new Key'
        Add support for key_block_size
      sql/sql_yacc.yy:
        Add support for key_block_size
        Allow key options before and after key_parts (In future they should be always after the key_part defintion)
        Use new interface to 'new Key'
      sql/structs.h:
        Added block_size to keys
      sql/table.cc:
        Remmeber and read key_block_size for table and key level
      sql/table.h:
        Added default key_block_size for table
      sql/unireg.cc:
        Remember key_block_size for key
      storage/myisam/ft_eval.c:
        Set block_length to 0 to get default key page size
      storage/myisam/ft_test1.c:
        Set block_length to 0 to get default key page size
      storage/myisam/mi_check.c:
        block_size -> block_size_index
      storage/myisam/mi_create.c:
        Added support for block size per key.
        Block size is rounded up to next power of two and enforced between MIN and MAX KEY_BLOCK_LENGTH.
        Align start of key block to start at an even offset of max_key_block_length to ensure key cache works good if all key pages are of same size.
      storage/myisam/mi_open.c:
        block_size -> block_size_index
      storage/myisam/mi_page.c:
        block_size -> block_size_index
      storage/myisam/mi_test1.c:
        Set block_length to 0 to get default key page size
      storage/myisam/mi_test2.c:
        Set block_length to 0 to get default key page size
      storage/myisam/mi_test3.c:
        Set block_length to 0 to get default key page size
      storage/myisam/myisamdef.h:
        block_size -> block_size_index to avoid confusion with 'block_size' in MySQL
        Added block_size as argument to MI_BLOCK_SIZE
        Added missing prototypes to get rid of compiler warnings
      storage/myisam/myisampack.c:
        Removed compiler warning
        block_size -> block_size_index
      vio/viosslfactories.c:
        Fixed memory leak in ssl (new_VioSSLAcceptorFd)
      mysql-test/r/myisam-system.result:
        New BitKeeper file ``mysql-test/r/myisam-system.result''
      mysql-test/t/myisam-system.test:
        New BitKeeper file ``mysql-test/t/myisam-system.test''
      0ab1abad
  8. 02 May, 2006 2 commits
    • unknown's avatar
      WL#3148: Modifying sizes of i_s.processlist columns ('time', 'info'). · 6635909e
      unknown authored
      mysql-test/r/information_schema.result:
        Fixing test case result (after modifying the size of the
         i_s.processlist.info column).
      sql/mysql_priv.h:
        Defined new constant used as the size of the
         i_s.processlist.info column.
      sql/sql_show.cc:
        Modifying sizes of i_s.processlist columns ('time', 'info').
      6635909e
    • unknown's avatar
      WL#2257 REFERENTIAL_CONSTRAINTS view · b8f321d6
      unknown authored
      added I_S.REFARENTIAL_CONSTRAINTS table
      
      
      mysql-test/r/information_schema.result:
        WL#2257 REFERENTIAL_CONSTRAINTS view
         result fix
      mysql-test/r/information_schema_db.result:
        WL#2257 REFERENTIAL_CONSTRAINTS view
         result fix
      mysql-test/r/information_schema_inno.result:
        WL#2257 REFERENTIAL_CONSTRAINTS view
         test case
      mysql-test/t/information_schema_inno.test:
        WL#2257 REFERENTIAL_CONSTRAINTS view
         test case
      sql/ha_innodb.cc:
        WL#2257 REFERENTIAL_CONSTRAINTS view
      b8f321d6
  9. 30 Apr, 2006 2 commits
    • unknown's avatar
      fixes · b5c2151a
      unknown authored
      Makefile.am:
        plugin/ must be built before sql/
      config/ac-macros/plugins.m4:
        simplifications, style fixes
      BitKeeper/etc/ignore:
        Added compile libmysqld/sql_builtin.cc sql/sql_builtin.cc to the ignore list
      plugin/Makefile.am:
        restore comment
      plugin/fulltext/Makefile.am:
        revert
      sql/sql_show.cc:
        revert
      b5c2151a
    • unknown's avatar
      Fix for Bug#14515. · 46508e22
      unknown authored
      sql/set_var.cc:
        Fix for Bug#14515. These modes do not need restrictions, they're handled
        separately in sql_show.cc
      46508e22
  10. 13 Apr, 2006 1 commit
    • unknown's avatar
      WL#3201 · bf4731ec
      unknown authored
        " Configure support for server plugins "
      
      
      storage/blackhole/ha_blackhole.h:
        Rename: sql/ha_blackhole.h -> storage/blackhole/ha_blackhole.h
      BitKeeper/deleted/.del-storage.m4~24bf2fffdaa328ad:
        Delete: config/ac-macros/storage.m4
      BitKeeper/deleted/.del-ha_archive.m4~a07fac7110b39294:
        Delete: config/ac-macros/ha_archive.m4
      BitKeeper/deleted/.del-ha_blackhole.m4~8ed06eb91f6420ed:
        Delete: config/ac-macros/ha_blackhole.m4
      BitKeeper/deleted/.del-ha_example.m4~1dfb268163297708:
        Delete: config/ac-macros/ha_example.m4
      BitKeeper/deleted/.del-ha_federated.m4~7acddd58286acfd6:
        Delete: config/ac-macros/ha_federated.m4
      BitKeeper/deleted/.del-ha_innodb.m4~6f141fb5b80c1f39:
        Delete: config/ac-macros/ha_innodb.m4
      BitKeeper/deleted/.del-ha_partition.m4~bc57067550be5f89:
        Delete: config/ac-macros/ha_partition.m4
      BitKeeper/deleted/.del-ha_tina.m4~f658506ebbc113ca:
        Delete: config/ac-macros/ha_tina.m4
      BitKeeper/deleted/.del-handlerton.cc.in~377156e7b06067cc:
        Delete: sql/handlerton.cc.in
      BitKeeper/deleted/.del-handlerton-win.cc~322a7e59507976df:
        Delete: sql/handlerton-win.cc
      BUILD/SETUP.sh:
        WL#3201
          Changes in configure arguments
      Makefile.am:
        WL#3201
          changes in build subst names
      config/ac-macros/ha_berkeley.m4:
        WL#3201
          remove unused variable
          Makefile is always made
      config/ac-macros/ha_ndbcluster.m4:
        WL#3201
          remove unused variables
          Split big macro
      configure.in:
        WL#3201
          out with storage.m4, in with plugins.m4
          change how plugins are declared
          include makefiles, remove handlerton.cc, add sql_builtin.cc
      include/mysql/plugin.h:
        WL#3201
          support static and dynamic build - MYSQL_DYNAMIC_PLUGIN
      libmysqld/Makefile.am:
        WL#3201
          Storage engine files still left in sql subdir are not conditionally
          compiled. Should move them out soon,
      plugin/Makefile.am:
        WL#3201
          update makefile
      plugin/fulltext/Makefile.am:
        WL#3201
          update makefile
      plugin/fulltext/plugin_example.c:
        WL#3201
          change to mysql_declare_plugin macro
      sql/Makefile.am:
        WL#3201
          Storage engine files still left in sql subdir are not conditionally
          compiled. Should move them out soon,
      sql/ha_berkeley.cc:
        WL#3201
          make into a plugin
          conditionally compile content
      sql/ha_federated.cc:
        WL#3201
          make into a plugin
          conditionally compile content
      sql/ha_heap.cc:
        WL#3201
          make into a plugin
      sql/ha_innodb.cc:
        WL#3201
          make into a plugin
          conditionally compile content
      sql/ha_myisam.cc:
        WL#3201
          make into a plugin
      sql/ha_myisammrg.cc:
        WL#3201
          make into a plugin
      sql/ha_ndbcluster.cc:
        WL#3201
          make into a plugin
          conditionally compile content
      sql/ha_ndbcluster_binlog.cc:
        WL#3201
          make into a plugin
          conditionally compile content
      sql/ha_partition.cc:
        WL#3201
          make into a plugin
          conditionally compile content
      sql/handler.cc:
        WL#3201
          Simplify how storage engines are found by db_type
          (hopefully we can get rid of it soon)
          Code cleanup
      sql/handler.h:
        WL#3201
          new DB_TYPE_FIRST_DYNAMIC
          new func ha_finalize_handlerton()
          remove ha_register_builtin_plugins()
      sql/log.cc:
        WL#3201
          make into a plugin
      sql/mysqld.cc:
        WL#3201
          remove ha_register_builtin_plugins()
          alter init order so that storage engines are initialized before first use
      sql/partition_info.cc:
        WL#3201
          conditionally compile content
      sql/sql_delete.cc:
        WL#3201
          conditionally include ha_innodb.h
      sql/sql_plugin.cc:
        WL#3201
          All compiled in plugins are in mysqld_builtins[]
          add funcs for plugin finalization
          install builtin plugins on initialization
      sql/sql_show.cc:
        WL#3201
          Fix to use plugin_foreach()
      sql/sql_yacc.yy:
        WL#3201
          SHOW FULL PLUGIN
      storage/archive/Makefile.am:
        WL#3201
          setup as plugin makefile
      storage/archive/ha_archive.cc:
        WL#3201
          Convert into a plugin
      storage/archive/ha_archive.h:
        WL#3201
          azlib.h now in local dir
      storage/blackhole/ha_blackhole.cc:
        WL#3201
          convert into a plugin
      storage/csv/Makefile.am:
        WL#3201
          setup as plugin makefile
      storage/csv/ha_tina.cc:
        WL#3201
          remove conditional compilation on MYSQL_PLUGIN
          mysql_declare_plugin macro change
      storage/example/Makefile.am:
        WL#3201
          fix as new-style plugin makefile
      storage/example/ha_example.cc:
        WL#3201
          remove conditional compilation on MYSQL_PLUGIN
          mysql_declare_plugin macro change
      storage/innobase/Makefile.am:
        WL#3201
          Lets make life easier and reduce innodb into a single library file
      config/ac-macros/plugins.m4:
        New BitKeeper file ``config/ac-macros/plugins.m4''
      sql/sql_builtin.cc.in:
        New BitKeeper file ``sql/sql_builtin.cc.in''
      storage/blackhole/Makefile.am:
        New BitKeeper file ``storage/blackhole/Makefile.am''
      bf4731ec
  11. 10 Apr, 2006 1 commit
    • unknown's avatar
      BUG#18750: Various problems with partition names, quotation marks · e54a0fc7
      unknown authored
      mysql-test/r/partition.result:
        Added new test cases
      mysql-test/t/partition.test:
        Added new test cases
      sql/partition_info.cc:
        Check partition names that they don't have trailing spaces
      sql/share/errmsg.txt:
        Added error code for wrong partition names
      sql/sql_partition.cc:
        New method to add partition name strings, ignore OPTION_SHOW_QUOTE_CREATE
      sql/sql_show.cc:
        require_quotes had a bug with identifiers that consisted of only digits,
        these are allowed identifiers but must be quoted and require_quote didn't
        tell this.
      sql/sql_yacc.yy:
        Partition names should identifers and not ident_or_text
      e54a0fc7
  12. 07 Apr, 2006 1 commit
    • unknown's avatar
      fix for bug #17494 (The algorithm for calculating execution times is not fully correct) · b7814967
      unknown authored
      This also should fix 17493 and 17346, and probably 16397 (not tested).
      WL#1034 (Internal CRON)
      (post-review commit)
      
      
      mysql-test/r/events.result:
        update result
      mysql-test/t/events.test:
        update test
      sql/event.cc:
        seems we get a crash if we compile it this way. better let the worker thread do it,
        this increases the stability.
      sql/event_executor.cc:
        kick in more often
      sql/event_timed.cc:
        - don't NULLify last_executed
        - implement (fix) better get_next_time() which does not use last_executed as basis
          but STARTS. STARTS is used as basis and the next point of time which is before ENDS,
          if set, is being found. The point > now and (point-starts) % interval_expression == 0.
      sql/item_timefunc.cc:
        move calc_time_diff to time.cc as it can be reused in other parts of the 
        server code (see event_timed.cc)
      sql/mysql_priv.h:
        export calc_time_diff() moved to time.cc from item_timefunc.cc
      sql/sql_show.cc:
        - fix presenting of LAST_EXECUTED
        - cleanup a bit
      sql/time.cc:
        - move calc_time_diff() from item_timefunc.cc to here
      b7814967
  13. 01 Apr, 2006 1 commit
  14. 31 Mar, 2006 1 commit
    • unknown's avatar
      BUG # 17631 SHOW TABLE STATUS reports wrong engine · dc9c1bfe
      unknown authored
      mysql-test/r/partition.result:
        results block for bug # 17631
      mysql-test/t/partition.test:
        test block for bug #17631
      sql/ha_partition.cc:
        move table_type func to .cc file and return table_type from
        the first handler.  This is acceptable since we know we have
        at least one handler and we currently do not support multiple
        engine types.  Later, we'll need to extend this to return
        some type of delimited list
      sql/ha_partition.h:
        removed inline version of this function
      sql/sql_show.cc:
        if the table is partitioned, we add the term "partitioned" to the 
        create options.  We make sure we are using the partitioned 
        handlerton before we do this.  When we support more native partition
        handlers then this will need to change.
      dc9c1bfe
  15. 29 Mar, 2006 1 commit
    • unknown's avatar
      Fixed compiler and valgrind warnings · eda5d729
      unknown authored
      Added missing DBUG_xxx_RETURN statements
      Fixed some usage of not initialized variables (as found by valgrind)
      Ensure that we don't remove locked tables used as name locks from open table cache until unlock_table_names() are called.
      This was fixed by having drop_locked_name() returning any table used as a name lock so that we can free it in unlock_table_names()
      This will allow Tomas to continue with his work to use namelocks to syncronize things.
      
      Note: valgrind still produces a lot of warnings about using not initialized code and shows memory loss errors when running the ndb tests
      
      
      BitKeeper/etc/ignore:
        added mysql-test/r/*.log
      client/mysqltest.c:
        Change type of variables to get rid of compiler warnings
        More debugging
        Fix memory leak
      mysql-test/mysql-test-run.sh:
        Collect warnings about missing DBUG_RETURN statements
      mysql-test/r/lock_multi.result:
        Add test of new code
      mysql-test/r/ndb_condition_pushdown.result:
        Drop used tables before test
      mysql-test/t/lock_multi.test:
        Add test of new code
      mysql-test/t/ndb_condition_pushdown.test:
        Drop used tables before test
      mysql-test/valgrind.supp:
        Ignore 'safe' warnings from libz (when used with archive)
      sql/event.cc:
        More comments
        Simplify code
        Fixed memory leak found by valgrind
      sql/ha_archive.cc:
        Remove compiler warnings (Wrong handlerton structure and signed/unsigned comparison)
      sql/ha_berkeley.cc:
        Fixed compiler warning
      sql/ha_blackhole.cc:
        Fixed compiler warning
      sql/ha_federated.cc:
        Fixed compiler warning
      sql/ha_heap.cc:
        Fixed compiler warning
      sql/ha_myisam.cc:
        Fixed compiler warning
      sql/ha_myisammrg.cc:
        Fixed compiler warning
      sql/ha_ndbcluster.cc:
        Fixed compiler warnings
      sql/ha_partition.cc:
        Fixed compiler warning
        Fixed error noticed by valgrind in ha_partition::rnd_init()
      sql/handler.cc:
        Fixed compiler warning
      sql/handler.h:
        Fixed compiler warning
      sql/item.cc:
        Fixed compiler warning
      sql/item_xmlfunc.cc:
        Fixed warning from valgrind when calling memcpy with wrong address
      sql/lock.cc:
        More debugging
      sql/log.cc:
        Fixed compiler warning
        Indentation fixes
      sql/log.h:
        Fixed compiler warning
      sql/mysql_priv.h:
        Changed prototype for 'drop_locked_tables'
      sql/opt_range.cc:
        Indentation fix
      sql/password.c:
        Removed compiler warnings
      sql/set_var.cc:
        Fixed compiler warning
      sql/slave.cc:
        Fixed compiler warning
      sql/sp_head.cc:
        Fixed compiler warning
      sql/sql_acl.cc:
        Fixed compiler warning
      sql/sql_analyse.cc:
        Added missing DBUG_RETURN statements
      sql/sql_base.cc:
        Removed de-reference of not initialized pointer
        More comments
        drop_locked_tables() changed to not delete tables used for name locking
        Fixed compiler warnings
      sql/sql_delete.cc:
        Fixed usage of not initialized variable
        (deleted could be referenced in some not common error conditions)
      sql/sql_parse.cc:
        Added missing DBUG_VOID_RETURN
        Simplify code
      sql/sql_partition.cc:
        Fixed usage of wrong variable (noticed by valgrind)
      sql/sql_plugin.cc:
        Removed compiler warning
      sql/sql_show.cc:
        Removed compiler warning
      sql/sql_table.cc:
        Ensure that we don't remove locked tables used as name locks from open table cache until unlock_table_names() are called.
        This was fixed by having drop_locked_name() returning any table used as a name lock so that we can free it in unlock_table_names()
        This will allow Tomas to continue with his work to use namelocks to syncronize things.
        
        Fixed wrong test of 'table_type' (path_length could otherwise be accessed uninitialized)
        
        Remove compile warnings about not initialized variables.
      sql/sql_yacc.yy:
        Ensure that no_write_to_binlog is properly initialized
        (Was accessed uninitialized by partition code)
      sql/table.cc:
        Removed valgrind warnings (not fatal)
        Removed compiler warnings
      sql/tztime.cc:
        Removed valgrind warning
      storage/ndb/include/ndbapi/NdbIndexStat.hpp:
        Removed compiler warning
      eda5d729
  16. 20 Mar, 2006 2 commits
    • unknown's avatar
      Fix for bug#18224 VIEW on information_schema crashes the server · e10ec04a
      unknown authored
        additional check for subselect
      
      
      mysql-test/r/information_schema.result:
        Fix for bug#18224 VIEW on information_schema crashes the server
          test case
      mysql-test/t/information_schema.test:
        Fix for bug#18224 VIEW on information_schema crashes the server
          test case
      e10ec04a
    • unknown's avatar
      Fix for bug #18113 "SELECT * FROM information_schema.xxx crashes server" · 2f0459df
      unknown authored
      Crash happened when one selected data from one of INFORMATION_SCHEMA
      tables and in order to build its contents server had to open view which
      used stored function and table or view on which one had not global or
      database-level privileges (e.g. had only table-level or had no
      privileges at all).
      
      The crash was caused by usage of check_grant() function, which assumes
      that either number of tables to be inspected by it is limited explicitly
      or table list used and thd->lex->query_tables_own_last value correspond
      to each other (the latter should be either 0 or point to next_global
      member of one of elements of this table list), in conditions when
      above assumptions were not true. This fix just explicitly limits
      number of tables to be inspected. Other negative effects which are
      caused by the fact that thd->lex->query_tables_own_last might not
      be set properly during processing of I_S tables are less disastrous
      and will be reported and fixed separetely.
      
      
      
      mysql-test/r/information_schema_db.result:
        Fix for bug #18113 "SELECT * FROM information_schema.xxx crashes server"
          test case
      mysql-test/t/information_schema_db.test:
        Fix for bug #18113 "SELECT * FROM information_schema.xxx crashes server"
          test case
      sql/sql_acl.cc:
          added note
      2f0459df
  17. 10 Mar, 2006 1 commit
    • unknown's avatar
      Additional fix for BUG#16777: Can not create trigger nor view · 8947b799
      unknown authored
      w/o definer if --skip-grant-tables specified.
        
      The previous patch does not allow to specify empty host name in
      DEFINER-clause explicitly.
      
      
      mysql-test/r/skip_grants.result:
        Updated the result file.
      mysql-test/r/view_grant.result:
        Updated the result file.
      mysql-test/t/skip_grants.test:
        Added test cases for BUG#16777; re-organized tests.
      mysql-test/t/view_grant.test:
        Updated after final fix of BUG#16777.
      sql/sql_parse.cc:
        The final part of fixing BUG#16777: allow empty host name in explicitly
        specified DEFINER-clause.
      sql/sql_show.cc:
        Quote an identifier if it is empty.
      8947b799
  18. 09 Mar, 2006 2 commits
    • unknown's avatar
      After-merge fixes. · 27fc6395
      unknown authored
      mysql-test/r/trigger-grant.result:
        Updated the result file.
      mysql-test/r/view_grant.result:
        Updated the result file.
      mysql-test/t/trigger-grant.test:
        A patch for BUG#13198 has been merged, so need to update the test case.
      mysql-test/t/view_grant.test:
        A patch for BUG#16777 has been merged, so need to update the test case.
      sql/sql_parse.cc:
        After-merge fix (should have been a part of fix for BUG#16777).
      sql/sql_show.cc:
        After-merge fix -- empty identifier should be quoted.
      27fc6395
    • unknown's avatar
      Fix for multiple test failures on some platforms. · 939094b5
      unknown authored
      sql/sql_lex.cc:
        Added a debug assertion that the passed string is not empty.
      sql/sql_show.cc:
        Do not quote empty string.
      939094b5
  19. 07 Mar, 2006 1 commit
    • unknown's avatar
      Fix for bug#15447 Partitions: NULL is treated as zero · 74e0cfd1
      unknown authored
        NULL value handling
      
      
      mysql-test/r/ndb_partition_error.result:
        Fix for bug#15447 Partitions: NULL is treated as zero
          test case
      mysql-test/r/partition.result:
        Fix for bug#15447 Partitions: NULL is treated as zero
          test case
      mysql-test/t/ndb_partition_error.test:
        Fix for bug#15447 Partitions: NULL is treated as zero
          test case
      mysql-test/t/partition.test:
        Fix for bug#15447 Partitions: NULL is treated as zero
          test case
      sql/partition_element.h:
        Fix for bug#15447 Partitions: NULL is treated as zero
          added null value flag to partition_element object
      sql/partition_info.h:
        Fix for bug#15447 Partitions: NULL is treated as zero
          added null value flag to partition_info object
          added has_null partition id variable
      74e0cfd1
  20. 28 Feb, 2006 2 commits
    • unknown's avatar
      class event_timed -> Event_timed · 1a97d6d2
      unknown authored
      fix for bug#17793 (Scheduler uses class event_timed should be Event_timed)
      
      
      sql/event.cc:
        class event_timed -> Event_timed
      sql/event.h:
        class event_timed -> Event_timed
      sql/event_executor.cc:
        class event_timed -> Event_timed
      sql/event_priv.h:
        class event_timed -> Event_timed
      sql/event_timed.cc:
        class event_timed -> Event_timed
      sql/sql_lex.h:
        class event_timed -> Event_timed
      sql/sql_show.cc:
        class event_timed -> Event_timed
      sql/sql_yacc.yy:
        class event_timed -> Event_timed
      1a97d6d2
    • unknown's avatar
      fix for bug#16537 (Events: mysql.event.starts is null) · c70ad8d8
      unknown authored
      - now when the event is created and STARTS is omitted then STARTS is implicitly
        CURRENT_TIMESTAMP
      - This CS also fixed incorrect presentation of STARTS/ENDS in I_S.EVENTS
      (incorporated review changes)
      
      
      mysql-test/r/events.result:
        results of new test cases
      mysql-test/t/events.test:
        new test cases for bug #16537 (Events: mysql.event.starts is null)
      sql/event.cc:
        - check whether event_timed::starts_null only in case
          event_timed::expression is set, so for recurring events only
        - disable binlogging of CREATE EVENT statement. It should not be
          replicated but the result of the execution. Still the replication is
          untouched topic.
      sql/event.h:
        - add flags whether starts, ends and execute_at are null or not
      sql/event_executor.cc:
        - check whether xxx_null instead of !xxxx.year
      sql/event_timed.cc:
        - introduce xxx_null and change the usage of xxx.year to !xxx_null
      sql/sql_show.cc:
        - don't show 0000-00-00 in I_S.EVENTS when the value is NULL
      sql/sql_yacc.yy:
        - if STARTS is omitted default to current_timestamp
      c70ad8d8
  21. 27 Feb, 2006 1 commit
  22. 25 Feb, 2006 1 commit
    • unknown's avatar
      WL#2977 and WL#2712 global and session-level variable to set the binlog format (row/statement), · 55d8e31e
      unknown authored
      and new binlog format called "mixed" (which is statement-based except if only row-based is correct,
      in this cset it means if UDF or UUID is used; more cases could be added in later 5.1 release):
      SET GLOBAL|SESSION BINLOG_FORMAT=row|statement|mixed|default;
      the global default is statement unless cluster is enabled (then it's row) as in 5.1-alpha.
      It's not possible to use SET on this variable if a session is currently in row-based mode and has open temporary tables (because CREATE
      TEMPORARY TABLE was not binlogged so temp table is not known on slave),  or if NDB is enabled (because
      NDB does not support such change on-the-fly, though it will later), of if in a stored function (see below).
      The added tests test the possibility or impossibility to SET, their effects, and the mixed mode,
      including in prepared statements and in stored procedures and functions.
      Caveats:
      a) The mixed mode will not work for stored functions: in mixed mode, a stored function will
      always be binlogged as one call and in a statement-based way (e.g. INSERT VALUES(myfunc()) or SELECT myfunc()).
      b) for the same reason, changing the thread's binlog format inside a stored function is
      refused with an error message.
      c) the same problems apply to triggers; implementing b) for triggers will be done later (will ask
      Dmitri).
      Additionally, as the binlog format is now changeable by each user for his session, I remove the implication
      which was done at startup, where row-based automatically set log-bin-trust-routine-creators to 1
      (not possible anymore as a user can now switch to stmt-based and do nasty things again), and automatically
      set --innodb-locks-unsafe-for-binlog to 1 (was anyway theoretically incorrect as it disabled
      phantom protection).
      Plus fixes for compiler warnings.
      
      
      mysql-test/r/rpl_row_4_bytes.result:
        update
      mysql-test/t/rpl_row_4_bytes.test:
        don't influence next tests
      sql/ha_archive.cc:
        please pay attention to this structure when you change it...
      sql/ha_berkeley.cc:
        please pay attention to this structure when you change it...
      sql/ha_blackhole.cc:
        please pay attention to this structure when you change it...
      sql/ha_federated.cc:
        please pay attention to this structure when you change it...
      sql/ha_heap.cc:
        please pay attention to this structure when you change it...
      sql/ha_innodb.cc:
        please pay attention to this structure when you change it...
      sql/ha_myisam.cc:
        please pay attention to this structure when you change it...
      sql/ha_myisammrg.cc:
        please pay attention to this structure when you change it...
      sql/ha_ndbcluster_binlog.cc:
        no more global 'binlog_row_based'
      sql/ha_partition.cc:
        please pay attention to this structure when you change it...
      sql/handler.cc:
        please pay attention to this structure when you change it...
      sql/handler.h:
        it's good to initialize statically (to get no compiler warning) even if to a null value.
      sql/item_func.cc:
        UDFs require row-based if this is the "mixed" binlog format.
      sql/item_strfunc.cc:
        UUID() requires row-based binlogging if this is the "mixed" binlog format
      sql/log.cc:
        binlog_row_based -> thd->current_stmt_binlog_row_based
      sql/log.h:
        the enum enum_binlog_format moves to log.h from mysqld.cc as we need it in several places.
      sql/log_event.cc:
        binlog_row_based -> thd->current_stmt_binlog_row_based
      sql/log_event.h:
        this global variable not used anymore
      sql/mysql_priv.h:
        these global variables not used anymore
      sql/mysqld.cc:
        simplification in the handling of --binlog-format (but with no user-visible change), thanks to
        the new global system variable.
        RBR does not anymore turn on --log-bin-trust-function-creators and --innodb-locks-unsafe-for-binlog
        as these are global options and RBR is now settable per session.
      sql/partition_info.cc:
        compiler warnings
      sql/set_var.cc:
        new class of thread's variable, to handle the binlog_format (like sys_var_thd_enum except
        that is_readonly() is overriden for more checks before update).
        compiler warnings (ok'd by Serg)
      sql/set_var.h:
        new class for the thread's binlog_format (see set_var.cc)
      sql/share/errmsg.txt:
        some messages for when one can't toggle from one binlog format to another
      sql/sp_head.cc:
        binlog_row_based -> thd->current_stmt_binlog_row_based
      sql/sql_base.cc:
        binlog_row_based -> thd->current_stmt_binlog_row_based
      sql/sql_class.cc:
        When a THD is initialized, we set its current_stmt_binlog_row_based
      sql/sql_class.h:
        new THD::variables.binlog_format (the value of the session variable set by SET
        or inherited from the global value), and THD::current_stmt_binlog_row_based which tells if the
        current statement does row-based or statement-based binlogging. Both members are needed
        as the 2nd one cannot be derived only from the first one (the statement's type plays a role too),
        and the 1st one is needed to reset the 2nd one.
      sql/sql_delete.cc:
        binlog_row_based -> thd->current_stmt_binlog_row_based
      sql/sql_insert.cc:
        binlog_row_based -> thd->current_stmt_binlog_row_based
      sql/sql_load.cc:
        binlog_row_based -> thd->current_stmt_binlog_row_based.
      sql/sql_parse.cc:
        when we are done with a statement, we reset the current_stmt_binlog_row_based to the value
        derived from THD::variables.binlog_format.
      sql/sql_partition.cc:
        compiler warning
      sql/sql_show.cc:
        compiler warning
      sql/sql_table.cc:
        binlog_row_based -> thd->current_stmt_binlog_row_based
      tests/mysql_client_test.c:
        compiler warning
      mysql-test/r/ndb_binlog_basic2.result:
        new result
      mysql-test/r/rpl_switch_stm_row_mixed.result:
        new result
      mysql-test/t/ndb_binlog_basic2.test:
        new test to verify that if cluster is enabled, can't change binlog format on the fly.
      mysql-test/t/rpl_switch_stm_row_mixed.test:
        test to see if one can switch between SBR, RBR, and "mixed" mode, and when one cannot,
        and test to see if the switching, and the mixed mode, work properly (using UUID() to test,
        as using UDFs is not possible in the testsuite for portability reasons).
      55d8e31e
  23. 24 Feb, 2006 1 commit
  24. 22 Feb, 2006 1 commit
    • unknown's avatar
      Bug#10460 SHOW CREATE TABLE uses inconsistent upper/lower case · a9d32586
      unknown authored
      mysql-test/r/alter_table.result:
        Update test result
      mysql-test/r/analyse.result:
        Update test result
      mysql-test/r/archive.result:
        Update test result
      mysql-test/r/archive_bitfield.result:
        Update test result
      mysql-test/r/archive_gis.result:
        Update test result
      mysql-test/r/bdb.result:
        Update test result
      mysql-test/r/bdb_gis.result:
        Update test result
      mysql-test/r/bigint.result:
        Update test result
      mysql-test/r/binary.result:
        Update test result
      mysql-test/r/case.result:
        Update test result
      mysql-test/r/cast.result:
        Update test result
      mysql-test/r/constraints.result:
        Update test result
      mysql-test/r/create.result:
        Update test result
      mysql-test/r/ctype_collate.result:
        Update test result
      mysql-test/r/ctype_create.result:
        Update test result
      mysql-test/r/ctype_latin1_de.result:
        Update test result
      mysql-test/r/ctype_many.result:
        Update test result
      mysql-test/r/ctype_mb.result:
        Update test result
      mysql-test/r/ctype_recoding.result:
        Update test result
      mysql-test/r/ctype_sjis.result:
        Update test result
      mysql-test/r/ctype_tis620.result:
        Update test result
      mysql-test/r/ctype_ucs.result:
        Update test result
      mysql-test/r/ctype_ujis.result:
        Update test result
      mysql-test/r/ctype_utf8.result:
        Update test result
      mysql-test/r/default.result:
        Update test result
      mysql-test/r/events.result:
        Update test result
      mysql-test/r/federated.result:
        Update test result
      mysql-test/r/fulltext.result:
        Update test result
      mysql-test/r/func_gconcat.result:
        Update test result
      mysql-test/r/func_group.result:
        Update test result
      mysql-test/r/func_math.result:
        Update test result
      mysql-test/r/func_misc.result:
        Update test result
      mysql-test/r/func_str.result:
        Update test result
      mysql-test/r/func_system.result:
        Update test result
      mysql-test/r/gis-rtree.result:
        Update test result
      mysql-test/r/heap.result:
        Update test result
      mysql-test/r/index_merge_innodb.result:
        Update test result
      mysql-test/r/information_schema.result:
        Update test result
      mysql-test/r/innodb.result:
        Update test result
      mysql-test/r/innodb_gis.result:
        Update test result
      mysql-test/r/key.result:
        Update test result
      mysql-test/r/merge.result:
        Update test result
      mysql-test/r/myisam.result:
        Update test result
      mysql-test/r/mysqldump-max.result:
        Update test result
      mysql-test/r/mysqldump.result:
        Update test result
      mysql-test/r/ndb_bitfield.result:
        Update test result
      mysql-test/r/ndb_gis.result:
        Update test result
      mysql-test/r/ndb_partition_key.result:
        Update test result
      mysql-test/r/null.result:
        Update test result
      mysql-test/r/partition.result:
        Update test result
      mysql-test/r/partition_02myisam.result:
        Update test result
      mysql-test/r/partition_mgm_err.result:
        Update test result
      mysql-test/r/partition_range.result:
        Update test result
      mysql-test/r/ps_2myisam.result:
        Update test result
      mysql-test/r/ps_3innodb.result:
        Update test result
      mysql-test/r/ps_4heap.result:
        Update test result
      mysql-test/r/ps_5merge.result:
        Update test result
      mysql-test/r/ps_6bdb.result:
        Update test result
      mysql-test/r/rpl_mixed_ddl_dml.result:
        Update test result
      mysql-test/r/rpl_multi_engine.result:
        Update test result
      mysql-test/r/rpl_ndb_UUID.result:
        Update test result
      mysql-test/r/show_check.result:
        Update test result
      mysql-test/r/sp-vars.result:
        Update test result
      mysql-test/r/sp.result:
        Update test result
      mysql-test/r/sql_mode.result:
        Update test result
      mysql-test/r/strict.result:
        Update test result
      mysql-test/r/subselect.result:
        Update test result
      mysql-test/r/symlink.result:
        Update test result
      mysql-test/r/synchronization.result:
        Update test result
      mysql-test/r/system_mysql_db.result:
        Update test result
      mysql-test/r/temp_table.result:
        Update test result
      mysql-test/r/trigger.result:
        Update test result
      mysql-test/r/type_binary.result:
        Update test result
      mysql-test/r/type_bit.result:
        Update test result
      mysql-test/r/type_bit_innodb.result:
        Update test result
      mysql-test/r/type_blob.result:
        Update test result
      mysql-test/r/type_decimal.result:
        Update test result
      mysql-test/r/type_enum.result:
        Update test result
      mysql-test/r/type_float.result:
        Update test result
      mysql-test/r/type_nchar.result:
        Update test result
      mysql-test/r/type_newdecimal.result:
        Update test result
      mysql-test/r/type_set.result:
        Update test result
      mysql-test/r/type_timestamp.result:
        Update test result
      mysql-test/r/type_varchar.result:
        Update test result
      mysql-test/r/union.result:
        Update test result
      mysql-test/r/user_var.result:
        Update test result
      mysql-test/r/variables.result:
        Update test result
      sql/sql_show.cc:
        Make ouput from SHOW CREATE TABLE use uppercase for "CHARACTER SET", "COLLATE", "DEFAULT", "ON UPDATE" and "AUTO_INCREMENT"
      a9d32586
  25. 21 Feb, 2006 1 commit
    • unknown's avatar
      fix for bug#16407 (EVENTS: sql_mode) · d8152e58
      unknown authored
      post-review fixes
      
      
      mysql-test/r/events_bugs.result:
        fix result
      sql/event.cc:
        fix compilation problem on windows
      sql/event_executor.cc:
        show the right host in show processlist (should be event_scheduler@localhost)
      sql/event_timed.cc:
        a bit more debug infor
        fix a problem introduced with previous push :( . clean everything that's whitespace.
        found because of new test cases which were crashing.
      sql/sql_show.cc:
        fix compile problem on windows
      d8152e58
  26. 20 Feb, 2006 2 commits
    • unknown's avatar
      fix for bug#16407 (Events: Changes in sql_mode won't be taken into account) · 8c4dd838
      unknown authored
      WL#1032
      sql_mode setting was disregarded during create/alter event and wasn't set during
      event execution.
      (post-review small fixes)
      
      
      sql/event.cc:
        store the sql_mode when the body is stored
        - always on create event
        - during alter event if the user changes the body
      sql/event.h:
        add sql_mode as member variable
      sql/event_timed.cc:
        - exchange thd->variables.sql_mode before and after execution
        - set the sql_mode of the anonymous SP -> event_timed::sphead
      sql/sql_show.cc:
        - show real content in I_S.EVENTS.SQL_MODE , disallow NULL
      8c4dd838
    • unknown's avatar
      fix for bug #16411 Events: Microsecond intervals are allowed · a2b5573d
      unknown authored
      WL#1034
      
      
      mysql-test/r/events.result:
        output fix
      sql/event.cc:
        - handle also INTERVAL_MICROSECOND, was missing.
        - use renamed ER_ code which is generic
      sql/event.h:
        add new error code
      sql/event_executor.cc:
        - use new ER_ code name
        - handle EVEX_MICROSECOND_UNSUP error code
      sql/event_timed.cc:
        forbid MICROSECOND intervals for events
      sql/share/errmsg.txt:
        rename error code, it's generic
      sql/sql_show.cc:
        use new error code name
      sql/sql_yacc.yy:
        bail out if any MICROSECOND interval is specified
      a2b5573d
  27. 16 Feb, 2006 3 commits
    • unknown's avatar
      BUG#15408: Partitions: subpartition names are not unique · fcd35cde
      unknown authored
      Also, moved some of the code out of handler.h and into partition specific files for better 
      separation.
      Also, moved some of the C funcs into partition_info as formal C++ methods
      
      
      mysql-test/r/partition_mgm_err.result:
        result block for test of bug # 15408
      mysql-test/t/partition_mgm_err.test:
        test for duplicate subpartition names
      sql/Makefile.am:
        adding sql_partition.h, partition_info.cpp, partition_info.h, and partition_element.h to the makefile
      sql/ha_partition.cc:
        using the new members of partition_info
      sql/ha_partition.h:
        using the new members of partition_info
      sql/handler.h:
        moved this code into sql_partition.h
      sql/mysql_priv.h:
        including sql_partition.h also now
      sql/opt_range.cc:
        using the new members of partition_info
      sql/sql_partition.cc:
        moved some of the functions out and into the partition_info class
        using the new members of partition_info
      sql/sql_show.cc:
        using the new members of partition_info
      win/cmakefiles/sql:
        added partition_info.cpp to the sql cmake file
      sql/partition_element.h:
        New BitKeeper file ``sql/partition_element.h''
      sql/partition_info.h:
        New BitKeeper file ``sql/partition_info.h''
      sql/sql_partition.h:
        New BitKeeper file ``sql/sql_partition.h''
      fcd35cde
    • unknown's avatar
      The patch adds PROCESSLIST information schema · c07f4a52
      unknown authored
      mysql-test/r/information_schema.result:
        Fixing results after PROCESSLIST information schema is added.
      mysql-test/r/information_schema_db.result:
        Fixing results after PROCESSLIST information schema is added.
      mysql-test/t/information_schema.test:
        Test case to check PROCESSLIST information schema.
          (Note that selecting other fields from PROCESSLIST
          can make the test unstable).
      sql/sql_show.cc:
        Code for PROCESSLIST information schema
      sql/table.h:
        Added for PROCESSLIST informarion schema
      c07f4a52
    • unknown's avatar
      fix bug in show events which shows · 5d052fec
      unknown authored
      | INTERVAL_VALUE | INTERVAL_FIELD |
      | 20             | 20 MINUTE      |
      the second one should be without the value
      
      
      mysql-test/r/events.result:
        update test result to be as they should be
      sql/event_timed.cc:
        manually append the name of the interval because it's no more appended
        by reconstruct_value
      5d052fec
  28. 14 Feb, 2006 2 commits
    • unknown's avatar
      - final fixes for bug#16431 (Events: An event which alters itself disappears) · ccad166d
      unknown authored
      - fix for bug#16423 (Events: SHOW CREATE EVENT doesn't work)
      - this Changeset commits makes CREATE/UPDATE/DELETE EVENT real DDL statements
        by committing the currently open transaction before they are executed.
      - this Changeset also fixes a trailing space problem since the very early days
        of the internal cron
      - adds sophisticated checking of whether mysql.event was tampered accidentally
        or with purpose by an user.
      - adds a lot of inline function documentation - documents everything left
        uncodumented
      - INTERVAL_XXXX to XXX in I_S.EVENTS.INTERVAL_FIELD
      
      WL#1034 (Internal CRON)
      
      
      mysql-test/r/events.result:
        update result
      mysql-test/t/events.test:
        add test cases for SHOW CREATE EVENT
        add test cases where the structure of mysql.event is changed and error reporting in this case
      sql/event.cc:
        - do a lot more checking on mysql.event whether it's valid
          introduced generic function table_check_intact() which can be used also
          for checking whether a system table (mysql.*) has been tampered by user
          and report an error in this case. The checking is quite strict, thus
          maybe some mechanism can be added later that loosens this like some
          session variable, for instance, i_am_aware_that_i_can_damage_my_data
          so the table will be opened nevertheless we think that it's not valid.
        - add evex_show_create_event(THD *thd, sp_name *spn, LEX_STRING definer)
        - document a loooot. not a single function left undocumented.
      sql/event.h:
        - add evex_show_create_event(THD *thd, sp_name *spn, LEX_STRING definer)
        - change get_show_create_event() to get_create_event()
        - add TABLE_FIELD_W_TYPE used by table_check_intact()
        - add event_timed::sql_mode so it can be used by show create event. currently
          always 0, will be fixed by a patch for another bug. At least makes the code
          of show create event complete.
      sql/event_executor.cc:
        - add evex_check_system_tables() that checks on boot and event
          main thread startup that mysql.db and mysql.user tables are correct.
        - document everything!
      sql/event_priv.h:
        remove a line
      sql/event_timed.cc:
        - implement SHOW CREATE EVENT
        - document undocumented functions!
      sql/share/errmsg.txt:
        - fix an error message and add two new
      sql/sql_acl.cc:
        - add mysql.db table definition to use by table_check_intact()
        - exchange some of the positions by numbers from mysql.db to enum names (see sql_acl.h)
      sql/sql_acl.h:
        - define the structure of mysql.db table
      sql/sql_parse.cc:
        - handle SQLCOM_SHOW_CREATE_EVENT
        - end the current transaction becase CREATE/UPDATE/DELETE EVENT is a DDL
          statement
      sql/sql_show.cc:
        - remove interval_type_to_name
        - use common function event_reconstruct_interval_expression()
          that reconstructs the expression given at create/alter, to some
          extent - interval of 2:62 MINUTE_SECOND will be reconstructed as
          interval of 3:02 MINUTE_SECOND!
      sql/sql_yacc.yy:
        init the definer of event_timed also when doing SHOW CREATE EVENT
        because it's needed for checking into mysql.event
      sql/table.cc:
        - remove stale code. only mysql.event should be a 'system_table'
        - add table_check_intact() to check the consistency of a table.
          mostly usable with mysql.xxx tables.
      sql/table.h:
        - export TABLE_FIELD_W_TYPE and table_check_intact() which are used for 
          checking the structure of a table. mostly usable for mysql.xxx tables.
      ccad166d
    • unknown's avatar
      Bug#16591 Partitions: crash using information_schema.partitions · 369320cf
      unknown authored
      Bug#16695 Reading I_S.PARTITIONS with pre-5.1.6 partitioned tables crashes server
       issue a warning in case of error during table opening
      
      369320cf
  29. 13 Feb, 2006 1 commit
    • unknown's avatar
      Bug #17340 SHOW CREATE TABLE from second session crashes the server · f7f3d087
      unknown authored
      - no check was made that ndb thd object was allocated
      
      
      sql/ha_ndbcluster.h:
        Bug #17340  	SHOW CREATE TABLE from second session crashes the server
      sql/handler.h:
        Bug #17340  	SHOW CREATE TABLE from second session crashes the server
      sql/sql_show.cc:
        Bug #17340  	SHOW CREATE TABLE from second session crashes the server
      f7f3d087