1. 06 Feb, 2007 1 commit
    • malff/marcsql@weblab.(none)'s avatar
      Bug#12976 (stored procedures local variables of type bit) · b5f8b636
      malff/marcsql@weblab.(none) authored
      Before this change, a local variables in stored procedures / stored functions
      or triggers, when declared with a type of bit(N), would not evaluate their
      value properly.
      
      The problem was that the data was incorrectly typed as a string,
      causing for example bit b'1', implemented as a byte 0x01, to be interpreted
      as a string starting with the character 0x01. This later would cause
      implicit conversions to integers or booleans to fail.
      
      The root cause of this problem was an incorrect translation between field
      types, like bit(N), and internal types used when representing values in Item
      objects.
      
      Also, before this change, the function HEX() would sometime print extra "0"
      characters when invoked with bit(N) values.
      
      With this fix, the type translation (sp_map_result_type, sp_map_item_type)
      has been changed so that bit(N) fields are represented with integer values.
      
      A consequence is that, for the function HEX(), when called with a stored
      procedure local variable of type bit(N) as argument, HEX() is provided with an
      integer instead of a string, and therefore does not print "0" padding.
      
      A test case for Bug 12976 was present in the test suite, and has been updated.
      b5f8b636
  2. 04 Feb, 2007 1 commit
  3. 01 Feb, 2007 1 commit
  4. 30 Jan, 2007 2 commits
    • malff/marcsql@weblab.(none)'s avatar
      Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · 3c6d9887
      malff/marcsql@weblab.(none) authored
      into  weblab.(none):/home/marcsql/TREE/mysql-5.0-21904
      3c6d9887
    • malff/marcsql@weblab.(none)'s avatar
      Bug#21904 (parser problem when using IN with a double "(())") · f5ad4eed
      malff/marcsql@weblab.(none) authored
      Before this fix, a IN predicate of the form: "IN (( subselect ))", with two
      parenthesis, would be evaluated as a single row subselect: if the subselect
      returns more that 1 row, the statement would fail.
      
      The SQL:2003 standard defines a special exception in the specification,
      and mandates that this particular form of IN predicate shall be equivalent
      to "IN ( subselect )", which involves a table subquery and works with more
      than 1 row.
      
      This fix implements "IN (( subselect ))", "IN ((( subselect )))" etc
      as per the SQL:2003 requirement.
      
      All the details related to the implementation of this change have been
      commented in the code, and the relevant sections of the SQL:2003 spec
      are given for reference, so they are not repeated here.
      
      Having access to the spec is a requirement to review in depth this patch.
      f5ad4eed
  5. 25 Jan, 2007 3 commits
  6. 24 Jan, 2007 16 commits
  7. 23 Jan, 2007 12 commits
  8. 22 Jan, 2007 4 commits