1. 01 Jun, 2007 1 commit
    • unknown's avatar
      BUG#28574 - repair table causes queries to fail with various · 93b10124
      unknown authored
                  corruption errors: 126,134,145
      
      When one thread attempts to lock two (or more) tables and another
      thread executes statement that aborts these locks (e.g. REPAIR
      TABLE) we may get a table object with wrong lock type in a table
      cache.
      
      For example if SELECT FROM t1,t2 was aborted, subsequent INSERT
      INTO t1 may be executed under read lock.
      
      As a result we may get various table corruptions and even a server
      crash.
      
      This is fixed by resetting lock type in case lock was aborted by
      another thread.
      
      I failed to create reasonable test case for this bug.
      
      
      sql/lock.cc:
        If thr_multi_lock was aborted by another thread, it unlocks tables
        that were locked before one that was aborted. Lock type for tables
        that were after a table that was aborted preserved. Thus we need
        to reset lock data in case thr_multi_lock was aborted.
      93b10124
  2. 23 May, 2007 1 commit
  3. 22 May, 2007 1 commit
  4. 21 May, 2007 2 commits
  5. 18 May, 2007 9 commits
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-4.1 · 25090a6d
      unknown authored
      into  mysql.com:/d2/hf/mrg/mysql-4.1-opt
      
      
      25090a6d
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-4.1-maint · 768eab64
      unknown authored
      into  pilot.blaudden:/home/msvensson/mysql/mysql-4.1-maint
      
      
      768eab64
    • unknown's avatar
      WL#2247 mysqltest: add option for sorting results · 421d8ca9
      unknown authored
       - Final touchups
      
      
      client/mysqltest.c:
        Final touch ups, rename sorted_results to sorted_result
      mysql-test/r/mysqltest.result:
        Update test result
      mysql-test/t/mysqltest.test:
        Update results with additional subtests for empty result set,
        NULL values and 1024 rows
      421d8ca9
    • unknown's avatar
      Merge perch.ndb.mysql.com:/home/jonas/src/41-work · c960adfe
      unknown authored
      into  perch.ndb.mysql.com:/home/jonas/src/mysql-4.1-ndb
      
      
      c960adfe
    • unknown's avatar
      ndb - bug#28443 · deba58ee
      unknown authored
        review comment 2, atleast 1 signal need for test prg
      
      
      ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
        review comment, atleast 1 signal need
      deba58ee
    • unknown's avatar
      Merge perch.ndb.mysql.com:/home/jonas/src/41-work · 692c13ab
      unknown authored
      into  perch.ndb.mysql.com:/home/jonas/src/mysql-4.1-ndb
      
      
      692c13ab
    • unknown's avatar
      ndb - bug#28443 · a5731933
      unknown authored
        review comment
        if some tcp-transporter has data, then do select with timeout 0
      
      
      ndb/src/common/transporter/TransporterRegistry.cpp:
        review comment
        if some tcp-transporter has data, then do select with timeout 0
      a5731933
    • unknown's avatar
      Merge perch.ndb.mysql.com:/home/jonas/src/41-work · b98be8f6
      unknown authored
      into  perch.ndb.mysql.com:/home/jonas/src/mysql-4.1-ndb
      
      
      b98be8f6
    • unknown's avatar
      ndb - bug#28443 · 9bfed519
      unknown authored
        Make sure that data can not e left lingering in receive buffer
      
      
      ndb/src/common/transporter/Packer.cpp:
        test, make MAX_RECEIVED_SIGNALS an variable
      ndb/src/common/transporter/TCP_Transporter.hpp:
        add new method for checking of data in receive buffer
      ndb/src/common/transporter/TransporterRegistry.cpp:
        Make sure that 
        1) poll_TCP return true if any transporter has data in receiveBuffer
           (previously only if socket had data)
        2) performReceive executes signals if TCP transporter has data in receiveBuffer
           (previously only if data was recevied)
      ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
        test, make MAX_RECEIVED_SIGNALS an variable
      ndb/test/ndbapi/testNdbApi.cpp:
        testcase
      ndb/test/run-test/daily-basic-tests.txt:
        testcase
      9bfed519
  6. 17 May, 2007 3 commits
    • unknown's avatar
      Merge siva.hindu.god:/home/tsmith/m/bk/41 · fde76b7e
      unknown authored
      into  siva.hindu.god:/home/tsmith/m/bk/maint/41
      
      
      fde76b7e
    • unknown's avatar
      Addition to fix for · a656c71e
      unknown authored
      BUG#25712 - insert delayed and check table run together report crashed
                  tables
      Fixed wrongly applied patch.
      
      
      a656c71e
    • unknown's avatar
      Addition to fix for · 6e09887f
      unknown authored
      BUG#25712 - insert delayed and check table run together report
                  crashed tables
      
      Let MY_THREADSAFE have distinct value. Some functions call my_seek
      passing MyFlags argument directly to it. This may cause unnecessary
      locks, which may finally lead to a dead-lock (specifically see my_lock).
      
      
      include/my_sys.h:
        Addition to fix for
        BUG#25712 - insert delayed and check table run together report
                    crashed tables
        
        Let MY_THREADSAFE have distinct value. Some functions call my_seek
        passing MyFlags argument directly to it. This may cause unnecessary
        locks, which may finally lead to a dead-lock (specifically see my_lock).
        
        Also it doesn't affect my_pread/my_pwrite in any way. So the comment was
        updated.
      6e09887f
  7. 16 May, 2007 5 commits
    • unknown's avatar
      BUG#25712 - insert delayed and check table run together report crashed · e1e83a8b
      unknown authored
                  tables
      
      In case system doesn't have native pread/pwrite calls (e.g. Windows)
      and there is CHECK TABLE runs concurrently with another statement that
      reads from a table, the table may be reported as crashed.
      
      This is fixed by locking file descriptor when my_seek is executed on
      MyISAM index file and emulated pread/pwrite may be executed concurrently.
      
      Affects MyISAM tables on platforms that do not have native
      pread/pwrite calls (e.g. Windows).
      
      No deterministic test case for this bug.
      
      
      myisam/mi_check.c:
        Key file descriptor is shared among threads and mixed set of
        my_pread/my_pwrite and my_seek calls is possible. This is not
        a problem on systems that have native pread/pwrite calls.
        
        In case system doesn't have native pread/pwrite calls (e.g. Windows)
        we must ensure that my_pread/my_pwrite are not executed at the same
        time with my_seek. This is done by passing MY_THREADSAFE flag to
        my_seek.
      mysys/my_seek.c:
        On platforms that do not have native pread/pwrite calls (e.g. Windows)
        these calls are emulated as follow: lock fd, lseek, read, unlock fd.
        
        In case file descriptor is shared among threads, where one thread
        executes my_pread and another thread executes my_seek, we may read
        from a wrong position. This may happen because my_seek doesn't lock
        fd and thus may be executed by another thread after emulated pread
        has done lseek and before it has done read.
        
        To fix problem mentioned above we introduce new flag MY_THREADSAFE to
        my_seek, which is meaningful only in case pread/pwrite calls are
        emulated. If this flag is set, lseek operation is performed as follow:
        lock fd, seek, unlock fd.
      e1e83a8b
    • unknown's avatar
      Bug#28473 Does mysql-test-run.pl handle LD_LIBRARY_PATH wrong ? · f106d396
      unknown authored
       - Fix spelling error
      
      
      mysql-test/mysql-test-run.pl:
        Fix spelling error
      f106d396
    • unknown's avatar
      Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-4.1-build-work · 42dae8f5
      unknown authored
      into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-4.1-build
      
      
      42dae8f5
    • unknown's avatar
      WL#2247 mysqltest: add option for sorting results · 61413522
      unknown authored
       - Change from "query_sorted <query>" to "sorted_results"
      
      
      client/mysqltest.c:
        Replace "query_sorted <query>" with the ability to turn
        on "one shot result sorting" with the command "sorted_results"
      mysql-test/r/mysqltest.result:
        Update test and result
      mysql-test/t/mysqltest.test:
        Update test and result
      61413522
    • unknown's avatar
      Bug#28470 mysqltest scripts need to know protocol · 7e2ba658
      unknown authored
      
      client/mysqltest.c:
        Make it possible for test scripts to know what protocol is being used
      7e2ba658
  8. 15 May, 2007 2 commits
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-4.1 · c3c64f1a
      unknown authored
      into  vajra.(none):/opt/local/work/mysql-4.1-runtime
      
      
      c3c64f1a
    • unknown's avatar
      Fixed bug #28272: crash that occurs when running an EXPLAIN command · 8762539d
      unknown authored
      for a query over an empty table right after its creation. 
      The crash is the result of an attempt made by JOIN::optimize to evaluate
      the WHERE condition when no records have been actually read.
      The added test case can reproduce the crash only with InnoDB tables and
      only with 5.0.x.
       
      
      
      mysql-test/r/innodb_mysql.result:
        Added a test case for bug #28272.
      mysql-test/t/innodb_mysql.test:
        Added a test case for bug #28272.
      sql/sql_select.cc:
        Fixed bug #28272: crash that occurs when running an EXPLAIN command
        for a query over an empty table right after its creation. 
        The crash is the result of an attempt made by JOIN::optimize to evaluate
        the WHERE condition when no records have been actually read.
        Such attempts could be observed only with EXPLAIN commands.
        Now at the optimization phase the WHERE condition is never evaluated if 
        there is no record previously read from the table.
      8762539d
  9. 14 May, 2007 2 commits
    • unknown's avatar
      Fixed bug #27937: crash for the the second execution of a prepared · fca58c95
      unknown authored
      statement from a UNION query with ORDER BY an expression containing
      RAND().
      The crash happened because the global order by list in the union query
      was not re-initialized for execution.
      (Local order by lists were re-initialized though).
      
      
      
      mysql-test/r/ps.result:
        Added a test case for bug #27937.
      mysql-test/t/ps.test:
        Added a test case for bug #27937.
      sql/sql_union.cc:
        Fixed bug #27937: crash for the the second execution of a prepared
        statement from a UNION query with ORDER BY an expression containing
        RAND().
        The crash happened because the global order by list in the union query
        was not re-initialized for execution.
        (Local order by lists were re-initialized though).
        Added re-initialization of the global order by list in the function
        st_select_lex_unit::init_prepare_fake_select_lex.
      fca58c95
    • unknown's avatar
      Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-4.1-build · 4ce5e86f
      unknown authored
      into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-4.1-build-work
      
      
      4ce5e86f
  10. 10 May, 2007 2 commits
  11. 09 May, 2007 3 commits
  12. 08 May, 2007 2 commits
    • unknown's avatar
      Bug #27792 query cache returns wrong result, with certain system variables · ed947499
      unknown authored
       - Queries in the query cache are identified by the individual 
         characters in the query statement, the current database and 
         the current environment expressed as a set of system variable
         flags.
       - Since the set of environment flags didn't properly describe the
         current environment unexpected results were returned from the 
         query cache.
       - Query cache is now cleared when the variable ft_boolean_syntax is 
         updated.
       - An identification flag for the variable default_week_format is 
         added to the query cache record.
       
      Thanks to Martin Friebe who has supplied significant parts of this patch.
      
      
      mysql-test/r/query_cache.result:
        Added test case
      mysql-test/t/query_cache.test:
        Added test case
      sql/mysql_priv.h:
        - Added missing flags to reflect the significant local environment
          settings of the cached query.
      sql/set_var.cc:
        - Added query cache flush when system variable ft_boolean_syntax is
          updated since this also invalidates all cached result sets using this
          variable.
      sql/sql_cache.cc:
        - Added another local system variable as an identification flag
          for cached queries.
      ed947499
    • unknown's avatar
      Merge dev3-221.dev.cn.tlan:/home/ngb/mysql/mysql-4.1/mysql-4.1-ndb-bj · 6aa333d9
      unknown authored
      into  dev3-221.dev.cn.tlan:/home/ngb/mysql/mysql-4.1/mysql-4.1-ndb
      
      
      6aa333d9
  13. 07 May, 2007 2 commits
  14. 04 May, 2007 4 commits
    • unknown's avatar
      Bug #27976: Misleading error message, 'Sort buffer to small' · d64e63b3
      unknown authored
      The message is gramatically wrong, and factually wrong.
      
      Change it to refer to the myisam_sort_buffer_size variable and change
      "to" to "too".
      
      
      myisam/sort.c:
        Change error messages to be gramatically correct and to refer to the
        correct variable.
      mysql-test/r/repair.result:
        Refer to the correct variable.  Message changed.
      d64e63b3
    • unknown's avatar
      Bug #27173: "Enabling keys got errno ..." does not say which table · 4d263c49
      unknown authored
      Warnings may show up in the error log that complain about a table, yet
      don't tell us which table.
      
      Add the database and table names to the message.
      
      
      sql/ha_myisam.cc:
        Add the database and table names to the warning message.
      4d263c49
    • unknown's avatar
      Bug #27531: the 4.1 fix. · 353b6f26
      unknown authored
      When checking for applicability of join cache
      we must disable its usage only if there is no
      temp table in use.
      When a temp table is used we can use join
      cache (and it will not make the result-set 
      unordered) to fill the temp table. The filesort() 
      operation is then applied to the data in the temp 
      table and hence is not affected by join cache
      usage.
      Fixed by narrowing the condition for disabling 
      join cache to exclude the case where temp table
      is used.
      
      
      mysql-test/r/join.result:
        Bug #27531: test case
      mysql-test/t/join.test:
        Bug #27531: test case
      sql/sql_select.cc:
        Bug #27531: 
        Disable join cache only if not using temp table
      353b6f26
    • unknown's avatar
      Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-4.1-build · a196d66f
      unknown authored
      into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-4.1-build-work
      
      
      a196d66f
  15. 03 May, 2007 1 commit
    • unknown's avatar
      Bug#23656: Wrong conversion result of a DATETIME to integer using CAST function. · 1a0e3a28
      unknown authored
      The generic string to int conversion was used by the Item_func_signed and
      the Item_func_unsigned classes to convert DATE/DATETIME values to the
      SIGNED/UNSIGNED type. But this conversion produces wrong results for such
      values.
      
      Now if the item which result has to be converted can return its result as
      longlong then the item->val_int() method is used to allow the item to carry
      out the conversion itself and return the correct result.
      This condition is checked in the Item_func_signed::val_int() and the
      Item_func_unsigned::val_int() functions.
      
      
      mysql-test/t/cast.test:
        Added a test case for the bug#23656: Wrong conversion result of a DATETIME to integer using CAST function.
      mysql-test/r/cast.result:
        Added a test case for the bug#23656: Wrong conversion result of a DATETIME to integer using CAST function.
      sql/item_func.cc:
        Bug#23656: Wrong conversion result of a DATETIME to integer using CAST function.
        Now if the item which result has to be converted can return its result as
        longlong then the item->val_int() method is used to allow the item to carry
        out the conversion itself and return the correct result.
        This condition is checked in the Item_func_signed::val_int() and the
        Item_func_unsigned::val_int() functions.
      1a0e3a28