1. 04 May, 2006 6 commits
    • kroki@mysql.com's avatar
      Merge mysql.com:/home/tomash/src/mysql_ab/mysql-4.1 · 1139d375
      kroki@mysql.com authored
      into  mysql.com:/home/tomash/src/mysql_ab/mysql-4.1-bug16501
      1139d375
    • jani@hundin.mysql.fi's avatar
      Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-4.1 · d3467c0b
      jani@hundin.mysql.fi authored
      into  hundin.mysql.fi:/home/jani/mysql-4.1
      d3467c0b
    • kroki@mysql.com's avatar
      Merge mysql.com:/home/tomash/src/mysql_ab/mysql-4.1 · 74fd0bee
      kroki@mysql.com authored
      into  mysql.com:/home/tomash/src/mysql_ab/mysql-4.1-bug16501
      74fd0bee
    • tnurnberg@mysql.com's avatar
      Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-4.1 · a5f440f8
      tnurnberg@mysql.com authored
      into  mysql.com:/home/mysql-4.1-19025e
      a5f440f8
    • holyfoot@deer.(none)'s avatar
      test result fixed · 2f154ab4
      holyfoot@deer.(none) authored
      2f154ab4
    • tnurnberg@mysql.com's avatar
      Bug#19025 4.1 mysqldump doesn't correctly dump "auto_increment = [int]" · 5becb110
      tnurnberg@mysql.com authored
      mysqldump / SHOW CREATE TABLE will show the NEXT available value for
      the PK, rather than the *first* one that was available (that named in
      the original CREATE TABLE ... AUTO_INCREMENT = ... statement).
      
      This should produce correct and robust behaviour for the obvious use
      cases -- when no data were inserted, then we'll produce a statement
      featuring the same value the original CREATE TABLE had; if we dump
      with values, INSERTing the values on the target machine should set the
      correct next_ID anyway (and if not, we'll still have our AUTO_INCREMENT =
      ... to do that). Lastly, just the CREATE statement (with no data) for
      a table that saw inserts would still result in a table that new values
      could safely be inserted to).
      
      There seems to be no robust way however to see whether the next_ID
      field is > 1 because it was set to something else with CREATE TABLE
      ... AUTO_INCREMENT = ..., or because there is an AUTO_INCREMENT column
      in  the table (but no initial value was set with AUTO_INCREMENT = ...)
      and then one or more rows were INSERTed, counting up next_ID. This
      means that in both cases, we'll generate an AUTO_INCREMENT =
      ... clause in SHOW CREATE TABLE / mysqldump.  As we also show info on,
      say, charsets even if the user did not explicitly give that info in
      their own CREATE TABLE, this shouldn't be an issue.
      
      As per above, the next_ID will be affected by any INSERTs that have
      taken place, though.  This /should/ result in correct and robust
      behaviour, but it may look non-intuitive to some users if they CREATE
      TABLE ... AUTO_INCREMENT = 1000 and later (after some INSERTs) have
      SHOW CREATE TABLE give them a different value (say, CREATE TABLE
      ... AUTO_INCREMENT = 1006), so the docs should possibly feature a
      caveat to that effect.
      
      It's not very intuitive the way it works now (with the fix), but it's
      *correct*.  We're not storing the original value anyway, if we wanted
      that, we'd have to change on-disk representation?
      
      If we do dump/load cycles with empty DBs, nothing will change.  This
      changeset includes an additional test case that proves that tables
      with rows will create the same next_ID for AUTO_INCREMENT = ... across
      dump/restore cycles.
      
      Confirmed by support as likely solution for client's problem.
      5becb110
  2. 03 May, 2006 7 commits
  3. 02 May, 2006 2 commits
  4. 01 May, 2006 5 commits
  5. 30 Apr, 2006 2 commits
  6. 29 Apr, 2006 3 commits
  7. 28 Apr, 2006 7 commits
    • kent@mysql.com's avatar
      mysql.spec.sh: · b714a0ce
      kent@mysql.com authored
        Backport of changes in 5.0 (bug#18294)
      b714a0ce
    • kent@mysql.com's avatar
      Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.1 · cc6ad16b
      kent@mysql.com authored
      into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
      cc6ad16b
    • elliot@mysql.com's avatar
      BUG#19145: mysqld crashes if you set the default value of an enum field to NULL · 604b5836
      elliot@mysql.com authored
      Now test for NULLness the pointers returned from objects created from the
      default value. Pushing patch on behalf of cmiller.
      604b5836
    • kent@mysql.com's avatar
      Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.1 · 18b3a2c9
      kent@mysql.com authored
      into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
      18b3a2c9
    • msvensson@devsrv-b.mysql.com's avatar
      Merge msvensson@bk-internal.mysql.com:/home/bk/mysql-4.1 · 5297a546
      msvensson@devsrv-b.mysql.com authored
      into  devsrv-b.mysql.com:/users/msvensson/mysql-4.1
      5297a546
    • msvensson@devsrv-b.mysql.com's avatar
      Merge msvensson@bk-internal.mysql.com:/home/bk/mysql-4.1 · 84c83c91
      msvensson@devsrv-b.mysql.com authored
      into  devsrv-b.mysql.com:/users/msvensson/mysql-4.1
      84c83c91
    • 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
  8. 27 Apr, 2006 3 commits
  9. 26 Apr, 2006 5 commits