1. 21 Feb, 2014 1 commit
    • Igor Babaev's avatar
      After constant row substitution the optimizer should call the method · 3e03c9ea
      Igor Babaev authored
      update_used_tables for the the where condition to update cached
      indicators of constant subexpressions. It should be done before further
      possible simplification of the where condition.
      
      This change caused simplification of the executed where conditions 
      in many test cases.
      3e03c9ea
  2. 19 Feb, 2014 4 commits
    • Sergey Petrunya's avatar
      Backport the following from 5.5 to 5.3: · 6ebaa493
      Sergey Petrunya authored
      MDEV-4556 Server crashes in SEL_ARG::rb_insert with index_merge+index_merge_sort_union, FORCE INDEX
      - merge_same_index_scans() may put the same SEL_ARG tree in multiple result plans.
        make it call incr_refs() on the SEL_ARG trees that it does key_or() on, because 
        key_or(sel_arg_tree_1, sel_arg_tree_2) call may invalidate SEL_ARG trees pointed 
        by sel_arg_tree_1 and sel_arg_tree_2.
          
      6ebaa493
    • Sergey Petrunya's avatar
      Fix compile failure: · ddc21f79
      Sergey Petrunya authored
      In function ‘void* memset(void*, int, size_t)’,
          inlined from ‘void Lifo_buffer::set_buffer_space(uchar*, uchar*)’ at sql_lifo_buffer.h:70:5,
          inlined from ‘int DsMrr_impl::dsmrr_init(handler*, RANGE_SEQ_IF*, void*, uint, uint, HANDLER_BUFFER*)’ at multi_range_read.cc:895:62:
      /usr/include/i386-linux-gnu/bits/string3.h:82:32: error: call to ‘__warn_memset_zero_len’ declared with attribute warning: memset used with constant zero length parameter; this could be due to transposed parameters [-Werror]
      
      It was intentional that the buffer is set to zero length there.
      ddc21f79
    • Sergey Petrunya's avatar
      Add a debugger helper function that does this: · 260c802e
      Sergey Petrunya authored
      (gdb) p dbug_print_table_row(table)
        $33 = "SUBQUERY2_t1(col_int_key,col_varchar_nokey)=(7,c)"
      260c802e
    • Sergey Petrunya's avatar
      MDEV-5600: Wrong result on 2nd execution of PS depending on the length of the query · 097b6440
      Sergey Petrunya authored
      - Item_direct_view_ref didn't clear its pointer to item_equal in ::cleanup.
      - Some Item_direct_view_ref objects have statement lifetime (i.e. they
        survive across multiple EXECUTE commands). Item_equal objects live only for
        the duration of one EXECUTE. This caused Item_direct_view_ref to have a stale pointer,
        which could cause all sorts of effects. (In this bug's testcase it was pointing to
        the wrong Item_equal, causing wrong query result)
      - Fixed by doing what Item_field::cleanup() does - don't keep item_equal pointer value.
      - There is no testcase because the only testcase I've got is highly fragile (e.g. the
        bug will not show up if @@datadir is of the wrong length).
      097b6440
  3. 18 Feb, 2014 2 commits
  4. 14 Feb, 2014 5 commits
  5. 13 Feb, 2014 6 commits
  6. 12 Feb, 2014 1 commit
  7. 08 Feb, 2014 1 commit
  8. 07 Feb, 2014 3 commits
  9. 06 Feb, 2014 1 commit
    • Igor Babaev's avatar
      Fixed bug mdev-5468. · 5b441013
      Igor Babaev authored
      The field JOIN::select_lex->where should be updated after the call
      of remove_eq_conds() in the function make_join_statistics(). This
      matters for subselects.
      5b441013
  10. 28 Jan, 2014 5 commits
  11. 27 Jan, 2014 1 commit
  12. 24 Jan, 2014 2 commits
    • Sergey Petrunya's avatar
      [Backport to 5.3] · 669c6620
      Sergey Petrunya authored
      MDEV-5337: Wrong result in mariadb 5.5.32 with ORDER BY + LIMIT when 
      index_condition_pushdown=on
      - in test_if_skip_sort_order(), correct the condition under which
        we have the code that restores the previously pushed index condition.
      669c6620
    • Alexander Barkov's avatar
      MDEV-5504 Server crashes in String::length on SELECT with MONTHNAME, GROUP BY, ROLLUP · d106dc05
      Alexander Barkov authored
      The crash happened because Item_func_monthname was derived from
      Item_func_month, so Item_func_monthname::is_null() did not work fine.
      Backporting a change from 5.5: Item_func_monthname is now derived from
      Item_str_func.
      d106dc05
  13. 23 Jan, 2014 3 commits
    • Sergey Petrunya's avatar
      MDEV-5368: Server crashes in Item_in_subselect::optimize on ... · 519c7305
      Sergey Petrunya authored
      - convert_subq_to_sj() must connect child select's tables into 
        parent select's TABLE_LIST::next_local chain.  
      - The problem was that it took child's leaf_tables.head() which
        is different. This could cause certain tables (in this bug's case,
        child select's non-merged semi-join) not to be present in 
        TABLE_LIST::next_local chain.  Which would cause non-merged semi-join
        not to be initialized in setup_tables(), which would lead to 
        NULL pointer dereference.
      519c7305
    • unknown's avatar
      merge of MDEV-5356 5.1->5.3 (with more fixes and test suite). · d9cb1352
      unknown authored
      THD::thd->activate_stmt_arena_if_needed() should be used to temporary activating statement arena instead of direct usage of THD::set_n_backup_active_arena() because possible such scenario:
        1) func1 saves current arena and activates copy1 of statement arena
        2) func2 saves copy1 of statement arena setup by func1 and activates copy2
        3) some changes made for copy 2
        4) func2 stores changed copy2 back to statenet arena and activates copy1
        5) func1 store unchanged copy1 back to statemnt arena (rewrite changed copy 2 so changes become lost) and activates arena which was before.
      d9cb1352
    • unknown's avatar
      MDEV-5356: Server crashes in Item_equal::contains on 2nd execution of a PS · 5f5f7bef
      unknown authored
      THD::thd->activate_stmt_arena_if_needed() should be used to temporary activating statement arena instead of direct usage of THD::set_n_backup_active_arena() because possible such scenario:
        1) func1 saves current arena and activates copy1 of statement arena
        2) func2 saves copy1 of statement arena setup by func1 and activates copy2
        3) some changes made for copy 2
        4) func2 stores changed copy2 back to statenet arena and activates copy1
        5) func1 store unchanged copy1 back to statemnt arena (rewrite changed copy 2 so changes become lost) and activates arena which was before.
      5f5f7bef
  14. 21 Jan, 2014 2 commits
  15. 20 Jan, 2014 2 commits
  16. 13 Jan, 2014 1 commit