1. 28 Apr, 2006 1 commit
    • gkodinov@lsmy3.wdf.sap.corp's avatar
      BUG#18492: mysqld reports ER_ILLEGAL_REFERENCE in --ps-protocol · ca793433
      gkodinov@lsmy3.wdf.sap.corp authored
      In the code that converts IN predicates to EXISTS predicates it is changing
      the select list elements to constant 1. Example :
      SELECT ... FROM ...  WHERE a IN (SELECT c FROM ...)
      is transformed to :
      SELECT ... FROM ... WHERE EXISTS (SELECT 1 FROM ...  HAVING a = c)
      However there can be no FROM clause in the IN subquery and it may not be
      a simple select : SELECT ... FROM ... WHERE a IN (SELECT f(..) AS
      c UNION SELECT ...) This query is transformed to : SELECT ... FROM ...
      WHERE EXISTS (SELECT 1 FROM (SELECT f(..) AS c UNION SELECT ...)
      x HAVING a = c) In the above query c in the HAVING clause is made to be
      an Item_null_helper (a subclass of Item_ref) pointing to the real
      Item_field (which is not referenced anywhere else in the query anymore).
      This is done because Item_ref_null_helper collects information whether
      there are NULL values in the result.  This is OK for directly executed
      statements, because the Item_field pointed by the Item_null_helper is
      already fixed when the transformation is done.  But when executed as
      a prepared statement all the Item instances are "un-fixed" before the
      recompilation of the prepared statement. So when the Item_null_helper
      gets fixed it discovers that the Item_field it points to is not fixed
      and issues an error.  The remedy is to keep the original select list
      references when there are no tables in the FROM clause. So the above
      becomes : SELECT ... FROM ...  WHERE EXISTS (SELECT c FROM (SELECT f(..)
      AS c UNION SELECT ...) x HAVING a = c) In this way c is referenced
      directly in the select list as well as by reference in the HAVING
      clause. So it gets correctly fixed even with prepared statements.  And
      since the Item_null_helper subclass of Item_ref_null_helper is not used
      anywhere else it's taken out.
      ca793433
  2. 27 Apr, 2006 1 commit
  3. 26 Apr, 2006 8 commits
  4. 25 Apr, 2006 4 commits
  5. 24 Apr, 2006 5 commits
  6. 23 Apr, 2006 3 commits
  7. 21 Apr, 2006 5 commits
  8. 20 Apr, 2006 3 commits
  9. 19 Apr, 2006 6 commits
    • igor@rurik.mysql.com's avatar
      Temporarily commented out a query from the test case for bug 14169 to make it... · 67458961
      igor@rurik.mysql.com authored
      Temporarily commented out a query from the test case for bug 14169 to make it pass with --ps-protocol.
      67458961
    • igor@rurik.mysql.com's avatar
      Merge rurik.mysql.com:/home/igor/mysql-4.1 · 881b55d5
      igor@rurik.mysql.com authored
      into  rurik.mysql.com:/home/igor/dev/mysql-4.1-2
      881b55d5
    • evgen@moonbone.local's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1 · f89daa2f
      evgen@moonbone.local authored
      into moonbone.local:/work/14169-bug-4.1-mysql
      f89daa2f
    • evgen@moonbone.local's avatar
      func_gconcat.result: · 8b4eae6e
      evgen@moonbone.local authored
        Corrected test case for the bug#14169 to make it pass in --ps-protocol mode.
      8b4eae6e
    • svoj@april.(none)'s avatar
      Bug#18544 - LOCK TABLES timeout causes MyISAM table corruption · 806cd415
      svoj@april.(none) authored
      After a locking error the open table(s) were not fully
      cleaned up for reuse. But they were put into the open table
      cache even before the lock was tried. The next statement
      reused the table(s) with a wrong lock type set up. This
      tricked MyISAM into believing that it don't need to update
      the table statistics. Hence CHECK TABLE reported a mismatch
      of record count and table size.
      
      Fortunately nothing worse has been detected yet. The effect
      of the test case was that the insert worked on a read locked
      table. (!)
      
      I added a new function that clears the lock type from all
      tables that were prepared for a lock. I call this function
      when a lock failes.
      
      No test case. One test would add 50 seconds to the
      test suite. Another test requires file mode modifications.
      I added a test script to the bug report. It contains three
      cases for failing locks. All could reproduce a table
      corruption. All are fixed by this patch.
      
      This bug was not lock timeout specific.
      806cd415
    • igor@rurik.mysql.com's avatar
      Fixed bug #19079. · 950214ab
      igor@rurik.mysql.com authored
      The bug caused a reported index corruption in the cases when
      key_cache_block_size was not a multiple of myisam_block_size,
      e.g. when key_cache_block_size=1536 while myisam_block_size=1024.
      950214ab
  10. 18 Apr, 2006 4 commits