1. 01 Nov, 2011 3 commits
    • unknown's avatar
      Fix bug lp:833702 · 64986873
      unknown authored
      Analysis:
      Equality propagation propagated the constant '7' into
      args[0] of the Item_in_optimizer that stands for the
      "< ANY" predicate. At the same the min/max subquery
      rewrite swapped the order of the left and right operands
      of the "<" predicate, but used Item_in_subselect::left_expr.
      
      As a result, when the <ANY predicate is executed early in the
      execution phase as a contant condition, instead of a constant
      right (swapped) argument of the < predicate, there was a field
      (t3.a). This field had no data, since the whole predicate is
      considered constant, and it is evaluated before any tables are
      read. Having junk in the field row buffer produced wrong result
      
      Solution:
      Fix create_swap to pick the correct Item_in_optimizer left
      argument.
      64986873
    • unknown's avatar
      Fix of typo. · 9c5644e6
      unknown authored
      9c5644e6
    • Sergey Petrunya's avatar
      BUG#884631: Table elimination works 5.3 release builds even if turned off · acb2d4aa
      Sergey Petrunya authored
      - Make table elimination to actually switch itself on/off in release builds.
      acb2d4aa
  2. 31 Oct, 2011 1 commit
    • Sergey Petrunya's avatar
      BUG#882994: Crash in QUICK_RANGE_SELECT::reset with derived_with_keys · 57b3fefa
      Sergey Petrunya authored
      - The bug was caused by the following scenario:
        = a quick select is created with get_quick_select_for_ref. The quick 
          select refers to temporary (derived) table. It saves table->file, which
          refers to a ha_heap object.
        = When temp table is populated, ha_heap reaches max. size and is converted
          to a ha_myisam.  However, quick->file remains pointing to where ha_heap 
          was. 
        = Attempt to use the quick select causes crash.
      - Fixed by introducing QUICK_SELECT_I::replace_handler(). Note that it will 
        not work for index_merge quick selects. Which is fine, because these
        quick selects are never created for derived tables.
      57b3fefa
  3. 28 Oct, 2011 2 commits
  4. 27 Oct, 2011 4 commits
  5. 26 Oct, 2011 3 commits
    • Michael Widenius's avatar
      Fixed lp:879939 "assertion in ha_maria::enable_indexes with derived_with_keys=on" · fa36a742
      Michael Widenius authored
      Honor unique/not unique when creating keys for internal tempory tables.
      Added new variables to be used to limit how keys are created for internal temporary tables.
      
      
      include/maria.h:
        Added maria_max_key_length() and maria_max_key_segments()
      include/myisam.h:
        Added myisam_max_key_length() and myisam_max_key_segments()
      mysql-test/r/mysql.result:
        Drop all used tables
      mysql-test/r/subselect4.result:
        Added test case for lp:879939
      mysql-test/t/mysql.test:
        Drop all used tables
      mysql-test/t/subselect4.test:
        Added test case for lp:879939
      sql/mysql_priv.h:
        Added internal_tmp_table_max_key_length and internal_tmp_table_max_key_segments to be used to limit how keys for derived tables are created.
      sql/mysqld.cc:
        Added internal_tmp_table_max_key_length and internal_tmp_table_max_key_segments to be used to limit how keys for derived tables are created.
      sql/share/errmsg.txt:
        Added new error message for internal errors
      sql/sql_select.cc:
        Give error if we try to create a wrong key (this error should never happen)
        Honor unique/not unique when creating keys for internal tempory tables.
      storage/maria/ha_maria.cc:
        Added change_table_ptr() to ensure that external_ref points always to the correct table.
        (Not having this caused an assert in the included test)
      storage/maria/ha_maria.h:
        Added change_table_ptr() to ensure that external_ref points always to the correct table.
      storage/maria/ma_check.c:
        Fixed bug in Duplicate key error printing (now row position is printed correctly)
      storage/maria/ma_create.c:
        maria_max_key_length() -> _ma_max_key_length()
      storage/maria/ma_info.c:
        Added extern function maria_max_key_length() to calculate the max key length based on current block size.
      storage/maria/ma_open.c:
        maria_max_key_length() -> _ma_max_key_length()
      storage/maria/maria_def.h:
        maria_max_key_length() -> _ma_max_key_length()
      storage/myisam/ha_myisam.cc:
        Added change_table_ptr() to ensure that external_ref points always to the correct table.
        (Not having this caused an assert in the included test)
      storage/myisam/ha_myisam.h:
        Added change_table_ptr() to ensure that external_ref points always to the correct table.
      fa36a742
    • Igor Babaev's avatar
      Fixed LP bug #881449. · 16942bc5
      Igor Babaev authored
      The function SELECT_LEX::update_used_tables first must clean up
      all bitmaps to be recalculated for all tables that require it
      and only after this walk through on conditions attached to the
      tables to update these bitmaps.
        
      16942bc5
    • Sergey Petrunya's avatar
      Merge fix for BUG#877288 · fbcff7a4
      Sergey Petrunya authored
      fbcff7a4
  6. 25 Oct, 2011 2 commits
    • Sergey Petrunya's avatar
      BUG#877288: Wrong result with semijoin + materialization + multipart key · 8e6440df
      Sergey Petrunya authored
      - when create_ref_for_key() is constructing a ref access for
        a table that's inside a SJ-Materialization nest, it may not 
        use references to fields of tables that are unside the nest (because 
        these fields will not yet have values when ref access will be used)
        
        The check was performed in the first of create_ref_for_key's loops (the 
        one which counts how many key parts are usable) but not in the second
        (the one which actually fills the TABLE_REF structure). 
      8e6440df
    • Igor Babaev's avatar
      Fixed LP bug #881318. · a8f7c03c
      Igor Babaev authored
      If a materialized derived table / view is empty then for this table
      the value of file->ref is 0. This was not taken into account by
      the function JOIN_CACHE::write_record_data. As a result a query
      using an empty materialized derived tables as inner tables of outer
      joins and IN subqueries in WHERE conditions could cause server crashes
      when the optimizer employed join caches and duplicate elimination for
      semi-joins.
      a8f7c03c
  7. 24 Oct, 2011 1 commit
  8. 23 Oct, 2011 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #879882. · 391c5db1
      Igor Babaev authored
      This bug happened because the function Item_cond::eval_not_null_tables
      erroneously did not initialize the value of not_null_tables_cache.
      391c5db1
  9. 22 Oct, 2011 2 commits
    • Igor Babaev's avatar
      Fixed LP bug #878769. · 2b173bf8
      Igor Babaev authored
      The method DsMrr_impl::dsmrr_init erroneously tried to get a KEY descriptor
      for key with number MAX_KEY. This caused valgrind complains.
      2b173bf8
    • Igor Babaev's avatar
      Fixed LP bug #874378. · fdf789a7
      Igor Babaev authored
      This bug happened for the queries over multi-table mergeable views
      because the bitmap TABLE::read_set of the underlying tables were not
      updated after the views had been merged into the query.
      Now this bitmaps are updated properly.
      Also the bitmap TABLE::merge_keys now is updated in prevention of
      future bugs.
      fdf789a7
  10. 20 Oct, 2011 4 commits
    • Igor Babaev's avatar
    • Igor Babaev's avatar
      Fixed LP bug #878199. · e7a7e2a0
      Igor Babaev authored
      The function JOIN::drop_unused_derived_keys could erroneously set
      the value of REF::key to 0 for a joined materialized view/derived table
      in the case when no REF access to the table was used by the query
      execution plan. This could cause a crash of the server.
      e7a7e2a0
    • Igor Babaev's avatar
      Merge. · 0e4d88f1
      Igor Babaev authored
      0e4d88f1
    • Igor Babaev's avatar
      Fixed LP bug #877316. · 945f12cf
      Igor Babaev authored
      This bug happened due to incompleteness of the fix for bug 872735:
      the occurrences of the fields in the conditions of correlated
      subqueries were not taken into account when recalculating
      covering keys bit maps.
      945f12cf
  11. 19 Oct, 2011 3 commits
  12. 18 Oct, 2011 3 commits
  13. 17 Oct, 2011 2 commits
  14. 16 Oct, 2011 3 commits
    • Igor Babaev's avatar
      Fixed LP bug #874006. · f5955f87
      Igor Babaev authored
      This bug manifested itself with queries containing non-correlated
      IN subqueries over materialized views/derived tables.  
      The bug happened because the code of the function generate_derived_keys did
      not take into account that the function could be called twice when the
      optimizer was deciding whether in-exist transformation should be applied.
      f5955f87
    • Michael Widenius's avatar
      Remove extra MariaDB- from binary tar.gz file name · d5959780
      Michael Widenius authored
      Print server version name to .err file on crash 
      
      scripts/make_binary_distribution.sh:
        Remove extra MariaDB- from binary tar.gz file name
      sql/mysqld.cc:
        Print server version name to .err file on crash (to ensure people paste also that when they report a crash)
      d5959780
    • Michael Widenius's avatar
      Fixed wrong info message for mysqld --general-log · e3e60a41
      Michael Widenius authored
      Fixed wrong parameter type for --general-log. Now one can enable it with --general-log= 1 | true | on
      Fixed that bool parameters can also take 'on' and 'off' as parameters. This is in line with the values assigned to them in mysqld.
      
      
      mysys/my_getopt.c:
        Fixed that bool parameters can also take 'on' and 'off' as parameters.
      sql/mysqld.cc:
        Fixed wrong info message for mysqld --general-log
        Fixed wrong parameter type for --general-log. Now one can enable it with --general-log= 1 | true | on
      e3e60a41
  15. 14 Oct, 2011 5 commits
  16. 13 Oct, 2011 1 commit