1. 26 Mar, 2008 1 commit
  2. 21 Mar, 2008 2 commits
  3. 19 Mar, 2008 1 commit
    • unknown's avatar
      Bug #35178 INSERT_ID not written to binary log for inserts against BLACKHOLE backed tables · 5a6996db
      unknown authored
      binlogging of insert into a autoincrement blackhole table ignored
      an explicit set insert_id.
      
      Fixed with refining of the blackhole's insert method to call
      update_auto_increment() that prepares binlogging the insert query 
      with the preceeding set insert_id.
      
      Note, as the engine does not store any actual data one has to explicitly
      provide to the server with the value of the autoincrement column via
      set insert_id. Otherwise binlogging will happend with the default 
      set insert_id=1.
      
      
      mysql-test/r/blackhole.result:
        results changed
      mysql-test/t/blackhole.test:
        a regression test for the bug added
      sql/ha_blackhole.cc:
        blackhole's insert method is refined to call update_auto_increment()
        that prepares binlogging the insert query with the preceeding set insert_id.
      5a6996db
  4. 17 Mar, 2008 1 commit
    • unknown's avatar
      Bug #18199 PURGE BINARY LOGS fails silently with missing logs; · 6cf64b26
      unknown authored
      Bug #18453  Warning/error message if there is a mismatch between ...
       
      There were three problems:
       
       1. the reported lack of warnings for the BEFORE syntax of PURGE;
       2. the similar lack of warnings for the TO syntax;
       3. incompatible behaviour between the two in that the latter blanked out
          regardlessly of presence or lack the actual file corresponding to
          an index record; the former version gave up at the first mismatch.
      
      fixed with deploying the warning's generation and synronizing logics of 
      purge_logs() and purge_logs_before_date().
      my_stat() is called in either of two branches of purge_logs() (responsible
      for the TO syntax of PURGE) similarly to how it has behaved in the BEFORE syntax.
      If there is no actual binlog file, my_stat returns NULL and my_delete is
      not invoked.
      A critical error is reported to the user if a file from the index
      could not be retrieved info about or deleted with a system error code
      different than ENOENT.
      
      
      sql/log.cc:
        generating warning in two functions.
        refining logics to call my_stat() by purge_logs() as it happens
        in purge_logs_before_date().
        my_delete() is called only if my_stat() ensured existance of the file.
        A critical error is reported to the user if a file from the index
        could not be my_stat():ed or my_delete():d with an error different
        than ENOENT.
      sql/share/errmsg.txt:
        new error message
      mysql-test/include/show_binary_logs.inc:
        a new macro - shortcut of show binary logs
      mysql-test/r/binlog_index.result:
        new results
      mysql-test/t/binlog_index.test:
        a regression test for the bugs
      6cf64b26
  5. 14 Mar, 2008 2 commits
    • unknown's avatar
      Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.0 · 4097ee7f
      unknown authored
      into  dl145h.mysql.com:/data0/mkindahl/mysql-5.0-rpl
      
      
      4097ee7f
    • unknown's avatar
      BUG#33029 5.0 to 5.1 replication fails on dup key when inserting · d5f09a13
      unknown authored
      using a trig in SP
      
      For all 5.0 and up to 5.1.12 exclusive, when a stored routine or
      trigger caused an INSERT into an AUTO_INCREMENT column, the
      generated AUTO_INCREMENT value should not be written into the
      binary log, which means if a statement does not generate
      AUTO_INCREMENT value itself, there will be no Intvar event (SET
      INSERT_ID) associated with it even if one of the stored routine
      or trigger caused generation of such a value. And meanwhile, when
      executing a stored routine or trigger, it would ignore the
      INSERT_ID value even if there is a INSERT_ID value available set
      by a SET INSERT_ID statement.
      
      Starting from MySQL 5.1.12, the generated AUTO_INCREMENT value is
      written into the binary log, and the value will be used if
      available when executing the stored routine or trigger.
      
      Prior fix of this bug in MySQL 5.0 and prior MySQL 5.1.12
      (referenced as the buggy versions in the text below), when a
      statement that generates AUTO_INCREMENT value by the top
      statement was executed in the body of a SP, all statements in the
      SP after this statement would be treated as if they had generated
      AUTO_INCREMENT by the top statement.  When a statement that did
      not generate AUTO_INCREMENT value by the top statement but by a
      function/trigger called by it, an erroneous Intvar event would be
      associated with the statement, this erroneous INSERT_ID value
      wouldn't cause problem when replicating between masters and
      slaves of 5.0.x or prior 5.1.12, because the erroneous INSERT_ID
      value was not used when executing functions/triggers. But when
      replicating from buggy versions to 5.1.12 or newer, which will
      use the INSERT_ID value in functions/triggers, the erroneous
      value will be used, which would cause duplicate entry error and
      cause the slave to stop.
      
      The patch for 5.0 fixed it not to generate the erroneous Intvar
      event, another patch for 5.1 fixed it to ignore the SET INSERT_ID
      value when executing functions/triggers if it is replicating from
      a master of buggy versions.
      
      
      mysql-test/include/show_binlog_events.inc:
        add $binlog_start parameter to set the start position when show binlog events, if not set a default value will be used.
        
        mask out column 2(Pos), 4(Server_id), table_id, and file_id
      sql/sql_class.cc:
        Reset insert_id_used after each query in SP
      mysql-test/r/rpl_auto_increment_bug33029.result:
        Add test for bug33029, test if the master generate the erroneous event or not
      mysql-test/t/rpl_auto_increment_bug33029.test:
        Add test for bug33029, test if the master generate the erroneous event or not
      d5f09a13
  6. 13 Mar, 2008 1 commit
  7. 12 Mar, 2008 4 commits
  8. 11 Mar, 2008 1 commit
    • unknown's avatar
      BUG#31024: STOP SLAVE does not stop attempted connect()s · 1836625f
      unknown authored
      Problem: if the IO slave thread is attempting to connect,
      STOP SLAVE waits for the attempt to finish. 
      It may take a long time.
      Fix: don't wait, stop the slave immediately.
      
      
      sql/slave.cc:
        Send a SIGALRM signal to the slave thread when stopping it (using
        pthread_kill()). This breaks current socket(), connect(), poll() etc.
        calls, and makes the subsequent thd->awake() call effective.
        
        Also, move the definition of KICK_SLAVE to slave.cc.
      sql/sql_repl.h:
        Removed KICK_SLAVE and inlined it in slave.cc because:
         - it was only called once, so better to make it local to where it is used
         - it needed to include a preprocessor conditional in the middle
      1836625f
  9. 10 Mar, 2008 2 commits
  10. 08 Mar, 2008 1 commit
  11. 07 Mar, 2008 3 commits
    • unknown's avatar
      Bug #26622 MASTER_POS_WAIT does not work as documented · 0e679ab7
      unknown authored
      Affected tests fixing. After the fix for st_relay_log_info::wait_for_pos() that
      handles widely used select('master-bin.xxxx',pos) invoked by mysqltest
      there appeared to be four tests that either tried synchronizing when
      the slave was stopped or used incorrect synchronization method like
      to call `sync_with_master' from the current connection being to the
      master itself.
      
      Fixed with correcting the current connection or/and using the correct
      synchronization macro when possible.
      
      
      mysql-test/r/rpl_loaddata.result:
        results changed
      mysql-test/r/rpl_slave_status.result:
        results changed
      mysql-test/t/rpl_loaddata.test:
        fixing cleanup for two tests
      mysql-test/t/rpl_skip_error.test:
        fixing cleanup for two tests
      mysql-test/t/rpl_slave_status.test:
        fixing cleanup
      mysql-test/t/rpl_temporary.test:
        fixing synchronizations to use the intended correct macro.
      0e679ab7
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · a104844d
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B34909-5.0-opt
      
      
      a104844d
    • unknown's avatar
      Bug #34909: mysqldump returns a 0 status on error when using · 99c0b5e1
      unknown authored
        --master-data
      
      No error code was returned by mysqldump if it detects that binary
      logging is not enabled on the server.
      Fixed by returning error code.
      
      
      client/mysqldump.c:
        Bug #34909: add error code
      mysql-test/r/mysqldump-no-binlog.result:
        Bug #34909: test case
      mysql-test/t/mysqldump-no-binlog-master.opt:
        Bug #34909: test case
      mysql-test/t/mysqldump-no-binlog.test:
        Bug #34909: test case
      99c0b5e1
  12. 06 Mar, 2008 2 commits
    • unknown's avatar
      Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 8b5189c3
      unknown authored
      into  mysql.com:/home/psergey/mysql-5.0-bug34945
      
      
      8b5189c3
    • unknown's avatar
      Bug#26622 MASTER_POS_WAIT does not work as documented · 04c5af18
      unknown authored
      MASTER_POS_WAIT return values are different than expected when the server is not a slave. 
      It returns -1 instead of NULL.
      
      Fixed with correcting  st_relay_log_info::wait_for_pos() to return the proper
      value in the case of rli info is not inited.
      
      
      mysql-test/r/rpl_master_pos_wait.result:
        results changed
      mysql-test/t/rpl_master_pos_wait.test:
        the new test to check that select master_pos_wait() to a server does 
        not have master info returns NULL as specified.
      sql/slave.cc:
        changing the return value to correspond the specification.
      04c5af18
  13. 05 Mar, 2008 2 commits
    • unknown's avatar
      Fix for bug #34889: mysql_client_test::test_mysql_insert_id test fails · 0c1dd98e
      unknown authored
                          sporadically
      
      Under some circumstances, the mysql_insert_id() value after SELECT ...
      INSERT could return a wrong value. This could happen when the last
      SELECT ... INSERT did not involve an AUTO_INCREMENT column, but the
      value of mysql_insert_id() was changed by some previous statements.
      
      Fixed by checking the value of thd->insert_id_used in
      select_insert::send_eof() and returning 0 for mysql_insert_id() if it
      is not set.
      
      
      sql/sql_insert.cc:
        Do not return thd->last_insert_id unconditionally in
        select_insert::send_eof(). First check if thd->insert_id_used is
        non-zero, and return 0 otherwise.
      tests/mysql_client_test.c:
        Added a test case for bug #34889.
      0c1dd98e
    • unknown's avatar
      Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.0 · d20bfbbe
      unknown authored
      into  dl145h.mysql.com:/data0/mkindahl/mysql-5.0-rpl
      
      
      d20bfbbe
  14. 03 Mar, 2008 5 commits
    • unknown's avatar
      Raise the version number after cloning 5.0.58 · 4d09306d
      unknown authored
      4d09306d
    • unknown's avatar
      BUG#34945: "ref_or_null queries that are null_rejecting and have a null value crash mysql" · cd9f2d1c
      unknown authored
      - Apply Eric Bergen's patch: in join_read_always_key(), move ha_index_init() call
        to before the late NULLs filtering code.
      - Backport function comments from 6.0.
      
      
      mysql-test/r/null_key.result:
        BUG#34945: "ref_or_null queries that are null_rejecting and have a null value crash mysql"
        - Testcase
      mysql-test/t/null_key.test:
        BUG#34945: "ref_or_null queries that are null_rejecting and have a null value crash mysql"
        - Testcase
      sql/sql_select.cc:
        BUG#34945: "ref_or_null queries that are null_rejecting and have a null value crash mysql"
        - Apply Eric Bergen's patch: in join_read_always_key(), move ha_index_init() call
          to before the late NULLs filtering code.
        - Backport function comments from 6.0
      cd9f2d1c
    • unknown's avatar
      Merge kaamos.(none):/data/src/opt/bug31781/my50 · 64bdb0bd
      unknown authored
      into  kaamos.(none):/data/src/opt/mysql-5.0-opt
      
      
      64bdb0bd
    • unknown's avatar
      Fix for bug #31781: multi-table UPDATE with temp-pool enabled fails · 162eadbe
      unknown authored
                          with errno 17
      
      my_create() did not perform any checks for the case when a file is
      successfully created by a call to open(), but the call to
      my_register_filename() later fails because the number of open files
      has exceeded the my_open_files limit. This can happen on platforms 
      which do not have getrlimit(), and hence we do not know the real limit
      for open files. In such a case an error was returned to a caller
      although the file has actually been created. Since callers assume
      my_create() to return an error only when it failed to create a file,
      they did not perform any cleanups, leaving an 'orphaned' file on the
      file system.
      
      Fixed by adding a check for the above case to my_create() and ensuring
      the newly created file is deleted before returning an error.
      
      Creating a deterministic test case in the test suite is impossible,
      because the exact steps required to reproduce the above situation
      depend on the platform and/or environment (OS per-user limits, queries
      executed by previous tests, startup parameters). The patch was
      manually tested on Windows using examples posted in the bug report.
      
      
      mysys/my_create.c:
        Ensure that, if the call to my_register_filename() in my_create()
        failed, but the previous open() called succeeded, the newly created
        file is deleted before returning an error.
      162eadbe
    • unknown's avatar
      test case fix · 2cb35cd6
      unknown authored
      2cb35cd6
  15. 02 Mar, 2008 1 commit
    • unknown's avatar
      Bug#22438 · 9ffaa745
      unknown authored
      
      mysql-test/r/mysqldump.result:
        updated result
      mysql-test/t/mysqldump.test:
        hide master_log_pos number
      9ffaa745
  16. 01 Mar, 2008 1 commit
  17. 29 Feb, 2008 7 commits
    • unknown's avatar
      wrong merge fix · 4e7c4ab9
      unknown authored
      4e7c4ab9
    • unknown's avatar
      Merge mysql.com:/home/gluh/MySQL/Merge/4.1-opt · 4460f5a5
      unknown authored
      into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt
      
      
      mysql-test/t/symlink.test:
        Auto merged
      mysql-test/r/symlink.result:
        after merge fix
      4460f5a5
    • unknown's avatar
      test fix · be59a0ea
      unknown authored
      
      mysql-test/r/symlink.result:
        result fix
      be59a0ea
    • unknown's avatar
      Fixed bug #34830: mixed table and field names in Item_ref · d276cd90
      unknown authored
                        and Item_direct_ref constructor calls.
      
      Order of ref->field_name and ref->table_name arguments
      is of Item_ref and Item_direct_ref in the fix_inner_refs
      function is inverted.
      
      
      sql/sql_select.cc:
        Fixed bug #34830: mixed table and field names in Item_ref
                          and Item_direct_ref constructor calls.
        
        Order of ref->field_name and ref->table_name arguments
        is of Item_ref and Item_direct_ref in the fix_inner_refs
        function is inverted. See definitions:
        
          Item_ref(Name_resolution_context *context_arg, Item **item,
                   const char *table_name_arg, const char *field_name_arg,
                   bool alias_name_used_arg= FALSE)
          and
        
          Item_direct_ref(Name_resolution_context *context_arg, Item **item,
                          const char *table_name_arg,
                          const char *field_name_arg,
                          bool alias_name_used_arg= FALSE)
      d276cd90
    • unknown's avatar
      after merge fix · fa9e35b4
      unknown authored
      fa9e35b4
    • unknown's avatar
      Merge mysql.com:/home/gluh/MySQL/Merge/4.1-opt · 8bdb243f
      unknown authored
      into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt
      
      
      sql/mysql_priv.h:
        Auto merged
      mysql-test/r/symlink.result:
        manual merge
      mysql-test/t/symlink.test:
        manual merge
      sql/mysqld.cc:
        manual merge
      sql/sql_parse.cc:
        manual merge
      8bdb243f
    • unknown's avatar
      Bug#32167 another privilege bypass with DATA/INDEX DIRECORY(ver 4.1,5.0) · ab604259
      unknown authored
      added new function test_if_data_home_dir() which checks that
      path does not contain mysql data home directory.
      Using of mysql data home directory in
      DATA DIRECTORY & INDEX DIRECTORY is disallowed.
      
      
      mysql-test/r/symlink.result:
        test result
      mysql-test/t/symlink.test:
        test case
      sql/mysql_priv.h:
        new variable mysql_unpacked_real_data_home
      sql/mysqld.cc:
        new variable mysql_unpacked_real_data_home
      sql/sql_parse.cc:
        added new function test_if_data_home_dir() which checks that
        path does not contain mysql data home directory.
        Using of mysql data home directory in
        DATA DIRECTORY & INDEX DIRECTORY is disallowed.
      ab604259
  18. 28 Feb, 2008 3 commits
    • unknown's avatar
      Post-merge fix for Bug 33851. The initialization order of members · 8b779456
      unknown authored
      must match the order which they were declared in the class definition. 
      
      
      sql/item.cc:
        Fix initialization order, parameter was the last one declared.
      8b779456
    • unknown's avatar
      Merge host.loc:/home/uchum/work/PP/5.0-opt-34620 · 7f572871
      unknown authored
      into  host.loc:/home/uchum/work/5.0-opt
      
      
      7f572871
    • unknown's avatar
      Fixed bug #34620: item_row.cc:50: Item_row::illegal_method_call(const char*): · d40ca161
      unknown authored
                        Assertion `0' failed
      
      If ROW item is a part of an expression that also has
      aggregate function calls (COUNT/SUM/AVG...), a
      "splitting" with an Item::split_sum_func2 function
      is applied to that ROW item.
      Current implementation of Item::split_sum_func2
      replaces this Item_row with a newly created
      Item_aggregate_ref reference to it.
      Then the row cache tries to work with the
      Item_aggregate_ref object as with the Item_row object:
      row cache calls row-emulation methods such as cols and
      element_index. Item_aggregate_ref (like it's parent
      Item_ref) inherits dummy implementations of those
      methods from the hierarchy root Item, and call to
      them leads to failed assertions and wrong data
      output.
      
      Row-emulation virtual functions (cols, element_index, addr,
      check_cols, null_inside and bring_value) of Item_ref have
      been overloaded to forward calls to an underlying item
      reference.
      
      
      
      
      mysql-test/r/row.result:
        Added test case for bug #34620.
      mysql-test/t/row.test:
        Added test case for bug #34620.
      sql/item.h:
        Fixed bug #34620.
        Row-emulation virtual functions (cols, element_index, addr,
        check_cols, null_inside and bring_value) of Item_ref have
        been overloaded to forward calls to an underlying item
        reference.
      d40ca161