1. 09 May, 2006 1 commit
    • unknown's avatar
      BUG#18068: SELECT DISTINCT (with duplicates and covering index) · 52ae8e1e
      unknown authored
      When converting DISTINCT to GROUP BY where the columns are from the covering
      index and they are quoted twice in the SELECT list the optimizer is creating
      improper processing sequence. This is because of the fact that the columns
      of the covering index are not recognized as such and treated as non-index
      columns.
      
      Generally speaking duplicate columns can safely be removed from the GROUP
      BY/DISTINCT list because this will not add or remove new rows in the
      resulting set. Duplicates can be removed even if they are not consecutive
      (as is the case for ORDER BY, where the duplicate columns can be removed
      only if they are consecutive).
      
      So we can safely transform "SELECT DISTINCT a,a FROM ... ORDER BY a" to
      "SELECT a,a FROM ... GROUP BY a ORDER BY a" instead of 
      "SELECT a,a FROM .. GROUP BY a,a ORDER BY a". We can even transform 
      "SELECT DISTINCT a,b,a FROM ... ORDER BY a,b" to
      "SELECT a,b,a FROM ... GROUP BY a,b ORDER BY a,b".
      
      The fix to this bug consists of checking for duplicate columns in the SELECT
      list when constructing the GROUP BY list in transforming DISTINCT to GROUP
      BY and skipping the ones that are already in.
      
      
      mysql-test/r/distinct.result:
        test case for the bug without loose index scan
      mysql-test/r/group_min_max.result:
        test case for the bug
      mysql-test/t/distinct.test:
        test case for the bug without loose index scan
      mysql-test/t/group_min_max.test:
        test case for the bug
      sql/sql_select.cc:
        duplicates check and removal
      52ae8e1e
  2. 02 May, 2006 5 commits
    • unknown's avatar
      Fix a bunch of non-Linux compile failures. · f3263ebf
      unknown authored
      
      VC++Files/mysql.sln:
        mysql_client_test depends on mysys.
      VC++Files/mysys/mysys.vcproj:
        Add new file missing in previous push.
      mysys/my_memmem.c:
        Fix illegal pointer arithmetics on void *.
      tests/Makefile.am:
        -L must go before -l
      tests/mysql_client_test.c:
        No declarations after statement in C code.
      f3263ebf
    • unknown's avatar
      Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0 · 32700147
      unknown authored
      into mysql.com:/home/hf/work/mysql-5.0.clean
      
      32700147
    • unknown's avatar
      Win build fix · e815532b
      unknown authored
      e815532b
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0 · 3a284d5d
      unknown authored
      into  zippy.(none):/home/cmiller/work/mysql/mysql-5.0__bug17667
      
      
      mysys/Makefile.am:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      3a284d5d
    • unknown's avatar
      SECURITY FIX · f57754d7
      unknown authored
      Bug#17667: An attacker has the opportunity to bypass query logging.
      
      This adds a new, local-only printf format specifier to our *printf functions
      that allows us to print known-size buffers that must not be interpreted as 
      NUL-terminated "strings."
      
      It uses this format-specifier to print to the log, thus fixing this 
      problem.
      
      
      include/my_sys.h:
        Add prototype for my_memmem() .
      mysys/Makefile.am:
        Add reference to new file, my_memmem.c
      mysys/mf_iocache2.c:
        Add a "%.1234b" and "%.*b" percent-code.  It takes a width, just like "%s", 
        but unlike the string-indicator, it requires the width and doesn't stop printing
        at NUL characters.
        
        Also, simplify the code a bit.
        
        TODO:  This code should be unified with the strings/my_vnsprintf.c code in 
        the future.
      sql/sql_parse.cc:
        The query is not a C-string, but is a sized buffer, containing any character 
        at all, which may include NUL characters.
      strings/my_vsnprintf.c:
        Add a "%.1234b" and "%.*b" percent-code.  It takes a width, just like "%s", 
        but unlike the string-indicator, it requires the width and doesn't stop printing
        at NUL characters.
      tests/Makefile.am:
        We may need some of our local functions.
      tests/mysql_client_test.c:
        Add a "%.1234b" and "%.*b" percent-code.  It takes a width, just like "%s", 
        but unlike the string-indicator, it requires the width and doesn't stop printing
        at NUL characters.
      mysql-test/t/mysql_client_test.opt:
        New BitKeeper file ``mysql-test/t/mysql_client_test.opt''
        
        Add '--log' server parameter.
      mysys/my_memmem.c:
        New BitKeeper file ``mysys/my_memmem.c''
        
        Implement memmem, a black-box work-alike of the GNU memmem(), which functions
        like strstr() but for arbitrary blocks of memory.
      f57754d7
  3. 01 May, 2006 9 commits
  4. 29 Apr, 2006 3 commits
    • unknown's avatar
      Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.1 · 01c039f4
      unknown authored
      into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
      
      01c039f4
    • unknown's avatar
      config-win.h: · 7c8f4d4e
      unknown authored
        Fix strange "double" define for popen.
        Avoid warnings about sprintf() etc. being unsafe.
        Corrected typo "#endfif"
      
      
      include/config-win.h:
        Fix strange "double" define for popen.
        Avoid warnings about sprintf() etc. being unsafe.
        Corrected typo "#endfif"
      7c8f4d4e
    • unknown's avatar
      configure.in: · 53d9cdf6
      unknown authored
        Changed version to 4.1.20
      
      
      configure.in:
        Changed version to 4.1.20
      53d9cdf6
  5. 28 Apr, 2006 17 commits
    • unknown's avatar
      mysql.spec.sh: · c76ebcd1
      unknown authored
        Backport of changes in 5.0 (bug#18294)
      
      
      support-files/mysql.spec.sh:
        Backport of changes in 5.0 (bug#18294)
      c76ebcd1
    • unknown's avatar
      Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.1 · 5db717b1
      unknown authored
      into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
      
      5db717b1
    • unknown's avatar
      BUG#19145: mysqld crashes if you set the default value of an enum field to NULL · cba31c3c
      unknown authored
      Now test for NULLness the pointers returned from objects created from the
      default value. Pushing patch on behalf of cmiller.
      
      
      mysql-test/r/null.result:
        Add test case
      mysql-test/t/null.test:
        Add test case
      sql/sql_table.cc:
        No longer blindly dereference pointer of the string representation of the
        values, where "NULL" is NUL. Raise INVALID DEFAULT error messages where
        appropriate.
        
        Note that the -O1 optimization flag made debugging this extremely tricky, with
        misleading results, and that removing it from the Makefile during debugging can
        be invaluable.
      cba31c3c
    • unknown's avatar
      Merge msvensson@bk-internal.mysql.com:/home/bk/mysql-5.0 · 67f4d2b0
      unknown authored
      into  devsrv-b.mysql.com:/users/msvensson/mysql-5.0
      
      67f4d2b0
    • unknown's avatar
      Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0 · 493434fa
      unknown authored
      into mysql.com:/Users/kent/mysql/bk/mysql-5.0-new
      
      493434fa
    • unknown's avatar
      mysql.spec.sh: · 7ae30f18
      unknown authored
        Include and run mysql_upgrade if needed (bug#19353)
      
      
      support-files/mysql.spec.sh:
        Include and run mysql_upgrade if needed (bug#19353)
      7ae30f18
    • unknown's avatar
      Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.1 · 81711828
      unknown authored
      into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
      
      81711828
    • unknown's avatar
      Merge msvensson@bk-internal.mysql.com:/home/bk/mysql-5.0 · 50f6d131
      unknown authored
      into  devsrv-b.mysql.com:/users/msvensson/mysql-5.0
      
      50f6d131
    • unknown's avatar
      Merge msvensson@bk-internal.mysql.com:/home/bk/mysql-4.1 · cdfdc044
      unknown authored
      into  devsrv-b.mysql.com:/users/msvensson/mysql-4.1
      
      cdfdc044
    • unknown's avatar
      Bug#18818 configure: No longer finds OpenSSL on Mac OS X · 43556e66
      unknown authored
       - Eval shrext_cmds variable before using it
       - Moved from acinclude.m4 to openssl.m4 and zlib.m4 when merging 4.1 -> 5.0
      
      
      config/ac-macros/openssl.m4:
        Move from acinclude.m4
      config/ac-macros/zlib.m4:
        Move from acinclude.m4
      43556e66
    • unknown's avatar
      Merge neptunus.(none):/home/msvensson/mysql/mysql-4.1 · 199f632a
      unknown authored
      into  neptunus.(none):/home/msvensson/mysql/mysql-5.0
      
      
      BitKeeper/deleted/.del-acinclude.m4~f4ab416bac5003:
        Changes to acinclude.m4 will go into openssl.m4 and zlib.m4
      199f632a
    • unknown's avatar
      Merge msvensson@bk-internal.mysql.com:/home/bk/mysql-4.1 · d75a802a
      unknown authored
      into  devsrv-b.mysql.com:/users/msvensson/mysql-4.1
      
      d75a802a
    • unknown's avatar
      Merge lsmy3.wdf.sap.corp:/data/users/gkodinov/mysql-4.1-B18492 · a423b822
      unknown authored
      into  lsmy3.wdf.sap.corp:/data/users/gkodinov/mysql-5.0-B18492
      
      
      mysql-test/r/subselect.result:
        merged
      sql/item.cc:
        merged
      sql/item.h:
        merged
      sql/item_subselect.cc:
        merged
      a423b822
    • unknown's avatar
      BUG#18492: mysqld reports ER_ILLEGAL_REFERENCE in --ps-protocol · 0e0d0d9d
      unknown 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.
      
      
      mysql-test/r/ps_11bugs.result:
        Test case for the bug
      mysql-test/r/subselect.result:
        Explain updated because of the tranformation
      mysql-test/t/ps_11bugs.test:
        Testcase for the bug
      sql/item.cc:
        Taking out Item_null_helper as it's no longer needed
      sql/item.h:
        Taking out Item_null_helper as it's no longer needed
      sql/item_subselect.cc:
        The described change to the IN->EXISTS transformation
      0e0d0d9d
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-5.0 · d458866c
      unknown authored
      into  neptunus.(none):/home/msvensson/mysql/mysql-5.0
      
      
      mysql-test/mysql-test-run.pl:
        Auto merged
      mysql-test/r/trigger.result:
        Auto merged
      mysql-test/t/trigger.test:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      d458866c
    • unknown's avatar
      Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0 · 109c0553
      unknown authored
      into mysql.com:/home/hf/work/mysql-5.0.upgd
      
      109c0553
    • unknown's avatar
      bug #18115 (mysql_upgrade on Windows) · c15feedd
      unknown authored
      pushed in 5.0
      
      
      VC++Files/mysql.dsw:
        mysql_upgrade tool added
      VC++Files/mysql.sln:
        mysql_upgrade tool added
      VC++Files/mysql_ia64.dsw:
        mysql_upgrade tool added
      client/Makefile.am:
        mysql_upgrade tool added
      c15feedd
  6. 27 Apr, 2006 5 commits