1. 12 Jul, 2006 1 commit
  2. 11 Jul, 2006 4 commits
    • evgen@moonbone.local's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt · 5d4881b8
      evgen@moonbone.local authored
      into  moonbone.local:/work/18503-bug-4.1-mysql
      5d4881b8
    • evgen@moonbone.local's avatar
      Fixed bug#18503: Queries with a quantified subquery returning empty set · 8ffda481
      evgen@moonbone.local authored
      may return a wrong result.
      
      An Item_sum_hybrid object has the was_values flag which indicates whether any
      values were added to the sum function. By default it is set to true and reset
      to false on any no_rows_in_result() call. This method is called only in
      return_zero_rows() function. An ALL/ANY subquery can be optimized by MIN/MAX
      optimization. The was_values flag is used to indicate whether the subquery
      has returned at least one row. This bug occurs because return_zero_rows() is
      called only when we know that the select will return zero rows before
      starting any scans but often such information is not known.
      In the reported case the return_zero_rows() function is not called and
      the was_values flag is not reset to false and yet the subquery return no rows
      Item_func_not_all and Item_func_nop_all functions return a wrong
      comparison result.
      
      The end_send_group() function now calls no_rows_in_result() for each item
      in the fields_list if there is no rows were found for the (sub)query.
      8ffda481
    • evgen@moonbone.local's avatar
      Merge moonbone.local:/work/allany-4.1-mysql · ff3ffe5c
      evgen@moonbone.local authored
      into  moonbone.local:/work/16302-bug-4.1-opt-mysql
      ff3ffe5c
    • evgen@moonbone.local's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt · a65bf3bf
      evgen@moonbone.local authored
      into  moonbone.local:/home/evgen/bk-trees/mysql-4.1-opt
      a65bf3bf
  3. 10 Jul, 2006 4 commits
    • evgen@moonbone.local's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt · 4235ab7e
      evgen@moonbone.local authored
      into  moonbone.local:/work/allany-4.1-mysql
      4235ab7e
    • evgen@moonbone.local's avatar
      Fixed bug#16302: Quantified subquery without any tables gives wrong results · d3418971
      evgen@moonbone.local authored
      The ALL/ANY subqueries are the subject of MIN/MAX optimization. The matter
      of this optimization is to embed MIN() or MAX() function into the subquery
      in order to get only one row by which we can tell whether the expression
      with ALL/ANY subquery is true or false.
      But when it is applied to a subquery like 'select a_constant' the reported bug
      occurs. As no tables are specified in the subquery the do_select() function 
      isn't called for the optimized subquery and thus no values have been added 
      to a MIN()/MAX() function and it returns NULL instead of a_constant.
      This leads to a wrong query result.
      
      For the subquery like 'select a_constant' there is no reason to apply
      MIN/MAX optimization because the subquery anyway will return at most one row.
      Thus the Item_maxmin_subselect class is more appropriate for handling such
      subqueries.
      
      The Item_in_subselect::single_value_transformer() function now checks
      whether tables are specified for the subquery. If no then this subselect is
      handled like a UNION using an Item_maxmin_subselect object.
      d3418971
    • gkodinov/kgeorge@macbook.gmz's avatar
      Merge rakia:mysql/4.1/B14553 · 893e9276
      gkodinov/kgeorge@macbook.gmz authored
      into  macbook.gmz:/Users/kgeorge/mysql/work/B14553-4.1-opt
      893e9276
    • gkodinov/kgeorge@mysql.com/rakia.(none)'s avatar
      BUG#14553: NULL in WHERE resets LAST_INSERT_ID · 2c9f5cc7
      To make MySQL compatible with some ODBC applications, you can find
      the AUTO_INCREMENT value for the last inserted row with the following query:
       SELECT * FROM tbl_name WHERE auto_col IS NULL.
      This is done with a special code that replaces 'auto_col IS NULL' with
      'auto_col = LAST_INSERT_ID'.
      However this also resets the LAST_INSERT_ID to 0 as it uses it for a flag
      so as to ensure that only the first SELECT ... WHERE auto_col IS NULL
      after an INSERT has this special behaviour.
      In order to avoid resetting the LAST_INSERT_ID a special flag is introduced
      in the THD class. This flag is used to restrict the second and subsequent
      SELECTs instead of LAST_INSERT_ID.
      2c9f5cc7
  4. 06 Jul, 2006 2 commits
  5. 05 Jul, 2006 1 commit
  6. 04 Jul, 2006 2 commits
  7. 30 Jun, 2006 14 commits
  8. 29 Jun, 2006 9 commits
  9. 28 Jun, 2006 3 commits