1. 30 Oct, 2009 2 commits
    • Alexey Kopytov's avatar
      Automerge. · c441a13b
      Alexey Kopytov authored
      c441a13b
    • Alexey Kopytov's avatar
      Bug #48131: crash group by with rollup, distinct, filesort, · bbca373e
      Alexey Kopytov authored
                  with temporary tables
      
      There were two problems the test case from this bug was
      triggering:
      
      1. JOIN::rollup_init() was supposed to wrap all constant Items
      into another object for queries with the WITH ROLLUP modifier
      to ensure they are never considered as constants and therefore
      are written into temporary tables if the optimizer chooses to
      employ them for DISTINCT/GROUP BY handling.
      
      However, JOIN::rollup_init() was called before
      make_join_statistics(), so Items corresponding to fields in
      const tables could not be handled as intended, which was
      causing all kinds of problems later in the query execution. In
      particular, create_tmp_table() assumed all constant items
      except "hidden" ones to be removed earlier by remove_const()
      which led to improperly initialized Field objects for the
      temporary table being created. This is what was causing crashes
      and valgrind errors in storage engines.
      
      2. Even when the above problem had been fixed, the query from
      the test case produced incorrect results due to some
      DISTINCT/GROUP BY optimizations being performed by the
      optimizer that are inapplicable in the WITH ROLLUP case.
      
      Fixed by disabling inapplicable DISTINCT/GROUP BY optimizations
      when the WITH ROLLUP modifier is present, and splitting the
      const-wrapping part of JOIN::rollup_init() into a separate
      method which is now invoked after make_join_statistics() when
      the const tables are already known.
      
      mysql-test/r/olap.result:
        Added a test case for bug #48131.
      mysql-test/t/olap.test:
        Added a test case for bug #48131.
      sql/sql_select.cc:
        1. Disabled inapplicable DISTINCT/GROUP BY optimizations when
        the WITH ROLLUP modifier is present.
        2. Split the const-wrapping part of JOIN::rollup_init() into a
        separate method.
      sql/sql_select.h:
        Added rollup_process_const_fields() declaration.
      bbca373e
  2. 19 Oct, 2009 5 commits
  3. 18 Oct, 2009 1 commit
    • Ramil Kalimullin's avatar
      Fix for bug#47963: Wrong results when index is used · 910f43bb
      Ramil Kalimullin authored
      Problem: using null microsecond part in a WHERE condition 
      (e.g. WHERE date_time_field <= "YYYY-MM-DD HH:MM:SS.0000") 
      may lead to wrong results due to improper DATETIMEs 
      comparison in some cases.
      
      Fix: comparing DATETIMEs as strings we must trim trailing 0's
      in such cases.
      
      
      mysql-test/r/innodb_mysql.result:
        Fix for bug#47963: Wrong results when index is used
          - test result.
      mysql-test/t/innodb_mysql.test:
        Fix for bug#47963: Wrong results when index is used
          - test case.
      sql/item.cc:
        Fix for bug#47963: Wrong results when index is used
          - comparing DATETIMEs as strings we must trim trailing 0's in the 
        microsecond part to ensure
        'YYYY-MM-DD HH:MM:SS.000' == 'YYYY-MM-DD HH:MM:SS'
      910f43bb
  4. 16 Oct, 2009 16 commits
    • Alexey Kopytov's avatar
      Bug #47123: Endless 100% CPU loop with STRAIGHT_JOIN · 62007189
      Alexey Kopytov authored
       
      The problem was in incorrect handling of predicates involving 
      NULL as a constant value by the range optimizer. 
       
      For example, when creating a SEL_ARG node from a condition of 
      the form "field < const" (which would normally result in the 
      "NULL < field < const" SEL_ARG),  the special case when "const" 
      is NULL was not taken into account, so "NULL < field < NULL" 
      was produced for the "field < NULL" condition. 
       
      As a result, SEL_ARG structures of this form could not be 
      further optimized which in turn could lead to incorrectly 
      constructed SEL_ARG trees. In particular, code assuming SEL_ARG 
      structures to always form a sequence of ordered disjoint 
      intervals could enter an infinite loop under some 
      circumstances. 
       
      Fixed by changing get_mm_leaf() so that for any sargable 
      predicate except "<=>" involving NULL as a constant, "empty" 
      SEL_ARG is returned, since such a predicate is always false. 
      
      mysql-test/r/partition_pruning.result:
        Fixed a broken test case.
      mysql-test/r/range.result:
        Added a test case for bug #47123.
      mysql-test/r/subselect.result:
        Fixed a broken test cases.
      mysql-test/t/range.test:
        Added a test case for bug #47123.
      sql/opt_range.cc:
        Fixed get_mm_leaf() so that for any sargable
        predicate except "<=>" involving NULL as a constant, "empty"
        SEL_ARG is returned, since such a predicate is always false.
      62007189
    • Joerg Bruehe's avatar
      f7831d7c
    • Joerg Bruehe's avatar
      Upmerge a merge changeset. · bad7108e
      Joerg Bruehe authored
      bad7108e
    • Joerg Bruehe's avatar
      Upmerge merge changesets. · ed7a74be
      Joerg Bruehe authored
      ed7a74be
    • Joerg Bruehe's avatar
      Merge a compile fix. · 8bb87c0d
      Joerg Bruehe authored
      8bb87c0d
    • Georgi Kodinov's avatar
      merge · d02ac8cc
      Georgi Kodinov authored
      d02ac8cc
    • Joerg Bruehe's avatar
      90871e02
    • Joerg Bruehe's avatar
      15612306
    • Joerg Bruehe's avatar
      4c51ee51
    • Joerg Bruehe's avatar
      d4cb54c7
    • Joerg Bruehe's avatar
      Compile fix for Windows: · 789bc510
      Joerg Bruehe authored
      Use "#ifdef", not plain "#if".
      789bc510
    • Martin Hansson's avatar
      Bug#46019: ERROR 1356 When selecting from within another · 8ac7c311
      Martin Hansson authored
                  view that has Group By
            
      When SELECT'ing from a view that mentions another,
      materialized, view, access was being denied. The issue was
      resolved by lifting a special case which avoided such access
      checking in check_single_table_access. In the past, this was
      necessary since if such a check were performed, the error
      message would be downgraded to a warning in the case of SHOW
      CREATE VIEW. The downgrading of errors was meant to handle
      only that scenario, but could not distinguish the two as it
      read only the error messages.
            
      The special case was needed in the fix of bug no 36086.
      Before that, views were confused with derived tables.
            
      After bug no 35996 was fixed, the manipulation of errors
      during SHOW CREATE VIEW execution is not dependent on the
      actual error messages in the queue, it rather looks at the
      actual cause of the error and takes appropriate
      action. Hence the aforementioned special case is now
      superfluous and the bug is fixed.
      
      
      mysql-test/r/view_grant.result:
        Bug#46019: Test result.
      mysql-test/t/view_grant.test:
        Bug#46019: Test case.
      sql/sql_parse.cc:
        Bug#46019: fix.
      8ac7c311
    • Georgi Kodinov's avatar
      Bug #40877: multi statement execution fails in 5.1.30 · 9c6668d6
      Georgi Kodinov authored
            
      Implemented the server infrastructure for the fix:
      
      1. Added a function LEX_STRING *thd_query_string(THD) to return
      a LEX_STRING structure instead of char *.
      This is the function that must be called in innodb instead of 
      thd_query()
      
      2. Did some encapsulation in THD : aggregated thd_query and 
      thd_query_length into a LEX_STRING and made accessor and mutator 
      methods for easy code updating. 
      
      3. Updated the server code to use the new methods where applicable.
      9c6668d6
    • Joerg Bruehe's avatar
      494623ab
    • Georgi Kodinov's avatar
      merge · 2605f94a
      Georgi Kodinov authored
      2605f94a
    • Georgi Kodinov's avatar
  5. 15 Oct, 2009 8 commits
  6. 14 Oct, 2009 8 commits