An error occurred fetching the project authors.
  1. 08 Jun, 2007 1 commit
    • unknown's avatar
      Bug #28984: crasher on connect with out of range password length in \ · c1585aea
      unknown authored
      	protocol
      
      One could send a malformed packet that caused the server to SEGV.  In 
      recent versions of the password protocol, the client tells the server 
      what length the ciphertext is (almost always 20).  If that length was
      large enough to overflow a signed char, then the number would jump to 
      very large after being casted to unsigned int.
      
      Instead, cast the *passwd char to uchar. 
      
      
      
      sql/sql_parse.cc:
        Cast *passwd to get rid of the sign, so that sign extension doesn't
        cause the sequence 125, 126, 127, 4294967169, 4294967170.
      c1585aea
  2. 17 Apr, 2007 1 commit
    • unknown's avatar
      Fix for bug #27515: DROP previlege is not required anymore for RENAME TABLE · 50e15840
      unknown authored
      Added missed DROP privilege check on the original table for RENAME TABLE command.
      
      
      mysql-test/r/grant.result:
        Fix for bug #27515: DROP previlege is not required anymore for RENAME TABLE
          - test result.
      mysql-test/t/grant.test:
        Fix for bug #27515: DROP previlege is not required anymore for RENAME TABLE
          - test case.
      sql/sql_parse.cc:
        Fix for bug #27515: DROP previlege is not required anymore for RENAME TABLE
          - added DROP privilege check on the original table for RENAME TABLE command.
      50e15840
  3. 13 Mar, 2007 1 commit
    • unknown's avatar
      BUG#26881 - Large MERGE tables report incorrect specification when no · 969b7165
      unknown authored
                  differences in tables
      Certain merge tables were wrongly reported as having incorrect definition:
      - Some fields that are 1 byte long (e.g. TINYINT, CHAR(1)), might
        be internally casted (in certain cases) to a different type on a
        storage engine layer. (affects 4.1 and up)
      - If tables in a merge (and a MERGE table itself) had short VARCHAR column (less
        than 4 bytes) and at least one (but not all) tables were ALTER'ed (even to an
        identical table: ALTER TABLE xxx ENGINE=yyy), table definitions went ouf of
        sync. (affects 4.1 only)
      
      This is fixed by relaxing a check for underlying conformance and setting
      field type to FIELD_TYPE_STRING in case varchar is shorter than 4
      when a table is created.
      
      
      myisam/mi_create.c:
        Added a comment.
      mysql-test/r/merge.result:
        A test case for bug#26881.
      mysql-test/t/merge.test:
        A test case for bug#26881.
      sql/ha_myisam.cc:
        Relaxed some checks performed by check_definition():
        As comparing of fulltext keys (and key segments) is not yet implemented,
        only return an error in case one of keys is fulltext and other is not.
        Otherwise, if both keys are fulltext, accept them as is.
        
        As comparing of spatial keys (and key segments) is not yet implemented,
        only return an error in case one of keys is spatial and other is not.
        Otherwise, if both keys are spatial, accept them as is.
        
        A workaround to handle situation when field is casted from FIELD_SKIP_ZERO
        to FIELD_NORMAL. This could happen only in case field length is 1 and row
        format is fixed.
      sql/sql_parse.cc:
        When a table that has varchar field shorter than 4 is created, field type is
        set to FIELD_TYPE_VAR_STRING. Later, when a table is modified using alter
        table, field type is changed to FIELD_TYPE_STRING (see Field_string::type).
        That means HA_OPTION_PACK_RECORD flag might be lost and thus null_bit might
        be shifted by alter table, in other words alter table doesn't create 100%
        equal table definition.
        
        This is usually not a problem, since when a table is created/altered,
        definition on a storage engine layer is based on one that is passed from
        sql layer. But it is a problem for merge engine - null_bit is shifted when
        a table (merge or underlying) is altered.
        
        Set field type to FIELD_TYPE_STRING in case FIELD_TYPE_VAR_STRING is shorter
        than 4 when a table is created as it is done in Field::type.
      969b7165
  4. 19 Feb, 2007 1 commit
    • unknown's avatar
      Bug#23240 --init-file statements with NOW() reports '1970-01-01 11:00:00'as the date time · 114e5b8d
      unknown authored
      - Starting time of a query sent by file bootstrapping wasn't initialized
        and starting time defaulted to 0. This later used value by the Now-
        item and is translated to 1970-01-01 11:00:00.
      - marking the time with thd->set_time() before the call to 
        mysql_parse resolves this issue.
      
      
      mysql-test/r/init_file.result:
        Appended test case
      mysql-test/std_data/init_file.dat:
        Appended test case
      mysql-test/t/init_file.test:
        Appended test case
      114e5b8d
  5. 29 Jan, 2007 1 commit
    • unknown's avatar
      Bug#22943 syscall pruning in libmysql · a195ad5e
      unknown authored
       - Set the timeout values only where needed
      
      
      sql/mysql_priv.h:
        Add new functions for setting read and write timeout on "net"
      sql/mysqld.cc:
        - Move the setting of "read_timeout" to the value of "connect_timeout" to
          just before 'check_connection' which is the function where we want
          to use the different timeout
        - With the new functions to set timeout on "net", there is no need to
          specifically set the default wait_timeout on windows.
      sql/net_serv.cc:
        Add new functions for setting read and write timeout of "net, when
        server is compiled not to use alarms it will set the write/read timeout
        directly on connection using 'vio_timeout'(using setsockopt if socket)
      sql/repl_failsafe.cc:
        Put unused code within "#if NOT_USED"
      sql/set_var.cc:
        Use 'net_set_*_timeout' when adjusting timeout value
        on the current connection
      sql/slave.cc:
        The read timeout used when connecting to master server is set
        using 'mysql_options' in 'connect_to_master' function
      sql/sql_parse.cc:
        - Set read and write timeout values to "connect_timeout" during
        connect phase
        - Use "read_timeout" value during sslaccept phase, since this is during
        connect phase it implies "connect-timeout"
        - Set read and write timeout value back to default after connect phase
        - Set "read_timeout" to "wait_timeout" while waiting for client.
      sql/sql_repl.cc:
        Set "read_timeout" to "wait_timeout" while ask other mysqld to send file
      sql-common/client.c:
        Call 'vio_timeout' to set up the read and write timeout's for the
        newly created connection. It only need to be done once at connect time.
      vio/vio.c:
        Use 'vio_timeout' for setting timeout also on an SSL connection
        since they both use sockets
      vio/viossl.c:
        Remove 'vio_ssl_timeout' function
      a195ad5e
  6. 17 Jan, 2007 1 commit
    • unknown's avatar
      Fix a failure of lowercase_tables2 test on powermacg5, introduced · f7e41bae
      unknown authored
      by the patch for Bug#4968
      
      
      sql/sql_parse.cc:
        Fix lowercase_tables2 test failure on powermacg5: table_case_name()
        function needed create_info.alias if lowercase_table_names=2, which
        was not set for the stack copy of HA_CREATE_INFO. Move the
        update of create_info.alias from create_table_precheck to 
        mysql_execute_command, so that it is done on the right object.
      f7e41bae
  7. 15 Jan, 2007 1 commit
    • unknown's avatar
      A post-merge fix. · 15c83425
      unknown authored
      sql/sql_parse.cc:
        A post-merge fix (broken alter_table.test): restore Svoj's fix
        for Bug#23404 lost during merge.
      15c83425
  8. 07 Dec, 2006 3 commits
    • unknown's avatar
      A fix and test cases for · e47ded81
      unknown authored
      Bug#4968 "Stored procedure crash if cursor opened on altered table"
      Bug#19733 "Repeated alter, or repeated create/drop, fails"
      Bug#19182 "CREATE TABLE bar (m INT) SELECT n FROM foo; doesn't work from 
      stored procedure."
      Bug#6895 "Prepared Statements: ALTER TABLE DROP COLUMN does nothing"
      Bug#22060 "ALTER TABLE x AUTO_INCREMENT=y in SP crashes server"
      
      Test cases for bugs 4968, 19733, 6895 will be added 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 were not
      re-execution friendly: during their operation they used to 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 (note that code in 5.1 already creates and
      uses a copy of this structure in mysql_create_table()/alter_table(),
      but this approach didn't work well for CREATE TABLE SELECT statement).
      
      
      mysql-test/r/ps.result:
        Update test results (Bug#19182, Bug#22060)
      mysql-test/t/ps.test:
        Add a test case for Bug#19182, Bug#22060 (4.1-only parts)
      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.
      sql/sql_class.h:
        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).
      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.
      sql/sql_list.h:
        Implement a copy constructor of class List that makes 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 is a bug. Just like CREATE INDEX, DROP INDEX
        is currently done via complete table rebuild and is rightfully a slow
        administrative statement.
      sql/sql_show.cc:
        Adjust mysqld_show_create_db to a new signature.
      sql/sql_table.cc:
        Adjust mysql_alter_table, mysql_recreate_table, mysql_create_table,
        mysql_prepare_table to new signatures.
      sql/sql_yacc.yy:
        LEX::key_list and LEX::create_list moved to class Alter_info
      e47ded81
    • unknown's avatar
      Bug#17498 failed to put data file in custom directory use "data directory" option · 1267a7fb
      unknown authored
      - Using DATA/INDEX DIRECTORY option on Windows put data/index file into
        default directory because the OS doesn't support readlink().
      - The procedure for changing data/index file directory is 
        different under Windows.
      - With this fix we report a warning if DATA/INDEX option is used,
        but OS doesn't support readlink().
      
      
      mysql-test/r/windows.result:
        - updated result file.
      mysql-test/t/windows.test:
        - Added test case to verify we get warnings if we specify DATA/INDEX
          DIRECTORY on a platform which doesn't support readlink().
      sql/sql_parse.cc:
        - Added warnings if DATA/INDEX DIRECTORY option is used but not supported
          by the target platform.
      1267a7fb
    • unknown's avatar
      BUG#23404 - ROW_FORMAT=FIXED option is lost is an index is added to the · 1cb8e4e9
      unknown authored
                  table
      
      ROW_FORMAT option is lost during CREATE/DROP INDEX.
      
      This fix forces CREATE/DROP INDEX to retain ROW_FORMAT by instructing
      mysql_alter_table() that ROW_FORMAT is not used during creating/dropping
      indexes.
      
      
      mysql-test/r/alter_table.result:
        A test case for bug#23404.
      mysql-test/t/alter_table.test:
        A test case for bug#23404.
      sql/sql_parse.cc:
        CREATE/DROP INDEX must not change ROW_FORMAT. Setting create_info.row_type
        to ROW_TYPE_NOT_USED informs mysql_alter_table that ROW_FORMAT was not
        used during alteration, and thus must be retained.
      1cb8e4e9
  9. 05 Dec, 2006 1 commit
    • unknown's avatar
      Bug#22645 LC_TIME_NAMES: Statement not replicated · 4474cc84
      unknown authored
      Problem: replication of LC_TIME_NAMES didn't work.
      Thus, INSERTS or UPDATES using date_format() always
      worked with en_US on the slave side.
      Fix: adding ONE_SHOT implementation for LC_TIME_NAMES.
      
      
      mysql-test/r/variables.result:
        Adding various tests with LC_TIME_NAMES and
        string and numeric constants and expressions.
      mysql-test/t/variables.test:
        Adding various tests with LC_TIME_NAMES and
        string and numeric constants and expressions.
      sql/log.cc:
        Adding ONE_SHOT trick for lc_time_names.
      sql/mysql_priv.h:
        Adding new member "number" - for unique locale IDs.
        Adding prototype for my_locale_by_number().
      sql/set_var.cc:
        Modifying lc_time_names variable to understand both:
        - string valyes (using locale name)
        - number values (using locale IDs)
      sql/set_var.h:
        - Marking lc_time_names as ONE_SHOT capable.
        - Marking lc_time_names as INT_RESULT compatible.
      sql/sql_locale.cc:
        - adding local IDs
        - better layout for locale data declarations
          (splitting long lines into short ones)
        - adding DBUG_ASSERT into my_locale_by_name()
          and moving this function towards the end of file -
          after "my_locales" declaration
        - adding my_locale_by_number() implementation
      sql/sql_parse.cc:
        Adding initialization of lc_time_names
        to its default value (en_US)
      mysql-test/r/rpl_locale.result:
        Adding test case
      mysql-test/t/rpl_locale.test:
        Adding test case
      4474cc84
  10. 06 Oct, 2006 1 commit
    • unknown's avatar
      BUG#21726: Incorrect result with multiple invocations of LAST_INSERT_ID. · f603c1cc
      unknown authored
      Note: bug#21726 does not directly apply to 4.1, as it doesn't have stored
      procedures.  However, 4.1 had some bugs that were fixed in 5.0 by the
      patch for bug#21726, and this patch is a backport of those fixes.
      Namely, in 4.1 it fixes:
      
        - LAST_INSERT_ID(expr) didn't return value of expr (4.1 specific).
      
        - LAST_INSERT_ID() could return the value generated by current
          statement if the call happens after the generation, like in
      
            CREATE TABLE t1 (i INT AUTO_INCREMENT PRIMARY KEY, j INT);
            INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID());
      
        - Redundant binary log LAST_INSERT_ID_EVENTs could be generated.
      
      
      mysql-test/r/rpl_insert_id.result:
        Add result for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID.
      mysql-test/t/rpl_insert_id.test:
        Add test case for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID.
      sql/item_func.cc:
        Add implementation of Item_func_last_insert_id::fix_fields(), where we
        set THD::last_insert_id_used when statement calls LAST_INSERT_ID().
        In Item_func_last_insert_id::val_int(), return THD::current_insert_id
        if called like LAST_INSERT_ID(), otherwise return value of argument if
        called like LAST_INSERT_ID(expr).
      sql/item_func.h:
        Add declaration of Item_func_last_insert_id::fix_fields().
      sql/log_event.cc:
        Do not set THD::last_insert_id_used on LAST_INSERT_ID_EVENT.  Though we
        know the statement will call LAST_INSERT_ID(), it wasn't called yet.
      sql/set_var.cc:
        In sys_var_last_insert_id::value_ptr(), set THD::last_insert_id_used,
        and return THD::current_insert_id for @@LAST_INSERT_ID.
      sql/sql_class.h:
        Update comments.
        Remove THD::insert_id(), as it has lost its purpose now.
      sql/sql_insert.cc:
        Now it is OK to read THD::last_insert_id directly.
      sql/sql_load.cc:
        Now it is OK to read THD::last_insert_id directly.
      sql/sql_parse.cc:
        In mysql_execute_command(), remember THD::last_insert_id (first
        generated value of the previous statement) in THD::current_insert_id,
        which then will be returned for LAST_INSERT_ID() and @@LAST_INSERT_ID.
      sql/sql_select.cc:
        If "IS NULL" is replaced with "= <LAST_INSERT_ID>", use right value,
        which is THD::current_insert_id, and also set THD::last_insert_id_used
        to issue binary log LAST_INSERT_ID_EVENT.
      sql/sql_update.cc:
        Now it is OK to read THD::last_insert_id directly.
      tests/mysql_client_test.c:
        Add test case for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID.
      f603c1cc
  11. 27 Sep, 2006 1 commit
  12. 04 Sep, 2006 1 commit
    • unknown's avatar
      Bug #21392: multi-table delete with alias table name fails with · 1431966d
      unknown authored
                  1003: Incorrect table name
      in multi-table DELETE the set of tables to delete from actually 
      references then tables in the other list, e.g:
      DELETE alias_of_t1 FROM t1 alias_of_t1 WHERE ....
      is a valid statement.
      So we must turn off table name syntactical validity check for alias_of_t1 
      because it's not a table name (even if it looks like one).
      In order to do that we add a special flag (TL_OPTION_ALIAS) to 
      disable the name checking for the aliases in multi-table DELETE.
      
      
      mysql-test/r/delete.result:
        Bug #21392: multi-table delete with alias table name fails with
                    1003: Incorrect table name
         - test case
      mysql-test/t/delete.test:
        Bug #21392: multi-table delete with alias table name fails with
                    1003: Incorrect table name
         - test case
      sql/mysql_priv.h:
        Bug #21392: multi-table delete with alias table name fails with
                    1003: Incorrect table name
         - add a special flag to disable the name checking for the aliases
           in multi-table DELETE
      sql/sql_parse.cc:
        Bug #21392: multi-table delete with alias table name fails with
                    1003: Incorrect table name
         - add a special flag to disable the name checking for the aliases
           in multi-table DELETE
      sql/sql_yacc.yy:
        Bug #21392: multi-table delete with alias table name fails with
                    1003: Incorrect table name
         - add a special flag to disable the name checking for the aliases
           in multi-table DELETE
      1431966d
  13. 30 Aug, 2006 1 commit
    • unknown's avatar
      Bug#20393 User name truncation in mysql client · ddb9f866
      unknown authored
      Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
      
      
      include/mysql_com.h:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        added new constants NAME_BYTE_LEN, USERNAME_BYTE_LENGTH, SYSTEM_CHARSET_MBMAXLEN
      mysql-test/r/ctype_utf8.result:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        test case
      mysql-test/t/ctype_utf8.test:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        test case
      sql-common/client.c:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        increased buffers for user name & db
      sql/sql_acl.cc:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        check that user name is not longer than USERNAME_LENGTH symbols
      sql/sql_parse.cc:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        increased buffers for user name & db
      sql/table.cc:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        check that db name is not longer than NAME_LEN symbols
      ddb9f866
  14. 20 Jul, 2006 1 commit
    • unknown's avatar
      BUG#20975: Incorrect query result for NOT (subquery): · 68698c04
      unknown authored
        Add implementations of Item_func_{nop,not}_all::neg_transformer
      
      
      mysql-test/r/subselect.result:
        BUG#20975: testcase
      mysql-test/t/subselect.test:
        BUG#20975: testcase
      sql/mysql_priv.h:
        Make chooser_compare_func_creator visible in item.h
      68698c04
  15. 27 Jun, 2006 1 commit
    • unknown's avatar
      BUG#1662 - ALTER TABLE LIKE ignores DATA/INDEX DIRECTPORY · f4a07612
      unknown authored
      Produce a warning if DATA/INDEX DIRECTORY is specified in
      ALTER TABLE statement.
      
      Ignoring of these options is documented in the symbolic links
      section of the manual.
      
      
      mysql-test/r/symlink.result:
        Modified test result according to fix for BUG#1662.
      sql/sql_parse.cc:
        Produce a warning if DATA/INDEX DIRECTORY is specified in
        ALTER TABLE statement.
      f4a07612
  16. 19 Jun, 2006 1 commit
    • unknown's avatar
      bug #20318 (ctype_ucs2_def test fails with embedded) · 8b6c2d31
      unknown authored
      there was two problems about charsets in embedded server
      1. mysys/charset.c - defined there default_charset_info variable is
      modified by both server and client code (particularly when
      --default-charset option is handled)
      In embedded server we get two codelines modifying one variable.
      I created separate default_client_charset_info for client code
      
      2. mysql->charset and mysql->options.charset initialization isn't
      properly done for embedded server - necessary calls added
      
      
      include/sql_common.h:
        client charset info default declared
      libmysqld/lib_sql.cc:
        thd_init_client_charset calls added
      libmysqld/libmysqld.c:
        check_embedded_connection moved to client.c to avoid code duplication
      sql-common/client.c:
        charset initialization moved to mysql_init_character_set to
        be used in embedded server
      sql/sql_parse.cc:
        thread client charset initialization moved to thd_init_client_charset
        to avoid code duplication
      8b6c2d31
  17. 01 Jun, 2006 1 commit
    • unknown's avatar
      bug #16017 (memory leaks in embedded server) · eadcf200
      unknown authored
      There actually was 3 different problems -
      hash_user_connections wasn't cleaned
      one strdupped database name wasn't freed
      and stmt->mem_root wasn't cleaned as it was
      replased with mysql->field_alloc for result
      For the last one - i made the library using stmt's
      fields to store result if it's the case.
      
      
      include/mysql.h:
        statement pointer added to the advanced_command to be checked in
        embedded server
      include/sql_common.h:
        stmt added to the cli_advanced_command interface
      libmysql/libmysql.c:
        stmt pointer now sent to advanced_command
      libmysqld/embedded_priv.h:
        it's enough to send database name to check_embedded_connection
      libmysqld/lib_sql.cc:
        Now we store result directly in the MYSQL_STMT structure to
        avoid extra copying
      libmysqld/libmysqld.c:
        it's enough to only send database pointer to check_embedded_connection
      sql-common/client.c:
        stmt fake attribute added to cli_advanced_command
      sql/sql_parse.cc:
        hash_user_connections isn't used if no access checks compiled
      eadcf200
  18. 28 May, 2006 1 commit
    • unknown's avatar
      Fixed bug#19225: unchecked error results in server crash · 2264b644
      unknown authored
      In multi-table delete a table for delete can't be used for selecting in
      subselects. Appropriate error was raised but wasn't checked which leads to a
      crash at the execution phase.
      
      The mysql_execute_command() now checks for errors before executing select
      for multi-delete.
      
      
      mysql-test/t/multi_update.test:
        Added test case for bug#19225: unchecked error results in server crash
      mysql-test/r/multi_update.result:
        Added test case for bug#19225: unchecked error results in server crash
      sql/sql_parse.cc:
        Fixed bug#19225: unchecked error results in server crash
        The mysql_execute_command() now checks for errors before executing select for multi-delete.
      2264b644
  19. 26 Apr, 2006 1 commit
  20. 25 Apr, 2006 2 commits
  21. 21 Apr, 2006 1 commit
    • unknown's avatar
      Fixed bug #18767. · 9225a51c
      unknown authored
      The bug caused wrong result sets for union constructs of the form
      (SELECT ... ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2.
      For such queries order lists were concatenated and limit clause was
      completely neglected. 
      
      
      mysql-test/r/order_by.result:
        Added a test case for bug #18767.
      mysql-test/t/order_by.test:
        Added a test case for bug #18767.
      sql/sql_lex.h:
        Fixed bug #18767.
        Placed the code the created a fake SELECT_LEX into a separate function.
      sql/sql_parse.cc:
        Fixed bug #18767.
        Placed the code the created a fake SELECT_LEX into a separate function.
      sql/sql_select.cc:
        Fixed bug #18767.
        Changed the condition on which a SELECT is treated as part of a UNION.
        The SELECT in 
        (SELECT ... ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2 
        now is handled in the same way as the first SELECT in a UNION
        sequence.
      sql/sql_union.cc:
        Fixed bug #18767.
        Changed the condition at which a SELECT is treated as part of a UNION.
        The SELECT in 
        (SELECT ... ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2 
        now is handled in the same way as the first SELECT in a UNION
        sequence.
      sql/sql_yacc.yy:
        Fixed bug #18767.
        Changed the condition at which a SELECT is treated as part of a UNION.
        The SELECT in 
        (SELECT ... ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2 
        now is handled in the same way as the first SELECT in a UNION
        sequence. In the same way is handled the SELECT in
        (SELECT ... LIMIT n) ORDER BY order list.
        Yet if there is neither ORDER BY nor LIMIT in the single-select
        union construct
        (SELECT ...) ORDER BY order_list
        then it is still handled as simple select with an order clause.
      9225a51c
  22. 21 Feb, 2006 1 commit
    • unknown's avatar
      A fix and a test case for Bug#13134 "Length of VARCHAR() utf8 · 9cf3f255
      unknown authored
      column is increasing when table is recreated with PS/SP":
      make use of create_field::char_length more consistent in the code.
      Reinit create_field::length from create_field::char_length
      for every execution of a prepared statement (actually fixes the 
      bug).
      
      
      mysql-test/r/ps.result:
        Test results fixed (Bug#13134)
      mysql-test/t/ps.test:
        A test case for Bug#13134 "Length of VARCHAR() utf8 column is 
        increasing when table is recreated with PS/SP"
      sql/field.cc:
        Move initialization of create_field::char_length to the constructor
        of create_field.
      sql/field.h:
        Rename chars_length to char_length (to be consistent with
        how this term is used throughout the rest of the code).
      sql/sql_parse.cc:
        Initialize char_length in add_field_to_list. This function
        effectively works as another create_field constructor.
      sql/sql_table.cc:
        Reinit length from char_length for every field in 
        mysql_prepare_table. This is not needed if we're executing
        a statement for the first time, however, at subsequent executions
        length contains the number of bytes, not characters (as it's expected 
        to).
      9cf3f255
  23. 26 Jan, 2006 1 commit
    • unknown's avatar
      BUG#15699 importing the fix from 5.0 · 956a5b6d
      unknown authored
      sql/sql_parse.cc:
        BUG#15699,16487 merge of the fix made in 5.0
      mysql-test/r/rpl_multi_update4.result:
        New BitKeeper file ``mysql-test/r/rpl_multi_update4.result''
      mysql-test/t/rpl_multi_update4-slave.opt:
        New BitKeeper file ``mysql-test/t/rpl_multi_update4-slave.opt''
      mysql-test/t/rpl_multi_update4.test:
        New BitKeeper file ``mysql-test/t/rpl_multi_update4.test''
      mysql-test/r/rpl_ignore_table.result:
        New BitKeeper file ``mysql-test/r/rpl_ignore_table.result''
      956a5b6d
  24. 07 Dec, 2005 1 commit
    • unknown's avatar
      BUG#5390 - problems with merge tables · f6cac54b
      unknown authored
      Problem #1: INSERT...SELECT, Version for 4.1.
      INSERT ... SELECT with the same table on both sides (hidden
      below a MERGE table) does now work by buffering the select result.
      The duplicate detection works now after open_and_lock_tables() 
      on the locks.
      I did not find a test case that failed without the change in
      sql_update.cc. I made the change anyway as it should in theory
      fix a possible MERGE table problem with multi-table update.
      
      
      libmysqld/ha_blackhole.cc:
        BUG#5390 - problems with merge tables
        No idea, how the symlink change made it into my patch.
      mysql-test/r/create.result:
        BUG#5390 - problems with merge tables
        Removed a duplicate test.
      mysql-test/r/merge.result:
        BUG#5390 - problems with merge tables
        Problem #1: INSERT...SELECT, Version for 4.1.
        Added test results.
      mysql-test/t/create.test:
        BUG#5390 - problems with merge tables
        Removed a duplicate test.
      mysql-test/t/merge.test:
        BUG#5390 - problems with merge tables
        Problem #1: INSERT...SELECT, Version for 4.1.
        Added tests.
      sql/lock.cc:
        BUG#5390 - problems with merge tables
        Problem #1: INSERT...SELECT, Version for 4.1.
        Added a new function to find a duplicate lock in a list of tables.
      sql/mysql_priv.h:
        BUG#5390 - problems with merge tables
        Problem #1: INSERT...SELECT, Version for 4.1.
        Added a declaration for the new function.
      sql/sql_parse.cc:
        BUG#5390 - problems with merge tables
        Problem #1: INSERT...SELECT, Version for 4.1.
        Changed the duplicate tables detection for INSERT ... SELECT
        to use the new function, which does also work for MERGE tables.
      sql/sql_update.cc:
        BUG#5390 - problems with merge tables
        Problem #1: INSERT...SELECT, Version for 4.1.
        Changed the duplicate tables detection for UPDATE
        to use the new function, which does also work for MERGE tables.
      f6cac54b
  25. 04 Dec, 2005 1 commit
    • unknown's avatar
      A set of Netware related patches. · 60f2e7a9
      unknown authored
      client/mysql.cc:
        Fixed option name.
      client/mysqladmin.c:
        Fixed option name.
      client/mysqlbinlog.cc:
        Fixed option name.
      client/mysqlcheck.c:
        Fixed option name.
      client/mysqldump.c:
        Fixed option name.
      client/mysqlimport.c:
        Fixed option name.
      client/mysqlshow.c:
        Fixed option name.
      isam/isamchk.c:
        Fixed option name.
      myisam/myisamchk.c:
        Fixed option name.
      myisam/myisampack.c:
        Fixed option name.
      sql/sql_parse.cc:
        Fix problem with kill connection on NetWare.
      60f2e7a9
  26. 29 Nov, 2005 1 commit
    • unknown's avatar
      BUG#5390 - problems with merge tables · 38b7ede9
      unknown authored
      Problem #1: INSERT...SELECT
      INSERT ... SELECT with the same table on both sides (hidden
      below a MERGE table) does now work by buffering the select result.
      The duplicate detection works now after open_and_lock_tables() 
      on the locks.
      I did not find a test case that failed without the change in
      sql_update.cc. I made the change anyway as it should in theory
      fix a possible MERGE table problem with multi-table update.
      
      
      mysql-test/r/create.result:
        BUG#5390 - problems with merge tables
        Removed a duplicate test.
      mysql-test/r/merge.result:
        BUG#5390 - problems with merge tables
        Problem #1: INSERT...SELECT
        Added test results.
      mysql-test/t/create.test:
        BUG#5390 - problems with merge tables
        Removed a duplicate test.
      mysql-test/t/merge.test:
        BUG#5390 - problems with merge tables
        Problem #1: INSERT...SELECT
        Added tests.
      sql/lock.cc:
        BUG#5390 - problems with merge tables
        Problem #1: INSERT...SELECT
        Added a new function to find a duplicate lock in a list of tables.
      sql/mysql_priv.h:
        BUG#5390 - problems with merge tables
        Problem #1: INSERT...SELECT
        Added a declaration for the new function.
      sql/sql_parse.cc:
        BUG#5390 - problems with merge tables
        Problem #1: INSERT...SELECT
        Changed the duplicate tables detection for INSERT ... SELECT
        to use the new function, which does also work for MERGE tables.
      sql/sql_update.cc:
        BUG#5390 - problems with merge tables
        Changed the duplicate tables detection for UPDATE
        to use the new function, which does also work for MERGE tables.
      38b7ede9
  27. 10 Oct, 2005 2 commits
    • unknown's avatar
      Added missing HAVE_REPLICATION define · a043cc53
      unknown authored
      a043cc53
    • unknown's avatar
      BUG#12618: Removing fake locking · 5d2bc925
      unknown authored
      mysql-test/r/rpl_multi_update3.result:
        New test case
      mysql-test/t/rpl_multi_update3.test:
        New test case
      sql/sql_parse.cc:
        Removed fake locking
        Changed so that filtering is done later for multi-update
        Removed redundant code
      sql/sql_update.cc:
        Moved call to sql_parse.cc
      5d2bc925
  28. 08 Oct, 2005 1 commit
  29. 19 Sep, 2005 1 commit
    • unknown's avatar
      ndb - imlp. show engine ndb status; · b390a1a4
      unknown authored
        that dump free list allocation per connection
      
      
      sql/ha_ndbcluster.cc:
        imlp. show engine ndb status;
          that dump free list allocation per connection
      sql/ha_ndbcluster.h:
        imlp. show engine ndb status;
          that dump free list allocation per connection
      sql/mysqld.cc:
        imlp. show engine ndb status;
          that dump free list allocation per connection
      sql/sql_lex.h:
        imlp. show engine ndb status;
          that dump free list allocation per connection
      sql/sql_parse.cc:
        imlp. show engine ndb status;
          that dump free list allocation per connection
      sql/sql_yacc.yy:
        imlp. show engine ndb status;
          that dump free list allocation per connection
      b390a1a4
  30. 14 Sep, 2005 1 commit
    • unknown's avatar
      fix for BUG#11139 (multi-delete with alias breaking replication if table rules are · f89424f8
      unknown authored
       present): the problem originally was that the tables in auxilliary_tables did not have 
      the correct real_name, which caused problems in the second call to tables_ok(). 
      The fix corrects the real_name problem, and also sets the updating flag properly, 
      which makes the second call to tables_ok() unnecessary.
      
      
      mysql-test/r/rpl_multi_delete2.result:
        updates for for BUG#11139
      mysql-test/t/rpl_multi_delete2-slave.opt:
        updates for for BUG#11139
      mysql-test/t/rpl_multi_delete2.test:
        updates for for BUG#11139
      sql/mysql_priv.h:
        fix for BUG#11139 (multi-delete with alias breaking replication if table rules are
         present)
      sql/slave.cc:
        fix for BUG#11139 (multi-delete with alias breaking replication if table rules are
         present)
      sql/sql_parse.cc:
        fix for BUG#11139 (multi-delete with alias breaking replication if table rules are
         present)
      sql/sql_yacc.yy:
        fix for BUG#11139 (multi-delete with alias breaking replication if table rules are
         present)
      f89424f8
  31. 10 Sep, 2005 1 commit
  32. 05 Sep, 2005 1 commit
    • unknown's avatar
      mysqld.cc, mysql_priv.h, sql_parse.cc: · 50c44c9b
      unknown authored
        bug#9948
        changed client-charset behavior in 4.1.x libmysql, which issue BC prob
        after review fixes
      
      
      sql/mysql_priv.h:
        bug#9948
        changed client-charset behavior in 4.1.x libmysql, which issue BC prob
        after review fixes
      sql/mysqld.cc:
        bug#9948
        changed client-charset behavior in 4.1.x libmysql, which issue BC prob
        after review fixes
      50c44c9b
  33. 03 Sep, 2005 1 commit
    • unknown's avatar
      Backport of JimW's localhost patch to 4.1 tree. · a59a4441
      unknown authored
      Handle systems like default FC4 where 127.0.0.1 doesn't always map to 'localhost' first. 
      (Bug #11822)
      
      
      sql/hostname.cc:
        Short-circuit ip_to_hostname() lookup for INADDR_LOOPBACK to allways return 'localhost'.
      sql/sql_parse.cc:
        Push special handling of 127.0.0.1 into ip_to_hostname().
      a59a4441
  34. 01 Sep, 2005 2 commits
    • unknown's avatar
      BUG#12542: Added comments · f8aadb60
      unknown authored
      sql/log_event.cc:
        Added comments
      sql/sql_parse.cc:
        Added comments
      f8aadb60
    • unknown's avatar
      Fix for bug #12423 "Deadlock when doing FLUSH PRIVILEGES and GRANT in · 2a64e9a2
      unknown authored
      multi-threaded environment".
      
      To avoid deadlocks between several simultaneously run account management 
      commands (particularly between FLUSH PRIVILEGES/SET PASSWORD and GRANT
      commands) we should always take table and internal locks during their
      execution in the same order. In other words we should first open and lock
      privilege tables and only then obtain acl_cache::lock/LOCK_grant locks.
      
      
      mysql-test/r/grant2.result:
        Added test for bug #12423 "Deadlock when doing FLUSH PRIVILEGES and GRANT in 
        multi-threaded environment".
      mysql-test/t/grant2.test:
        Added test for bug #12423 "Deadlock when doing FLUSH PRIVILEGES and GRANT in 
        multi-threaded environment".
      sql/mysqld.cc:
        acl_init/grant_init() are now used only at server start up so they always
        allocate temporary THD object and don't need argument for passing pointer
        to it.
      sql/sql_acl.cc:
        To avoid deadlocks between several simultaneously run account management 
        commands (particularly between FLUSH PRIVILEGES/SET PASSWORD and GRANT
        commands) we should always take table and internal locks during their
        execution in the same order. In other words we should first open and lock
        privilege tables and only then obtain acl_cache::lock/LOCK_grant locks.
        
        Changed acl_reload()/grant_reload() and change_password()/update_user_table()
        in such way that they obey this principle. Now in acl_reload()/grant_reload()/
        change_password() we open and lock privilege tables, then obtain internal
        locks and then call acl_load()/grant_load()/update_user_table() functions to
        do actual loading or updating.
      sql/sql_acl.h:
        acl_init/grant_init() are now used only at server start up so they always
        allocate temporary THD object and don't need argument for passing pointer
        to it. acl_reload()/grant_reload() now are able to report about their
        success or failure through return value.
      sql/sql_parse.cc:
        If reload_acl_and_cache() is called from SIGHUP handler we have to
        allocate temporary THD for execution of acl_reload()/grant_reload().
      2a64e9a2
  35. 31 Aug, 2005 1 commit
    • unknown's avatar
      BUG#12542: All set statements should be executed by slave thd · 20108d6f
      unknown authored
      rpl_replicate_do.result:
        New test case
      sql_parse.cc:
        All SET statements should be executed by slave thd
      rpl_replicate_do.test:
        New test case
      
      
      mysql-test/t/rpl_replicate_do.test:
        Added test
      sql/sql_parse.cc:
        All SET commands should be executed by slave thd
      mysql-test/r/rpl_replicate_do.result:
        New test case
      20108d6f