An error occurred fetching the project authors.
  1. 31 Mar, 2009 1 commit
  2. 17 Oct, 2008 1 commit
    • Georgi Kodinov's avatar
      Bug #33811: Call to stored procedure with SELECT * / RIGHT JOIN · 697b2839
      Georgi Kodinov authored
      fails after the first time
        
      Two separate problems : 
        1. When flattening joins the linked list used for name resolution 
        (next_name_resolution_table) was not updated.
        Fixed by updating the pointers when extending the table list
        
        2. The items created by expanding a * (star) as a column reference
        were marked as fixed, but no cached table was assigned to them 
        (unlike what Item_field::fix_fields does).
        Fixed by assigning a cached table (so the re-preparation is done
        faster).
        
      Note that the fix for #2 hides the fix for #1 in most cases
      (except when a table reference cannot be cached).
      
      mysql-test/r/sp.result:
        Bug #33811: test case
      mysql-test/t/sp.test:
        Bug #33811: test case
      sql/sql_base.cc:
        Bug #33811: cache the table for Item_fields created by expanding '*'
      sql/sql_select.cc:
        Bug #33811: maintain a correct name resolution chain when
        flattening joins.
      697b2839
  3. 14 Oct, 2008 1 commit
    • Davi Arnaut's avatar
      Bug#38823: Invalid memory access when a SP statement does wildcard expansion · 017307f2
      Davi Arnaut authored
      The problem is that field names constructed due to wild-card
      expansion done inside a stored procedure could point to freed
      memory if the expansion was performed after the first call to
      the stored procedure.
      
      The problem was solved by patch for Bug#38691. The solution
      was to allocate the database, table and field names in the
      in the statement memory instead of table memory.
      
      mysql-test/r/sp.result:
        Add test case result for Bug#38823
      mysql-test/t/sp.test:
        Add test case for Bug#38823
      sql/item.cc:
        Remark that this also impacts wildcard expansion inside SPs.
      017307f2
  4. 20 Sep, 2008 1 commit
    • Kristofer Pettersson's avatar
      Bug#38469 invalid memory read and/or crash with utf8 text field, stored procedure, uservar · f0352e34
      Kristofer Pettersson authored
                  
      A stored procedure involving substrings could crash the server on certain
      platforms because of invalid memory reads.
                
      During storing the new blob-field value, the cached value's address range
      overlapped that of the new field value. This caused problems when the 
      cached value storage was reallocated to provide access for a new 
      characater set representation. The patch checks the address ranges, and if
      they overlap, the new field value is copied to a new storage before it is
      converted to the new character set.
      
      
      mysql-test/r/sp.result:
        Added result set
      mysql-test/t/sp.test:
        Added test case
      sql/field.cc:
        The source and destination address ranges of a character conversion must not overlap or the 'from' address will be invalidated as the temporary value-
        object is re-allocated to fit the new character set.
      sql/field.h:
        Added comments
      f0352e34
  5. 20 Aug, 2008 1 commit
    • Sergey Glukhov's avatar
      Bug#38291 memory corruption and server crash with view/sp/function · de73b729
      Sergey Glukhov authored
      Send_field.org_col_name has broken value on secondary execution.
      It happens when result field is created from the field which belongs to view
      due to forgotten assignment of some Send_field attributes. 
      The fix:
      set Send_field.org_col_name,org_table_name with correct value during Send_field intialization.
      
      mysql-test/r/metadata.result:
        result fix
        The result file was changed because now forgotten attributes are properly set.
      mysql-test/r/sp.result:
        test result
      mysql-test/t/sp.test:
        test case
      sql/item.cc:
        Send_field.org_col_name has broken value on secondary execution.
        It happens when result field is created from the field which belongs to view
        due to forgotten assignment of some Send_field attributes. 
        The fix:
        set Send_field.org_col_name,org_table_name with correct value during Send_field intialization.
      tests/mysql_client_test.c:
        test case fix
        The test was changed because now forgotten attributes are properly set.
      de73b729
  6. 13 May, 2008 1 commit
    • unknown's avatar
      Bug#35997 Event scheduler seems to let the server crash, if it is embedded. · c83b9a33
      unknown authored
      Fixed build failure depending on events in embedded build.
      
      
      mysql-test/r/create.result:
        Moved test with events to another test file sine embedded build doesn't
        support event scheduler.
      mysql-test/r/events_2.result:
        Moved test with events to another test file sine embedded build doesn't
        support event scheduler.
      mysql-test/r/sp.result:
        Removed 'show privileges' from test as result is depending on 
        if event sheduler is built in.
      mysql-test/t/create.test:
        Moved test with events to another test file sine embedded build doesn't
        support event scheduler.
      mysql-test/t/events_2.test:
        Moved test with events to another test file sine embedded build doesn't
        support event scheduler.
      mysql-test/t/sp.test:
        Removed 'show privileges' from test as result is depending on 
        if event sheduler is built in.
      c83b9a33
  7. 08 Apr, 2008 1 commit
    • unknown's avatar
      Check warnings in servers error log as part of test case · 2c4ca510
      unknown authored
      BitKeeper/deleted/.del-rpl_bug33931-slave.opt:
        Delete: mysql-test/suite/rpl/t/rpl_bug33931-slave.opt
      mysql-test/include/default_mysqld.cnf:
        Set a default name for "log-bin"
      mysql-test/mysql-test-run.pl:
        Check for warnings in mysqld error log files after each testcase,
        using SQL
      mysql-test/lib/mtr_cases.pm:
        Make mtr_match into a perl module
      mysql-test/lib/mtr_match.pm:
        Make mtr_match into a perl module
      mysql-test/lib/mtr_report.pm:
        Make mtr_match into a perl module
        Print warnings if testcase failed from warnings
      mysql-test/r/information_schema.result:
        Be more selective which databases and tables are select in the queries
      mysql-test/r/mysql_upgrade.result:
        Update result, mysql_upgrade will check _all_ databases
      mysql-test/r/mysqlcheck.result:
        Update result, mysql_upgrade should check _all_ databases
      mysql-test/r/sp-destruct.result:
        Be more selective which databases and tables are select in the queries
      mysql-test/r/sp-error.result:
        Backup and restore mysql.proc table
      mysql-test/r/sp-security.result:
        Be more selective which databases and tables are select in the queries
      mysql-test/r/sp.result:
        Be more selective which databases and tables are select in the queries
      mysql-test/suite/rpl/r/rpl_bug33931.result:
        Move the setting of debug flag into the test file instead of in -slave.opt
        Add supression
      mysql-test/suite/rpl/r/rpl_idempotency.result:
        Add supression
        Add master-slave-end.inc
      mysql-test/suite/rpl/t/rpl_bug33931.test:
        Move the setting of debug flag into the test file instead of in -slave.opt
        Add supression
      mysql-test/suite/rpl/t/rpl_idempotency.test:
        Add supression
        Add master-slave-end.inc
      mysql-test/t/information_schema.test:
        Be more selective which databases and tables are select in the queries
      mysql-test/t/sp-destruct.test:
        Be more selective which databases and tables are select in the queries
      mysql-test/t/sp-error.test:
        Backup and restore mysql.proc table
      mysql-test/t/sp-security.test:
        Be more selective which databases and tables are select in the queries
      mysql-test/t/sp.test:
        Be more selective which databases and tables are select in the queries
      mysql-test/include/check-warnings.test:
        New BitKeeper file ``mysql-test/include/check-warnings.test''
      mysql-test/include/mtr_warnings.sql:
        New BitKeeper file ``mysql-test/include/mtr_warnings.sql''
      2c4ca510
  8. 17 Feb, 2008 1 commit
  9. 07 Feb, 2008 1 commit
    • unknown's avatar
      Bug#32633 Can not create any routine if SQL_MODE=no_engine_substitution · 1b6b7010
      unknown authored
      The problem is that one can not create a stored routine if sql_mode
      contains NO_ENGINE_SUBSTITUTION or PAD_CHAR_TO_FULL_LENGTH. Also when
      a event is created, the mode is silently lost if sql_mode contains one
      of the aforementioned.  This was happening because the table definitions
      which stored sql_mode values weren't being updated to accept new values
      of sql_mode.
      
      The solution is to update, in a backwards compatible manner, the various
      table definitions (columns) that store the sql_mode value to take into
      account the new possible values. One incompatible change is that if a event
      that is being created can't be stored to the mysql.event table, an error
      will be raised.
      
      The tests case also ensure that new SQL modes will be added to the mysql.proc
      and mysql.event tables, otherwise the tests will fail.
      
      
      mysql-test/r/events_bugs.result:
        Add test case result for Bug#32633
      mysql-test/r/information_schema.result:
        Update the sql_mode column definition.
      mysql-test/r/sp.result:
        Add test case result for Bug#32633
      mysql-test/r/system_mysql_db.result:
        Update the sql_mode column definition.
      mysql-test/t/events_bugs.test:
        Add test case for Bug#32633
      mysql-test/t/sp.test:
        Add test case for Bug#32633
      mysql-test/t/system_mysql_db_fix50117.test:
        Update the sql_mode column definition.
      scripts/mysql_system_tables.sql:
        Update the sql_mode column definition.
      scripts/mysql_system_tables_fix.sql:
        Update the sql_mode column definition.
      sql/event_db_repository.cc:
        Reset and restore SQL modes when storing and loading a
        event from the data dictionary. Also throw out a error
        if a store fails.
      sql/mysqld.cc:
        Add warning to avoid this problem in the future.
      sql-common/my_user.c:
        Truncate length if user name or host name does not fit
        in the buffer.
      sql/sp.cc:
        SQL mode of the thread must not effect data dictionary operations.
      1b6b7010
  10. 31 Jan, 2008 1 commit
    • unknown's avatar
      Bug#30787: Stored function ignores user defined alias. · 754c3f51
      unknown authored
      Simple subselects are pulled into upper selects. This operation substitutes the
      pulled subselect for the first item from the select list of the subselect.
      If an alias is defined for a subselect it is inherited by the replacement item.
      As this is done after fix_fields phase this alias isn't showed if the
      replacement item is a stored function. This happens because the Item_func_sp::make_field
      function makes send field from its result_field and ignores the defined alias.
      
      Now when an alias is defined the Item_func_sp::make_field function sets it for
      the returned field.
      
      
      mysql-test/t/sp.test:
        Added a test case for the bug#30787: Stored function ignores user defined alias.
      mysql-test/r/sp.result:
        Added a test case for the bug#30787: Stored function ignores user defined alias.
      sql/item_func.cc:
        Bug#30787: Stored function ignores user defined alias.
        Now when an alias is defined the Item_func_sp::make_field function sets it for
        the returned field.
      754c3f51
  11. 23 Jan, 2008 2 commits
    • unknown's avatar
      Manual merge · e63a0501
      unknown authored
      e63a0501
    • unknown's avatar
      Bug#33618 (Crash in sp_rcontext) · e6a077e3
      unknown authored
      Bug 33983 (Stored Procedures: wrong end <label> syntax is accepted)
      
      The server used to crash when REPEAT or another control instruction
      was used in conjunction with labels and a LEAVE instruction.
      
      The crash was caused by a missing "pop" of handlers or cursors in the
      code representing the stored program. When executing the code in a loop,
      this missing "pop" would result in a stack overflow, corrupting memory.
      
      Code generation has been fixed to produce the missing h_pop/c_pop
      instructions.
      
      Also, the logic checking that labels at the beginning and the end of a
      statement are matched was incorrect, causing Bug 33983.
      End labels, when used, must match the label used at the beginning of a block.
      
      
      mysql-test/r/sp-code.result:
        Bug#33618 (Crash in sp_rcontext)
      mysql-test/r/sp-error.result:
        Bug 33983 (Stored Procedures: wrong end <label> syntax is accepted)
      mysql-test/r/sp.result:
        Bug#33618 (Crash in sp_rcontext)
      mysql-test/t/sp-code.test:
        Bug#33618 (Crash in sp_rcontext)
      mysql-test/t/sp-error.test:
        Bug 33983 (Stored Procedures: wrong end <label> syntax is accepted)
      mysql-test/t/sp.test:
        Bug#33618 (Crash in sp_rcontext)
      sql/sp_head.cc:
        Bug#33618 (Crash in sp_rcontext)
      sql/sp_head.h:
        Bug#33618 (Crash in sp_rcontext)
      sql/sp_rcontext.cc:
        Bug#33618 (Crash in sp_rcontext)
      sql/sp_rcontext.h:
        Bug#33618 (Crash in sp_rcontext)
      sql/sql_yacc.yy:
        Bug#33618 (Crash in sp_rcontext)
      e6a077e3
  12. 08 Jan, 2008 1 commit
  13. 12 Dec, 2007 1 commit
    • unknown's avatar
      WL#4189 · 1370500c
      unknown authored
       - dynamic configuration support
       - safe process
       - cleanups
       - create new suite for fedarated
      
      
      BitKeeper/deleted/.del-basic.test:
        Rename: mysql-test/ndb/basic.test -> BitKeeper/deleted/.del-basic.test
      BitKeeper/deleted/.del-basic_log.result:
        Rename: mysql-test/ndb/basic_log.result -> BitKeeper/deleted/.del-basic_log.result
      mysql-test/suite/federated/federated_transactions.result:
        Rename: mysql-test/r/federated_transactions.result -> mysql-test/suite/federated/federated_transactions.result
      BitKeeper/deleted/.del-have_bug25714.require:
        Rename: mysql-test/r/have_bug25714.require -> BitKeeper/deleted/.del-have_bug25714.require
      BitKeeper/deleted/.del-kill_master.sh:
        Rename: mysql-test/misc/kill_master.sh -> BitKeeper/deleted/.del-kill_master.sh
      BitKeeper/deleted/.del-ndb_config_4_node.ini~d8e572e9b68f933a:
        Rename: mysql-test/ndb/ndb_config_4_node.ini -> BitKeeper/deleted/.del-ndb_config_4_node.ini~d8e572e9b68f933a
      BitKeeper/deleted/.del-restart.result:
        Rename: mysql-test/ndb/restart.result -> BitKeeper/deleted/.del-restart.result
      mysql-test/suite/federated/federated_cleanup.inc:
        Rename: mysql-test/include/federated_cleanup.inc -> mysql-test/suite/federated/federated_cleanup.inc
      mysql-test/suite/rpl/t/rpl_rotate_logs-slave.opt:
        Rename: mysql-test/suite/rpl/t/rpl_rotate_logs.slave-mi -> mysql-test/suite/rpl/t/rpl_rotate_logs-slave.opt
      BitKeeper/deleted/.del-install_test_db.sh:
        Rename: mysql-test/install_test_db.sh -> BitKeeper/deleted/.del-install_test_db.sh
      BitKeeper/deleted/.del-ndb_config_1_node.ini~7ec640ed25570e16:
        Rename: mysql-test/ndb/ndb_config_1_node.ini -> BitKeeper/deleted/.del-ndb_config_1_node.ini~7ec640ed25570e16
      BitKeeper/deleted/.del-mtr_timer.pl:
        Rename: mysql-test/lib/mtr_timer.pl -> BitKeeper/deleted/.del-mtr_timer.pl
      BitKeeper/deleted/.del-create-test-result:
        Rename: mysql-test/create-test-result -> BitKeeper/deleted/.del-create-test-result
      BitKeeper/deleted/.del-fix-result:
        Rename: mysql-test/fix-result -> BitKeeper/deleted/.del-fix-result
      BitKeeper/deleted/.del-mysql-test-run-shell.sh:
        Rename: mysql-test/mysql-test-run-shell.sh -> BitKeeper/deleted/.del-mysql-test-run-shell.sh
      BitKeeper/deleted/.del-mysql-test_V1.9.pl:
        Rename: mysql-test/misc/mysql-test_V1.9.pl -> BitKeeper/deleted/.del-mysql-test_V1.9.pl
      BitKeeper/deleted/.del-resolve-stack:
        Rename: mysql-test/resolve-stack -> BitKeeper/deleted/.del-resolve-stack
      BitKeeper/deleted/.del-restart_log.result:
        Rename: mysql-test/ndb/restart_log.result -> BitKeeper/deleted/.del-restart_log.result
      mysql-test/suite/rpl/t/rpl_000015-slave.opt:
        Rename: mysql-test/suite/rpl/t/rpl_000015.slave-mi -> mysql-test/suite/rpl/t/rpl_000015-slave.opt
      BitKeeper/deleted/.del-ndb_config_2_node.ini:
        Rename: mysql-test/ndb/ndb_config_2_node.ini -> BitKeeper/deleted/.del-ndb_config_2_node.ini
      BitKeeper/deleted/.del-ndbcluster.sh:
        Rename: mysql-test/ndb/ndbcluster.sh -> BitKeeper/deleted/.del-ndbcluster.sh
      BitKeeper/deleted/.del-basic.result:
        Rename: mysql-test/ndb/basic.result -> BitKeeper/deleted/.del-basic.result
      BitKeeper/deleted/.del-restart.test:
        Rename: mysql-test/ndb/restart.test -> BitKeeper/deleted/.del-restart.test
      BitKeeper/deleted/.del-have_bug25714.inc:
        Rename: mysql-test/include/have_bug25714.inc -> BitKeeper/deleted/.del-have_bug25714.inc
      BitKeeper/deleted/.del-mtr_diff.pl:
        Rename: mysql-test/lib/mtr_diff.pl -> BitKeeper/deleted/.del-mtr_diff.pl
      mysql-test/suite/federated/federated_transactions-slave.opt:
        Rename: mysql-test/t/federated_transactions-slave.opt -> mysql-test/suite/federated/federated_transactions-slave.opt
      BitKeeper/deleted/.del-Makefile.am~343467da4d0f211b:
        Rename: mysql-test/ndb/Makefile.am -> BitKeeper/deleted/.del-Makefile.am~343467da4d0f211b
      BitKeeper/deleted/.del-mtr_im.pl~9762b0336c28949:
        Rename: mysql-test/lib/mtr_im.pl -> BitKeeper/deleted/.del-mtr_im.pl~9762b0336c28949
      mysql-test/suite/federated/federated_innodb-slave.opt:
        Rename: mysql-test/t/federated_innodb-slave.opt -> mysql-test/suite/federated/federated_innodb-slave.opt
      client/mysqltest.c:
        Use current files path first when looking for include file
      configure.in:
        Remove mysql-test/nbd
      mysql-test/Makefile.am:
        Cleanup mysql-test/Makefile.am
      mysql-test/extra/binlog_tests/blackhole.test:
        Use new paths
      mysql-test/extra/binlog_tests/ctype_ucs_binlog.test:
        Use new paths
      mysql-test/mysql-test-run.pl:
        Dynamic configuration support
        Safe process
      mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test:
        Use new paths
      mysql-test/extra/rpl_tests/rpl_EE_err.test:
        Use new paths
      mysql-test/extra/rpl_tests/rpl_loaddata.test:
        Use new paths
      mysql-test/extra/rpl_tests/rpl_log.test:
        Use new paths
      mysql-test/extra/rpl_tests/rpl_row_001.test:
        Use new paths
      mysql-test/extra/rpl_tests/rpl_row_charset.test:
        Use new paths
      mysql-test/extra/rpl_tests/rpl_stm_000001.test:
        Use new paths
      mysql-test/extra/rpl_tests/rpl_stm_charset.test:
        Use new paths
      mysql-test/include/have_blackhole.inc:
        Use new paths
      mysql-test/include/have_ndbapi_examples.inc:
        Use new paths
      mysql-test/include/loaddata_autocom.inc:
        Use new paths
      mysql-test/include/mix1.inc:
        Use new paths
      mysql-test/include/ndb_backup.inc:
        Use new paths
      mysql-test/include/ndb_restore_master.inc:
        Use new paths
      mysql-test/include/ndb_restore_slave_eoption.inc:
        Use new paths
      mysql-test/include/testdb_only.inc:
        Use new paths
      mysql-test/lib/My/Config.pm:
        dynamic configuration
        safe process
        cleanups
      mysql-test/lib/mtr_cases.pm:
        dynamic configuration
        safe process
        cleanups
      mysql-test/lib/mtr_io.pl:
        dynamic configuration
        safe process
        cleanups
      mysql-test/lib/mtr_misc.pl:
        dynamic configuration
        safe process
        cleanups
      mysql-test/lib/mtr_process.pl:
        dynamic configuration
        safe process
        cleanups
      mysql-test/lib/mtr_report.pl:
        dynamic configuration
        safe process
        cleanups
      mysql-test/lib/mtr_stress.pl:
        dynamic configuration
        safe process
        cleanups
      mysql-test/r/backup.result:
        Use new paths
      mysql-test/r/ctype_big5.result:
        Use new paths
      mysql-test/r/gis.result:
        Use new paths
      mysql-test/r/loaddata.result:
        Use new paths
      mysql-test/r/loaddata_autocom_innodb.result:
        Use new paths
      mysql-test/r/mysqlbinlog.result:
        Use new paths
      mysql-test/r/mysqlbinlog_base64.result:
        Use new paths
      mysql-test/r/outfile.result:
        Use new paths
      mysql-test/r/partition_error.result:
        Use new paths
      mysql-test/r/partition_not_windows.result:
        Use new paths
      mysql-test/r/partition_symlink.result:
        Use new paths
      mysql-test/r/query_cache.result:
        Use new paths
      mysql-test/r/sp.result:
        Use new paths
      mysql-test/r/symlink.result:
        Use new paths
      mysql-test/r/system_mysql_db.result:
        Use new paths
      mysql-test/r/trigger.result:
        Use new paths
      mysql-test/r/type_blob.result:
        Use new paths
      mysql-test/r/view.result:
        Use new paths
      mysql-test/r/warnings.result:
        Use new paths
      mysql-test/suite/binlog/r/binlog_killed_simulate.result:
        Use new paths
      mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
        Use new paths
      mysql-test/suite/binlog/r/binlog_stm_blackhole.result:
        Use new paths
      mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
        Use new paths
      mysql-test/suite/binlog/t/binlog_killed.test:
        Use new paths
      mysql-test/suite/binlog/t/binlog_killed_simulate.test:
        Use new paths
      mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam.test:
        Use new paths
      mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test:
        Use new paths
      mysql-test/suite/federated/federated.inc:
        Use new paths
      mysql-test/suite/federated/federated.result:
        Use new paths
      mysql-test/suite/federated/federated.test:
        Use new paths
      mysql-test/suite/federated/federated_archive.result:
        Use new paths
      mysql-test/suite/federated/federated_archive.test:
        Use new paths
      mysql-test/suite/federated/federated_bug_13118.result:
        Use new paths
      mysql-test/suite/federated/federated_bug_13118.test:
        Use new paths
      mysql-test/suite/federated/federated_bug_25714.result:
        Use new paths
      mysql-test/suite/federated/federated_bug_25714.test:
        Use new paths
      mysql-test/suite/federated/federated_innodb.result:
        Use new paths
      mysql-test/suite/federated/federated_innodb.test:
        Use new paths
      mysql-test/suite/federated/federated_server.result:
        Use new paths
      mysql-test/suite/federated/federated_server.test:
        Use new paths
      mysql-test/suite/federated/federated_transactions.test:
        Use new paths
      mysql-test/suite/federated/have_federated_db.inc:
        Use new paths
      mysql-test/suite/ndb/r/loaddata_autocom_ndb.result:
        Use new paths
      mysql-test/suite/ndb/r/ndb_config.result:
        Use new paths
      mysql-test/suite/ndb/r/ndb_dd_backuprestore.result:
        Use new paths
      mysql-test/suite/ndb/r/ndb_load.result:
        Use new paths
      mysql-test/suite/ndb/r/ndb_loaddatalocal.result:
        Use new paths
      mysql-test/suite/ndb/r/ndb_replace.result:
        Use new paths
      mysql-test/suite/ndb/r/ndb_restore.result:
        Use new paths
      mysql-test/suite/ndb/r/ndb_restore_partition.result:
        Use new paths
      mysql-test/suite/ndb/r/ndb_restore_print.result:
        Use new paths
      mysql-test/suite/ndb/r/ndb_trigger.result:
        Use new paths
      mysql-test/suite/ndb/t/ndb_alter_table.test:
        Use new paths
      mysql-test/suite/ndb/t/ndb_config.test:
        Use new paths
      mysql-test/suite/ndb/t/ndb_load.test:
        Use new paths
      mysql-test/suite/ndb/t/ndb_loaddatalocal.test:
        Use new paths
      mysql-test/suite/ndb/t/ndb_replace.test:
        Use new paths
      mysql-test/suite/ndb/t/ndb_restore.test:
        Use new paths
      mysql-test/suite/ndb/t/ndb_single_user.test:
        Use new paths
      mysql-test/suite/ndb/t/ndb_trigger.test:
        Use new paths
      mysql-test/suite/ndb/t/ndbapi.test:
        Use new paths
      mysql-test/suite/rpl/include/rpl_mixed_dml.inc:
        Use new paths
      mysql-test/suite/rpl/r/rpl_LD_INFILE.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_flushlog_loop.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_innodb.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_load_table_from_master.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_loaddata.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_loaddata_charset.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_loaddata_fatal.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_loaddata_m.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_loaddata_s.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_loaddata_simple.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_loaddatalocal.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_loadfile.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_misc_functions.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_replicate_do.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_rewrt_db.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_row_001.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_row_loaddata_m.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_row_log.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_row_log_innodb.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_row_stop_middle_update.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_stm_000001.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_stm_log.result:
        Use new paths
      mysql-test/suite/rpl/r/rpl_timezone.result:
        Use new paths
      mysql-test/suite/rpl/t/disabled.def:
        Use new paths
      mysql-test/suite/rpl/t/rpl000017-slave.sh:
        Use new paths
      mysql-test/suite/rpl/t/rpl_LD_INFILE.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_drop_db.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_flushlog_loop-master.opt:
        Use new paths
      mysql-test/suite/rpl/t/rpl_flushlog_loop-slave.opt:
        Use new paths
      mysql-test/suite/rpl/t/rpl_flushlog_loop.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_innodb.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_innodb_bug30919.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_load_from_master.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_load_table_from_master.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_loaddata_charset.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_loaddata_fatal.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_loaddata_m.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_loaddata_s.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_loaddata_simple.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_loaddatalocal.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_loadfile.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_misc_functions.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_replicate_do.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_rewrt_db.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_rotate_logs-master.opt:
        Use new paths
      mysql-test/suite/rpl/t/rpl_rotate_logs.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_row_charset_innodb.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_row_stop_middle_update.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_timezone.test:
        Use new paths
      mysql-test/suite/rpl/t/rpl_trigger.test:
        Use new paths
      mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_advance.result:
        Use new paths
      mysql-test/suite/rpl_ndb/r/rpl_ndb_innodb_trans.result:
        Use new paths
      mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result:
        Use new paths
      mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result:
        Use new paths
      mysql-test/suite/rpl_ndb/r/rpl_ndb_row_001.result:
        Use new paths
      mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result:
        Use new paths
      mysql-test/suite/rpl_ndb/t/rpl_ndb_bank.test:
        Use new paths
      mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_advance.test:
        Use new paths
      mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans.test:
        Use new paths
      mysql-test/suite/rpl_ndb/t/rpl_ndb_load.test:
        Use new paths
      mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test:
        Use new paths
      mysql-test/suite/rpl_ndb/t/rpl_ndbapi_multi.test:
        Use new paths
      mysql-test/t/backup.test:
        Use new paths
      mysql-test/t/bootstrap.test:
        Use new paths
      mysql-test/t/crash_commit_before.test:
        Use new paths
      mysql-test/t/create_not_windows.test:
        Use new paths
      mysql-test/t/csv.test:
        Use new paths
      mysql-test/t/ctype_big5.test:
        Use new paths
      mysql-test/t/disabled.def:
        Use new paths
      mysql-test/t/distinct.test:
        Use new paths
      mysql-test/t/gis.test:
        Use new paths
      mysql-test/t/grant_cache_no_prot.test:
        Use new paths
      mysql-test/t/grant_cache_ps_prot.test:
        Use new paths
      mysql-test/t/information_schema_chmod.test:
        Use new paths
      mysql-test/t/loaddata.test:
        Use new paths
      mysql-test/t/log_state.test:
        Use new paths
      mysql-test/t/myisam-system.test:
        Use new paths
      mysql-test/t/mysql_upgrade.test:
        Use new paths
      mysql-test/t/mysqlbinlog-cp932.test:
        Use new paths
      mysql-test/t/mysqlbinlog.test:
        Use new paths
      mysql-test/t/mysqlbinlog2.test:
        Use new paths
      mysql-test/t/mysqlbinlog_base64.test:
        Use new paths
      mysql-test/t/mysqldump.test:
        Use new paths
      mysql-test/t/outfile.test:
        Use new paths
      mysql-test/t/partition.test:
        Use new paths
      mysql-test/t/partition_error.test:
        Use new paths
      mysql-test/t/partition_federated.test:
        Use new paths
      mysql-test/t/partition_mgm.test:
        Use new paths
      mysql-test/t/partition_not_windows.test:
        Use new paths
      mysql-test/t/partition_symlink.test:
        Use new paths
      mysql-test/t/query_cache.test:
        Use new paths
      mysql-test/t/repair.test:
        Use new paths
      mysql-test/t/show_check.test:
        Use new paths
      mysql-test/t/sp-destruct.test:
        Use new paths
      mysql-test/t/sp.test:
        Use new paths
      mysql-test/t/symlink.test:
        Use new paths
      mysql-test/t/system_mysql_db.test:
        Use new paths
      mysql-test/t/system_mysql_db_fix30020.test:
        Use new paths
      mysql-test/t/system_mysql_db_fix40123.test:
        Use new paths
      mysql-test/t/system_mysql_db_fix50030.test:
        Use new paths
      mysql-test/t/system_mysql_db_fix50117.test:
        Use new paths
      mysql-test/t/trigger-compat.test:
        Use new paths
      mysql-test/t/trigger-grant.test:
        Use new paths
      mysql-test/t/trigger.test:
        Use new paths
      mysql-test/t/type_blob.test:
        Use new paths
      mysql-test/t/type_varchar.test:
        Use new paths
      mysql-test/t/upgrade.test:
        Use new paths
      mysql-test/t/user_var-binlog.test:
        Use new paths
      mysql-test/t/varbinary.test:
        Use new paths
      mysql-test/t/view.test:
        Use new paths
      mysql-test/t/warnings.test:
        Use new paths
      mysql-test/lib/My/ConfigFactory.pm:
        Initial version
      mysql-test/lib/My/Find.pm:
        Initial version
      mysql-test/lib/My/SafeProcess.pm:
        Initial version
      mysql-test/std_data/ndb_config_config.ini:
        Add "old" style config.ini for ndb
      mysql-test/suite/federated/disabled.def:
        Move disabled federated to it's new suite
      mysql-test/suite/federated/my.cnf:
        Add config for federated
      mysql-test/suite/ndb/my.cnf:
        Add config for ndb
      mysql-test/suite/rpl/my.cnf:
        Add config for rpl
      mysql-test/suite/rpl/rpl_1slave_base.cnf:
        Add base config for rpl
      mysql-test/suite/rpl/t/rpl_000015-master.opt:
        Use new paths
      mysql-test/suite/rpl_ndb/my.cnf:
        Add config for rpl_ndb
      mysql-test/lib/My/File/Path.pm:
        Initial version
      mysql-test/lib/My/SafeProcess/Base.pm:
        Initial version
      mysql-test/lib/My/SafeProcess/safe_kill_win.cc:
        Initial version
      mysql-test/lib/My/SafeProcess/safe_process.pl:
        Initial version
      mysql-test/lib/My/SafeProcess/safe_process_win.cc:
        Initial version
      mysql-test/lib/t/Base.t:
        Initial version
      mysql-test/lib/t/Find.t:
        Initial version
      mysql-test/lib/t/SafeProcess.t:
        Initial version
      mysql-test/lib/t/SafeProcessStress.pl:
        Initial version
      mysql-test/lib/t/copytree.t:
        Initial version
      mysql-test/lib/t/dummyd.pl:
        Initial version
      mysql-test/lib/t/rmtree.t:
        Initial version
      mysql-test/lib/t/testMyConfig.t:
        Initial version
      mysql-test/lib/t/testMyConfigFactory.t:
        Initial version
      mysql-test/lib/t/test_child.pl:
        Initial version
      mysql-test/include/default_my.cnf:
        Add default config file used when no suite specific file is found
      mysql-test/include/default_mysqld.cnf:
        New BitKeeper file ``mysql-test/include/default_mysqld.cnf''
      mysql-test/include/default_ndbd.cnf:
        Add default settings for all ndbds
      mysql-test/lib/mtr_settings.pl:
        Initial version
      1370500c
  14. 17 Oct, 2007 2 commits
    • unknown's avatar
      Fix for BUG#24923: Functions with ENUM issues. · 9e1604a4
      unknown authored
      The problem was that the RETURNS column in the mysql.proc was of
      CHAR(64). That was not enough for storing long-named datatypes.
      
      The fix is to change CHAR(64) to LONGBLOB, and to throw warnings
      at the time a stored routine is created if some data is truncated
      during writing into mysql.proc.
      
      
      mysql-test/r/sp.result:
        Update test result.
      mysql-test/t/sp.test:
        Add a test case for BUG#24923.
      scripts/mysql_system_tables.sql:
        Change the data type of column 'returns' from char(64) to longblob.
      scripts/mysql_system_tables_fix.sql:
        Change the data type of column 'returns' from char(64) to longblob.
      sql/sp.cc:
        Produce warnings if any data was truncated during writing
        into mysql.proc.
      sql/sp.h:
        Add new error code.
      sql/share/errmsg.txt:
        Add new error message.
      sql/sql_parse.cc:
        Hande
      9e1604a4
    • unknown's avatar
      Manual merge of 5.0-runtime to 5.1-runtime · 84984f91
      unknown authored
      mysql-test/r/sp-error.result:
        Manual merge
      mysql-test/r/sp.result:
        Manual merge
      mysql-test/r/udf.result:
        Manual merge
      mysql-test/t/sp.test:
        Manual merge
      mysql-test/t/udf.test:
        Manual merge
      sql/item_create.cc:
        Manual merge
      sql/sp_head.cc:
        Manual merge
      sql/sql_yacc.yy:
        Manual merge
      84984f91
  15. 16 Oct, 2007 1 commit
    • unknown's avatar
      Implementing code review comments · 28ef3b2a
      unknown authored
      mysql-test/r/sp.result:
        Added tests for coverage
      mysql-test/t/sp.test:
        Added tests for coverage
      sql/sql_udf.cc:
        Code cleanup
      28ef3b2a
  16. 10 Oct, 2007 1 commit
  17. 05 Oct, 2007 1 commit
    • unknown's avatar
      Fix for BUG#20550: Stored function: wrong RETURN type metadata · c215e78d
      unknown authored
      when used in a VIEW.
      
      The problem was that wrong function (create_tmp_from_item())
      was used to create a temporary field for Item_func_sp.
      
      The fix is to use create_tmp_from_field().
      
      
      mysql-test/r/sp.result:
        Update result file.
      mysql-test/t/sp.test:
        Add a test case for BUG#20550.
      sql/item_func.h:
        Add a getter for Item_func_sp::sp_result_field.
      sql/sql_select.cc:
        Use create_tmp_from_field() to create a temporary field
        for Item_func_sp.
      c215e78d
  18. 04 Oct, 2007 2 commits
    • unknown's avatar
      apply patch for bug#31035 to 5.0.50 release clone · 9e89a087
      unknown authored
      mysql-test/r/sp.result:
        apply patch for bug#31035
      mysql-test/t/sp.test:
        apply patch for bug#31035
      sql/item_func.cc:
        apply patch for bug#31035
      9e89a087
    • unknown's avatar
      Fix for BUG#31035: select from function, group by result crasher. · 4f14c13a
      unknown authored
      This actually, fix for the patch for bug-27354. The problem with
      the patch was that Item_func_sp::used_tables() was updated, but
      Item_func_sp::const_item() was not. So, for Item_func_sp, we had
      the following inconsistency:
        - used_tables() returned RAND_TABLE, which means that the item
          can produce "random" results;
        - but const_item() returned TRUE, which means that the item is
          a constant one.
      
      The fix is to change Item_func_sp::const_item() behaviour: it must
      return TRUE (an item is a constant one) only if a stored function
      is deterministic and each of its arguments (if any) is a constant
      item.
      
      
      mysql-test/r/sp.result:
        Update result file.
      mysql-test/t/sp.test:
        Add test cases for BUG-31035, BUG-31191, BUG-31226
      sql/item_func.cc:
        Make Item::const_item() be consistent with Item::used_tables().
      4f14c13a
  19. 05 Sep, 2007 1 commit
    • unknown's avatar
      The test case for Bug#29936 doesn't work with the embedded version, · bfbe3350
      unknown authored
      the first query is not running while we are doing wait queries on
      a second connection.
      
      
      mysql-test/r/sp.result:
        Remove test case result for Bug#29936, moving to sp_notembedded.result
      mysql-test/r/sp_notembedded.result:
        Test case result for Bug#29936, moved from sp.result
      mysql-test/t/sp.test:
        Remove test case for Bug#29936, moving to sp_notembedded.test
      mysql-test/t/sp_notembedded.test:
        Test case result for Bug#29936, moved from sp.test
      bfbe3350
  20. 03 Sep, 2007 1 commit
    • unknown's avatar
      Bug#29408 Cannot find view in columns table if the selection contains a function · ee0b7d89
      unknown authored
      Use view db name as thread default database, in order to ensure
      that the view is parsed and prepared correctly.
      
      
      mysql-test/r/sp.result:
        test result
      mysql-test/t/sp.test:
        test case
      sql/sql_parse.cc:
        copy thd->db_length to table_list->db_length
      sql/sql_view.cc:
        Use view db name as thread default database, in order to ensure
        that the view is parsed and prepared correctly.
      ee0b7d89
  21. 29 Aug, 2007 2 commits
  22. 24 Aug, 2007 1 commit
  23. 03 Aug, 2007 1 commit
  24. 29 Jul, 2007 1 commit
    • unknown's avatar
      Fixed bug #30120. · 33fc4ad4
      unknown authored
      SP with local variables with non-ASCII names crashed the server.
      
      The server replaces SP local variable names with NAME_CONST calls
      when putting statements into the binary log. It used UTF8-encoded
      item names as variable names for the replacement inside NAME_CONST
      calls. However, statement string may be encoded by any
      known character set by the SET NAMES statement.
      The server used byte length of UTF8-encoded names to increment
      the position in the query string that led to array index overrun.
      
      
      sql/item.cc:
        Fixed bug #30120.
        The Item_splocal class constructor has been modified to
        accept new parameter `len_in_q': the byte length of
        variable name in the query string.
      sql/item.h:
        Fixed bug #30120.
        The Item_splocal class has been modified to keep new
        field `len_in_query': the byte length of variable name in
        the query string.
      sql/sp_head.cc:
        Fixed bug #30120.
        The subst_spvars function has been modified to increment
        position in the query string by the lengths of not
        encoded variable names instead of byte length of names
        encoded to UTF-8.
      sql/sql_yacc.yy:
        Fixed bug #30120.
        The simple_ident rule action has been modified to
        pass the byte length of the local variable name token
        to the Item_splocal object constructor.
      mysql-test/t/sp.test:
        Updated test case for bug #30120.
      mysql-test/r/sp.result:
        Updated test case for bug #30120.
      33fc4ad4
  25. 28 Jul, 2007 1 commit
    • unknown's avatar
      Fixed bug #29834. · 90c5621d
      unknown authored
      Using view columns by their names during an execution of
      a prepared SELECT statement or a SELECT statement inside
      a SP caused a memory leak.
      
      
      sql/sql_base.cc:
        Fixed bug #29834.
        The find_field_in_view function has been modified to
        use the execution memory root for the Item_direct_view_ref
        objects allocation at non-first executions of
        a PS/SP instead of the statement memory.
      mysql-test/t/sp.test:
        Updated test case for bug #29834.
      mysql-test/r/sp.result:
        Updated test case for bug #29834.
      90c5621d
  26. 21 Jul, 2007 1 commit
    • unknown's avatar
      sp.test, sp.result: · 9cad4f08
      unknown authored
        Additional test case fix for bug #29338.
      
      
      mysql-test/t/sp.test:
        Additional test case fix for bug #29338.
      mysql-test/r/sp.result:
        Additional test case fix for bug #29338.
      9cad4f08
  27. 19 Jul, 2007 1 commit
    • unknown's avatar
      Fixed bug #29338. · 36f1e484
      unknown authored
      Optimization of queries with DETERMINISTIC functions in the
      WHERE clause was not effective: sequential scan was always
      used.
      Now a SF with the DETERMINISTIC flags is treated as constant
      when it's arguments are constants (or a SF doesn't has arguments).
      
      
      sql/item_func.h:
        Fixed bug #29338.
        The Item_func_sp::used_tables has been removed
        (virtual Item_func::used_tables function is enough).
        The virtual Item_func_sp::update_used_tables function
        has been added.
      sql/item_func.cc:
        Fixed bug #29338.
        The Item_func_sp::update_used_tables and the
        Item_func_sp::fix_field functions have been modified
        to take into account the DETERMINISTIC flag of SF definition.
      mysql-test/r/sp.result:
        Updated test case for bug #29338.
      mysql-test/t/sp.test:
        Updated test case for bug #29338.
      36f1e484
  28. 05 Jul, 2007 1 commit
    • unknown's avatar
      A fix and a test case for Bug#29050 Creation of a legal stored procedure · e8966dee
      unknown authored
      fails if a database is not selected prior.
      
      The problem manifested itself when a user tried to
      create a routine that had non-fully-qualified identifiers in its bodies
      and there was no current database selected.
      
      This is a regression introduced by the fix for Bug 19022:
      
      The patch for Bug 19022 changes the code to always produce a warning
      if we can't resolve the current database in the parser. 
      In this case this was not necessary, since even though the produced
      parsed tree was incorrect, we never re-use sphead
      that was obtained at first parsing of CREATE PROCEDURE.
      The sphead that is anyhow used is always obtained through db_load_routine,
      and there we change the current database to sphead->m_db before
      calling yyparse.
      
      The idea of the fix is to resolve the current database directly using 
      lex->sphead->m_db member when parsing a stored routine body, when
      such is present.
      
      This patch removes the need to reset the current database
      when loading a trigger or routine definition into SP cache.
      The redundant code will be removed in 5.1.
      
      
      mysql-test/r/sp.result:
        Update test results (Bug#29050)
      mysql-test/r/trigger.result:
        Update results.
      mysql-test/t/sp.test:
        Add a test case for Bug#29050
      mysql-test/t/trigger.test:
        Fix wrong behavior covered with tests.
      sql/sql_lex.cc:
        Implement st_lex::copy_db_to().
      sql/sql_lex.h:
        Declare st_lex::copy_db_to().
      sql/sql_parse.cc:
        Use st_lex::copy_db_to() in add_table_to_list, rather than
        THD::copy_db_to(). The former will use the database of the sphead,
        if we're parsing a stored routine, not the default database in
        THD. The default database is needed to initialize tables->db
        when the database part was not explicitly specified in the identifier.
      sql/sql_yacc.yy:
        Use st_lex::copy_db_to() in the parser, rather than
        THD::copy_db_to(). The former will use the database of the sphead,
        if we're parsing a stored routine, not the default database in
        THD.
      e8966dee
  29. 04 Jul, 2007 1 commit
    • unknown's avatar
      A fix and a teset case for Bug#28551 The warning · b1ec3b53
      unknown authored
      'No database selected' is reported when calling stored procedures
      
      Remove the offending warning introduced by the fix for Bug
      25082
      This minimal patch relies on the intrinsic knowledge of the fact that
      mysql_change_db is never called with 'force_switch' set to TRUE
      when such a warning may be needed:
       * every stored routine belongs to a database (unlike, e.g., a 
      user defined function, which does not), so if we're activating the
      database of a stored routine, it can never be NULL.
      Therefore, this branch is never called for activation.
       * if we're restoring the 'old' current database after routine
      execution is complete, we should not issue a warning, since it's OK to 
      call a routine without having previously selected the current database.
      
      TODO: 'force_switch' is an ambiguous flag, since we do not actually
      have to 'force' the switch in case of stored routines at all.
      When we activate the routine's database, we should perform
      all the checks as in case of 'use db', and so we already do (in this
      case 'force_switch' is unused).
      When we load a routine into cache, we should not use mysql_change_db
      at all, since there it's enough to call thd->reset_db(). We
      do it this way for triggers, but code for routines is different (wrongly). 
      
      TODO: bugs are lurking in replication, since it bypasses mysql_change_db
      and calls thd->[re_]set_db to set the current database.
      The latter does not change thd->db_charset, thd->sctx->db_access
      and thd->variables.collation_database (and this may have nasty side
      effects).
      
      These todo items are to be addressed in a separate patch, if at all.
      
      
      mysql-test/r/sp.result:
        Update results (Bug#28551)
      mysql-test/t/sp.test:
        Add a test case (Bug#28551)
      sql/sp.cc:
        Remove an obsolete comment.
        Replace a check with an assert.
      sql/sql_db.cc:
        Remove the offending warning introduced by the fix for Bug
        25082
        This minimal patch relies on the intrinsic knowledge of the fact that
        mysql_change_db is never called with 'force_switch' set to TRUE
        when such a warning may be needed.
      b1ec3b53
  30. 28 Jun, 2007 1 commit
    • unknown's avatar
      Patch for the following bugs: · 405f82d3
      unknown authored
        - BUG#11986: Stored routines and triggers can fail if the code
          has a non-ascii symbol
        - BUG#16291: mysqldump corrupts string-constants with non-ascii-chars
        - BUG#19443: INFORMATION_SCHEMA does not support charsets properly
        - BUG#21249: Character set of SP-var can be ignored
        - BUG#25212: Character set of string constant is ignored (stored routines)
        - BUG#25221: Character set of string constant is ignored (triggers)
      
      There were a few general problems that caused these bugs:
      1. Character set information of the original (definition) query for views,
         triggers, stored routines and events was lost.
      2. mysqldump output query in client character set, which can be
         inappropriate to encode definition-query.
      3. INFORMATION_SCHEMA used strings with mixed encodings to display object
         definition;
      
      1. No query-definition-character set.
      
      In order to compile query into execution code, some extra data (such as
      environment variables or the database character set) is used. The problem
      here was that this context was not preserved. So, on the next load it can
      differ from the original one, thus the result will be different.
      
      The context contains the following data:
        - client character set;
        - connection collation (character set and collation);
        - collation of the owner database;
      
      The fix is to store this context and use it each time we parse (compile)
      and execute the object (stored routine, trigger, ...).
      
      2. Wrong mysqldump-output.
      
      The original query can contain several encodings (by means of character set
      introducers). The problem here was that we tried to convert original query
      to the mysqldump-client character set.
      
      Moreover, we stored queries in different character sets for different
      objects (views, for one, used UTF8, triggers used original character set).
      
      The solution is
        - to store definition queries in the original character set;
        - to change SHOW CREATE statement to output definition query in the
          binary character set (i.e. without any conversion);
        - introduce SHOW CREATE TRIGGER statement;
        - to dump special statements to switch the context to the original one
          before dumping and restore it afterwards.
      
      Note, in order to preserve the database collation at the creation time,
      additional ALTER DATABASE might be used (to temporary switch the database
      collation back to the original value). In this case, ALTER DATABASE
      privilege will be required. This is a backward-incompatible change.
      
      3. INFORMATION_SCHEMA showed non-UTF8 strings
      
      The fix is to generate UTF8-query during the parsing, store it in the object
      and show it in the INFORMATION_SCHEMA.
      
      Basically, the idea is to create a copy of the original query convert it to
      UTF8. Character set introducers are removed and all text literals are
      converted to UTF8.
      
      This UTF8 query is intended to provide user-readable output. It must not be
      used to recreate the object.  Specialized SHOW CREATE statements should be
      used for this.
      
      The reason for this limitation is the following: the original query can
      contain symbols from several character sets (by means of character set
      introducers).
      
      Example:
      
        - original query:
          CREATE VIEW v1 AS SELECT _cp1251 'Hello' AS c1;
      
        - UTF8 query (for INFORMATION_SCHEMA):
          CREATE VIEW v1 AS SELECT 'Hello' AS c1;
      
      
      client/mysqldump.c:
        Set original character set and collation before dumping definition query.
      include/my_sys.h:
        Move out-parameter to the end of list.
      mysql-test/lib/mtr_report.pl:
        Ignore server-warnings during the test case.
      mysql-test/r/create.result:
        Update result file.
      mysql-test/r/ctype_cp932_binlog_stm.result:
        Update result file.
      mysql-test/r/events.result:
        Update result file.
      mysql-test/r/events_bugs.result:
        Update result file.
      mysql-test/r/events_grant.result:
        Update result file.
      mysql-test/r/func_in.result:
        Update result file.
      mysql-test/r/gis.result:
        Update result file.
      mysql-test/r/grant.result:
        Update result file.
      mysql-test/r/information_schema.result:
        Update result file.
      mysql-test/r/information_schema_db.result:
        Update result file.
      mysql-test/r/lowercase_view.result:
        Update result file.
      mysql-test/r/mysqldump.result:
        Update result file.
      mysql-test/r/ndb_sp.result:
        Update result file.
      mysql-test/r/ps.result:
        Update result file.
      mysql-test/r/rpl_replicate_do.result:
        Update result file.
      mysql-test/r/rpl_sp.result:
        Update result file.
      mysql-test/r/rpl_trigger.result:
        Update result file.
      mysql-test/r/rpl_view.result:
        Update result file.
      mysql-test/r/show_check.result:
        Update result file.
      mysql-test/r/skip_grants.result:
        Update result file.
      mysql-test/r/sp-destruct.result:
        Update result file.
      mysql-test/r/sp-error.result:
        Update result file.
      mysql-test/r/sp-security.result:
        Update result file.
      mysql-test/r/sp.result:
        Update result file.
      mysql-test/r/sql_mode.result:
        Update result file.
      mysql-test/r/system_mysql_db.result:
        Update result file.
      mysql-test/r/temp_table.result:
        Update result file.
      mysql-test/r/trigger-compat.result:
        Update result file.
      mysql-test/r/trigger-grant.result:
        Update result file.
      mysql-test/r/trigger.result:
        Update result file.
      mysql-test/r/view.result:
        Update result file.
      mysql-test/r/view_grant.result:
        Update result file.
      mysql-test/t/events.test:
        Update test case (new columns added).
      mysql-test/t/information_schema.test:
        Update test case (new columns added).
      mysql-test/t/show_check.test:
        Test case for SHOW CREATE TRIGGER in prepared statements and
        stored routines.
      mysql-test/t/sp-destruct.test:
        Update test case (new columns added).
      mysql-test/t/sp.test:
        Update test case (new columns added).
      mysql-test/t/view.test:
        Update test.
      mysys/charset.c:
        Move out-parameter to the end of list.
      scripts/mysql_system_tables.sql:
        Add new columns to mysql.proc and mysql.event.
      scripts/mysql_system_tables_fix.sql:
        Add new columns to mysql.proc and mysql.event.
      sql/event_data_objects.cc:
        Support new attributes for events.
      sql/event_data_objects.h:
        Support new attributes for events.
      sql/event_db_repository.cc:
        Support new attributes for events.
      sql/event_db_repository.h:
        Support new attributes for events.
      sql/events.cc:
        Add new columns to SHOW CREATE event resultset.
      sql/mysql_priv.h:
        1. Introduce Object_creation_ctx;
        2. Introduce SHOW CREATE TRIGGER;
        3. Introduce auxilary functions.
      sql/sp.cc:
        Add support for new store routines attributes.
      sql/sp_head.cc:
        Add support for new store routines attributes.
      sql/sp_head.h:
        Add support for new store routines attributes.
      sql/sql_lex.cc:
        Generate UTF8-body on parsing/lexing.
      sql/sql_lex.h:
        1. Generate UTF8-body on parsing/lexing.
        2. Introduce SHOW CREATE TRIGGER.
      sql/sql_parse.cc:
        Introduce SHOW CREATE TRIGGER.
      sql/sql_partition.cc:
        Update parse_sql().
      sql/sql_prepare.cc:
        Update parse_sql().
      sql/sql_show.cc:
        Support new attributes for views
      sql/sql_trigger.cc:
        Support new attributes for views
      sql/sql_trigger.h:
        Support new attributes for views
      sql/sql_view.cc:
        Support new attributes for views
      sql/sql_yacc.yy:
        1. Add SHOW CREATE TRIGGER statement.
        2. Generate UTF8-body for views, stored routines, triggers and events.
      sql/table.cc:
        Introduce Object_creation_ctx.
      sql/table.h:
        Introduce Object_creation_ctx.
      sql/share/errmsg.txt:
        Add new errors.
      mysql-test/include/ddl_i18n.check_events.inc:
        Aux file for test suite.
      mysql-test/include/ddl_i18n.check_sp.inc:
        Aux file for test suite.
      mysql-test/include/ddl_i18n.check_triggers.inc:
        Aux file for test suite.
      mysql-test/include/ddl_i18n.check_views.inc:
        Aux file for test suite.
      mysql-test/include/have_cp1251.inc:
        Aux file for test suite.
      mysql-test/include/have_cp866.inc:
        Aux file for test suite.
      mysql-test/include/have_koi8r.inc:
        Aux file for test suite.
      mysql-test/include/have_utf8.inc:
        Aux file for test suite.
      mysql-test/r/ddl_i18n_koi8r.result:
        Result file.
      mysql-test/r/ddl_i18n_utf8.result:
        Result file.
      mysql-test/r/have_cp1251.require:
        Aux file for test suite.
      mysql-test/r/have_cp866.require:
        Aux file for test suite.
      mysql-test/r/have_koi8r.require:
        Aux file for test suite.
      mysql-test/r/have_utf8.require:
        Aux file for test suite.
      mysql-test/t/ddl_i18n_koi8r.test:
        Complete koi8r test case for the CS patch.
      mysql-test/t/ddl_i18n_utf8.test:
        Complete utf8 test case for the CS patch.
      405f82d3
  31. 27 Jun, 2007 1 commit
    • unknown's avatar
      Change "exec rm" to "remove_file" · 61c423a2
      unknown authored
      mysql-test/t/sp.test:
        Change "exec rm" to "remove_file"
        Change two "remove file if exists" to "check that file not exist"
      61c423a2
  32. 12 Jun, 2007 1 commit
    • unknown's avatar
      Bug#25411 (trigger code truncated), PART II · f09496c8
      unknown authored
      Bug 28127 (Some valid identifiers names are not parsed correctly)
      Bug 26302 (MySQL server cuts off trailing "*/" from comments in SP/func)
      
      This patch is the second part of a major cleanup, required to fix
      Bug 25411 (trigger code truncated).
      
      The root cause of the issue stems from the function skip_rear_comments,
      which was a work around to remove "extra" "*/" characters from the query
      text, when parsing a query and reusing the text fragments to represent a
      view, trigger, function or stored procedure.
      The reason for this work around is that "special comments",
      like /*!50002 XXX */, were not parsed properly, so that a query like:
        AAA /*!50002 BBB */ CCC
      would be seen by the parser as "AAA BBB */ CCC" when the current version
      is greater or equal to 5.0.2
      
      The root cause of this stems from how special comments are parsed.
      Special comments are really out-of-bound text that appear inside a query,
      that affects how the parser behave.
      In nature, /*!50002 XXX */ in MySQL is similar to the C concept
      of preprocessing :
        #if VERSION >= 50002
        XXX
        #endif
      
      Depending on the current VERSION of the server, either the special comment
      should be expanded or it should be ignored, but in all cases the "text" of
      the query should be re-written to strip the "/*!50002" and "*/" markers,
      which does not belong to the SQL language itself.
      
      Prior to this fix, these markers would leak into :
      - the storage format for VIEW,
      - the storage format for FUNCTION,
      - the storage format for FUNCTION parameters, in mysql.proc (param_list),
      - the storage format for PROCEDURE,
      - the storage format for PROCEDURE parameters, in mysql.proc (param_list),
      - the storage format for TRIGGER,
      - the binary log used for replication.
      
      In all cases, not only this cause format corruption, but also provide a vector
      for dormant security issues, by allowing to tunnel code that will be activated
      after an upgrade.
      
      The proper solution is to deal with special comments strictly during parsing,
      when accepting a query from the outside world.
      Once a query is parsed and an object is created with a persistant
      representation, this object should not arbitrarily mutate after an upgrade.
      In short, special comments are a useful but limited feature for MYSQLdump,
      when used at an *interface* level to facilitate import/export,
      but bloating the server *internal* storage format is *not* the proper way
      to deal with configuration management of the user logic.
      
      With this fix:
      - the Lex_input_stream class now acts as a comment pre-processor,
      and either expands or ignore special comments on the fly.
      - MYSQLlex and sql_yacc.yy have been cleaned up to strictly use the
      public interface of Lex_input_stream. In particular, how the input stream
      accepts or rejects a character is private to Lex_input_stream, and the
      internal buffer pointers of that class are strictly private, and should not
      be tempered with during parsing.
      
      This caused many changes mostly in sql_lex.cc.
      
      During the code cleanup in case MY_LEX_NUMBER_IDENT,
      Bug 28127 (Some valid identifiers names are not parsed correctly)
      was found and fixed.
      
      By parsing special comments properly, and removing the function
      'skip_rear_comments' [sic],
      Bug 26302 (MySQL server cuts off trailing "*/" from comments in SP/func)
      has been fixed as well.
      
      
      sql/event_data_objects.cc:
        Cleanup of the code that extracts the query text
      sql/sp.cc:
        Cleanup of the code that extracts the query text
      sql/sp_head.cc:
        Cleanup of the code that extracts the query text
      sql/sql_trigger.cc:
        Cleanup of the code that extracts the query text
      sql/sql_view.cc:
        Cleanup of the code that extracts the query text
      mysql-test/r/comments.result:
        Bug#25411 (trigger code truncated)
      mysql-test/r/sp.result:
        Bug#25411 (trigger code truncated)
        Bug 26302 (MySQL server cuts off trailing "*/" from comments in SP/func)
      mysql-test/r/trigger.result:
        Bug#25411 (trigger code truncated)
      mysql-test/r/varbinary.result:
        Bug 28127 (Some valid identifiers names are not parsed correctly)
      mysql-test/t/comments.test:
        Bug#25411 (trigger code truncated)
      mysql-test/t/sp.test:
        Bug#25411 (trigger code truncated)
        Bug 26302 (MySQL server cuts off trailing "*/" from comments in SP/func)
      mysql-test/t/trigger.test:
        Bug#25411 (trigger code truncated)
      mysql-test/t/varbinary.test:
        Bug 28127 (Some valid identifiers names are not parsed correctly)
      sql/sql_lex.cc:
        Implemented comment pre-processing in Lex_input_stream,
        major cleanup of the lex/yacc code to not use Lex_input_stream private members.
      sql/sql_lex.h:
        Implemented comment pre-processing in Lex_input_stream,
        major cleanup of the lex/yacc code to not use Lex_input_stream private members.
      sql/sql_yacc.yy:
        post merge fix : view_check_options must be parsed before signaling the end of the query
      f09496c8
  33. 06 Jun, 2007 1 commit
    • unknown's avatar
      Bug #28842 Different 'duplicate key' error code between 5.0 and 5.1 · 0f6047e4
      unknown authored
        The patch for WL 1563 added a new duplicate key error message so that the
        key name could be provided instead of the key number. But the error code
        for the new message was used even though that did not need to change.
      
        This could cause unnecessary problems for applications that used the old
        ER_DUP_ENTRY error code to detect duplicate key errors.
      
      
      mysql-test/t/auto_increment.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/create.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/create_select_tmp.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ctype_ucs2_def.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ctype_utf8.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/delayed.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/heap.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/heap_btree.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/heap_hash.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/innodb.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/insert_select.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/insert_update.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/join_outer.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/key.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/merge.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/myisam.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ndb_basic.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ndb_charset.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ndb_index_unique.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ndb_insert.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ndb_replace.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ndb_update.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/replace.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/rpl_err_ignoredtable.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/rpl_ndb_do_table.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/rpl_row_create_table.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/rpl_sp.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/show_check.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/sp-error.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/sp.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/sp_trans.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/sp_trans_log.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/temp_table.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/type_binary.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/type_bit.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/type_bit_innodb.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/type_blob.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/type_varchar.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/r/create.result:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/r/rpl_sp.result:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/r/sp.result:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/include/mix1.inc:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/include/mix2.inc:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/include/ps_modify.inc:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/include/query_cache.inc:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/include/varchar.inc:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/binlog_tests/insert_select-binlog.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_auto_increment.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_foreign_key.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_insert_delayed.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_insert_id.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_insert_id_pk.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_loaddata.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_row_basic.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_trig004.test:
        Update ER_DUP_ENTRY-related error message values
      sql/handler.cc:
        Restore use of ER_DUP_ENTRY error code even when ER_DUP_ENTRY_WITH_KEY_NAME
        error message is being used. (Bug #28842)
      0f6047e4
  34. 01 Jun, 2007 1 commit
    • unknown's avatar
      Fix some mysqltest warnings. · d8cd88cd
      unknown authored
      mysql-test/r/sp.result:
        Update results.
      mysql-test/t/mysql.test:
        Fix a typo.
      mysql-test/t/mysqltest.test:
        Fix a typo.
      mysql-test/t/order_by.test:
        Fix a typo.
      mysql-test/t/row.test:
        Remove an unsupported command.
      mysql-test/t/sp.test:
        Fix a typo.
      mysql-test/t/subselect3.test:
        Fix  mysqltest warnings - now it warns when sees some suspicious --
        comment
      d8cd88cd
  35. 29 May, 2007 1 commit
    • unknown's avatar
      Bug #28605: SHOW CREATE VIEW with views using stored_procedures no · 9e06efb4
      unknown authored
       longer showing SP names.
      SHOW CREATE VIEW uses Item::print() methods to reconstruct the 
      statement text from the parse tree.
      The print() method for stored procedure calls needs allocate 
      space to print the function's quoted name.
      It was incorrectly calculating the length of the buffer needed 
      (was too short).
      Fixed to reflect the actual space needed.
      
      
      mysql-test/r/sp.result:
        Bug #28605: test case
      mysql-test/t/sp.test:
        Bug #28605: test case
      sql/item_func.cc:
        Bug #28605: fixed the string length calculation
      9e06efb4
  36. 28 May, 2007 1 commit
    • unknown's avatar
      5.1 version of a fix and test cases for bugs: · b11f1d0c
      unknown authored
      Bug#4968 ""Stored procedure crash if cursor opened on altered table"
      Bug#6895 "Prepared Statements: ALTER TABLE DROP COLUMN does nothing"
      Bug#19182 "CREATE TABLE bar (m INT) SELECT n FROM foo; doesn't work from 
      stored procedure."
      Bug#19733 "Repeated alter, or repeated create/drop, fails"
      Bug#22060 "ALTER TABLE x AUTO_INCREMENT=y in SP crashes server"
      Bug#24879 "Prepared Statements: CREATE TABLE (UTF8 KEY) produces a 
      growing key length" (this bug is not fixed in 5.0)
      
      Re-execution of CREATE DATABASE, CREATE TABLE and ALTER TABLE 
      statements in stored routines or as prepared statements caused
      incorrect results (and crashes in versions prior to 5.0.25).
      
      In 5.1 the problem occured only for CREATE DATABASE, CREATE TABLE
      SELECT and CREATE TABLE with INDEX/DATA DIRECTOY options).
        
      The problem of bugs 4968, 19733, 19282 and 6895 was that functions
      mysql_prepare_table, mysql_create_table and mysql_alter_table are not
      re-execution friendly: during their operation they modify contents
      of LEX (members create_info, alter_info, key_list, create_list),
      thus making the LEX unusable for the next execution.
      In particular, these functions removed processed columns and keys from
      create_list, key_list and drop_list. Search the code in sql_table.cc 
      for drop_it.remove() and similar patterns to find evidence.
        
      The fix is to supply to these functions a usable copy of each of the
      above structures at every re-execution of an SQL statement. 
        
      To simplify memory management, LEX::key_list and LEX::create_list
      were added to LEX::alter_info, a fresh copy of which is created for
      every execution.
        
      The problem of crashing bug 22060 stemmed from the fact that the above 
      metnioned functions were not only modifying HA_CREATE_INFO structure 
      in LEX, but also were changing it to point to areas in volatile memory
      of the execution memory root.
         
      The patch solves this problem by creating and using an on-stack
      copy of HA_CREATE_INFO in mysql_execute_command.
      
      Additionally, this patch splits the part of mysql_alter_table
      that analizes and rewrites information from the parser into
      a separate function - mysql_prepare_alter_table, in analogy with
      mysql_prepare_table, which is renamed to mysql_prepare_create_table.
      
      
      mysql-test/r/ps.result:
        Update test results (Bug#19182, Bug#22060, Bug#4968, Bug#6895)
      mysql-test/r/sp.result:
        Update results (Bug#19733)
      mysql-test/t/ps.test:
        Add test cases for Bug#19182, Bug#22060, Bug#4968, Bug#6895
      mysql-test/t/sp.test:
        Add a test case for Bug#19733
      sql/field.h:
        Implement a deep copy constructor for create_field
      sql/mysql_priv.h:
        LEX::key_list and LEX::create_list were moved to LEX::alter_info.
        Update declarations to use LEX::alter_info instead of these two
        members.
        Remove declarations of mysql_add_index, mysql_drop_index.
      sql/sql_class.cc:
        Implement deep copy constructors.
      sql/sql_class.h:
        Implement (almost) deep copy constructors for key_part_spec, 
        Alter_drop, Alter_column, Key, foreign_key.
        Replace pair<columns, keys> with an instance of Alter_info in
        select_create constructor. We create a new copy of Alter_info
        each time we re-execute SELECT .. CREATE prepared statement.
      sql/sql_insert.cc:
        Adjust to a new signature of create_table_from_items.
      sql/sql_lex.cc:
        Implement Alter_info::Alter_info that would make a "deep" copy
        of all definition lists (keys, columns).
        Move is_partition_management() from sql_partition.cc (feature-based
        file division is evil).
      sql/sql_lex.h:
        Move key_list and create_list to class Alter_info. Implement
        Alter_info::Alter_info that can be used with PS and SP.
        Get rid of Alter_info::clear() which was an attempt to save on
        matches and always use Alter_info::reset().
        Implement an auxiliary Alter_info::init_for_create_from_alter()
        which is used in mysql_alter_table.
      sql/sql_list.cc:
          Implement a copy constructor of class List that makes a deep copy
          of all list nodes.
      sql/sql_list.h:
        Implement a way to make a deep copy of all list nodes.
      sql/sql_parse.cc:
        Adjust to new signatures of mysql_create_table, mysql_alter_table,
        select_create. Functions mysql_create_index and mysql_drop_index has
        become identical after initialization of alter_info was moved to the 
        parser, and were merged. Flag enable_slow_log was not updated for 
        SQLCOM_DROP_INDEX, which was a bug.
        Just like CREATE INDEX, DROP INDEX is currently done via complete 
        table rebuild and is rightfully a slow administrative statement.
      sql/sql_partition.cc:
        Move is_partition_management() to sql_lex.cc
        Adjust code to the new Alter_info.
      sql/sql_table.cc:
        Adjust mysql_alter_table, mysql_recreate_table, mysql_create_table,
        mysql_prepare_table to new signatures.
        Rename mysql_prepare_table to mysql_prepare_create_table. Make
        sure it follows the convention and returns FALSE for success and
        TRUE for error.
        Move parts of mysql_alter_table to mysql_prepare_alter_table.
        Move the first invokation of mysql_prepare_table from mysql_alter_table
        to compare_tables, as it was needed only for the purpose
        of correct comparison.
        Since now Alter_info itself is created in the runtime mem root,
        adjust mysql_prepare_table to always allocate memory in the
        runtime memory root.
        Remove dead code.
      sql/sql_yacc.yy:
        LEX::key_list and LEX::create_list moved to class Alter_info
      b11f1d0c