An error occurred fetching the project authors.
  1. 27 Jan, 2012 1 commit
    • Sergey Petrunya's avatar
      BUG#922254: Assertion `0' failed at item_cmpfunc.cc:5899: Item*... · 545ee974
      Sergey Petrunya authored
      BUG#922254: Assertion `0' failed at item_cmpfunc.cc:5899: Item* Item_equal::get_first(JOIN_TAB*, Item*)
      Fixed Item* Item_equal::get_first(JOIN_TAB *context, Item *field_item) to work correctly in the case where:
      - context!= NO_PARTICULAR_TAB, it points to a table within SJ-Materialization nest
      - field_item points to an item_equal that has a constant Item_field but does not have any fields
        from tables that are within semi-join nests.
      
      
      
      545ee974
  2. 19 Jan, 2012 1 commit
    • Sergey Petrunya's avatar
      BUG#912513: Wrong result (missing rows) with join_cache_hashed+materialization+semijoin=on · 6a62f42a
      Sergey Petrunya authored
      - equality substitution code was geared towards processing WHERE/ON clauses.
        that is, it assumed that it was doing substitions on the code that 
         = wasn't attached to any particular join_tab yet
         = was going to be fed to make_join_select() which would take the condition
           apart and attach various parts of it to tables inside/outside semi-joins.
      - However, somebody added equality substition for ref access. That is, if 
        we have a ref access on TBL.key=expr, they would do equality substition in
        'expr'. This possibility wasn't accounted for.
      - Fixed equality substition code by adding a mode that does equality 
        substition under assumption that the processed expression will be 
        attached to a certain particular table TBL.
      6a62f42a
  3. 13 Nov, 2011 1 commit
  4. 01 Nov, 2011 1 commit
  5. 26 Oct, 2011 1 commit
  6. 02 Nov, 2011 1 commit
  7. 23 Oct, 2011 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #879882. · 568d3427
      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.
      568d3427
  8. 18 Oct, 2011 1 commit
  9. 13 Oct, 2011 1 commit
  10. 22 Sep, 2011 1 commit
  11. 07 Sep, 2011 1 commit
  12. 05 Sep, 2011 1 commit
    • unknown's avatar
      Fix of LP BUG#780386. · 9625b891
      unknown authored
        
        ALL subquery should return TRUE if subquery rowa set is empty independently
        of left part.  The problem was that Item_func_(eq,ne,gt,ge,lt,le) do not
        call execution of second argument if first is NULL no in this case subquery
        will not be executed and when Item_func_not_all calls any_value() of the
        subquery or aggregation function which report that there was rows. So for
        NULL < ALL (SELECT...) result was FALSE instead of TRUE.
        
        Fix is just swapping of arguments of Item_func_(eq,ne,gt,ge,lt,le) (with
        changing the operation if it is needed) so that result will be the same
        (for examole a < b is equal to b > a). This fix exploit the fact that
        first argument will be executed in any case.
      9625b891
  13. 29 Aug, 2011 1 commit
    • Sergey Petrunya's avatar
      BUG#834534: Assertion `0' failed in replace_where_subcondition with semijoin subquery in HAVING · 69b68761
      Sergey Petrunya authored
      - The problem was that the code that made the check whether the subquery is an AND-part of the WHERE 
        clause didn't work correctly for nested subqueries. In particular, grand-child subquery in HAVING was 
        treated as if it was in the WHERE, which eventually caused an assert when replace_where_subcondition
        looked for the subquery predicate in the WHERE and couldn't find it there.
      
      - The fix: Removed implementation of "thd_marker approach". thd->thd_marker was used to determine the 
        location of subquery predicate: setup_conds() would set accordingly it when making the 
      
          {where|on_expr}->fix_fields(...)
      
        call so that AND-parts of the WHERE/ON clauses can determine they are the AND-parts. 
        Item_cond_or::fix_fields(), Item_func::fix_fields(), Item_subselect::fix_fields (this one was missed),
        and all other items-that-contain-items had to reset thd->thd_marker before calling fix_fields() for 
        their children items, so that the children can see they are not AND-parts of WHERE/ON.
      - The "thd_marker approach" required that a lot of code in different locations maintains correct value of
        thd->thd_marker, so it was replaced with:
      - The new approach with mark_as_condition_AND_part does not keep context in thd->thd_marker. Instead, 
        setup_conds() now calls
      
          {where|on_expr}->mark_as_condition_AND_part()
      
        and implementations of that function make sure that: 
         - parts of AND-expressions get the mark_as_condition_AND_part() call
         - Item_in_subselect objects record that they are AND-parts of WHERE/ON
      69b68761
  14. 23 Aug, 2011 1 commit
    • unknown's avatar
      Fixed bug lp:825018 · 291ab712
      unknown authored
      Analysis:
      During the first execution of the query through the stored
      procedure, the optimization phase calls
      substitute_for_best_equal_field(), which calls
      Item_in_optimizer::transform(). The latter replaces
      Item_in_subselect::left_expr with args[0] via assignment.
      In this test case args[0] is an Item_outer_ref which is
      created/deallocated for each re-execution. As a result,
      during the second execution Item_in_subselect::left_expr
      pointed to freed memory, which resulted in a crash.
      
      Solution:
      The solution is to use change_item_tree(), so that the
      origianal left expression is restored after each execution.
      291ab712
  15. 19 Aug, 2011 1 commit
  16. 17 Aug, 2011 1 commit
    • unknown's avatar
      Fix bug lp:813473 · 4dfa8e5d
      unknown authored
      The bug is a duplicate of MySQL's Bug#11764086,
      however MySQL's fix is incomplete for MariaDB, so
      this fix is slightly different.
      
      In addition, this patch renames
      Item_func_not_all::top_level() to is_top_level_item()
      to make it in line with the analogous methods of
      Item_in_optimizer, and Item_subselect.
      
      Analysis:
      It is possible to determine whether a predicate is
      NULL-rejecting only if it is a top-level one. However,
      this was not taken into account for Item_in_optimizer.
      As a result, a NOT IN predicate was erroneously
      considered as NULL-rejecting, and the NULL-complemented
      rows generated by the outer join were rejected before
      being checked by the NOT IN predicate.
      
      Solution:
      Change Item_in_optimizer to be considered as
      NULL-rejecting only if it a top-level predicate.
      4dfa8e5d
  17. 20 Jul, 2011 1 commit
    • unknown's avatar
      Fix of LP BUG#780386. · 73003814
      unknown authored
      ALL subquery should return TRUE if subquery rowa set is empty independently
      of left part.  The problem was that Item_func_(eq,ne,gt,ge,lt,le) do not
      call execution of second argument if first is NULL no in this case subquery
      will not be executed and when Item_func_not_all calls any_value() of the
      subquery or aggregation function which report that there was rows. So for
      NULL < ALL (SELECT...) result was FALSE instead of TRUE.
      
      Fix is just swapping of arguments of Item_func_(eq,ne,gt,ge,lt,le) (with
      changing the operation if it is needed) so that result will be the same
      (for examole a < b is equal to b > a). This fix exploit the fact that
      first argument will be executed in any case.
      
      mysql-test/r/subselect.result:
        The test suite added.
      mysql-test/r/subselect_no_mat.result:
        The test suite added.
      mysql-test/r/subselect_no_opts.result:
        The test suite added.
      mysql-test/r/subselect_no_semijoin.result:
        The test suite added.
      mysql-test/r/subselect_scache.result:
        The test suite added.
      mysql-test/t/subselect.test:
        The test suite added.
      sql/item_cmpfunc.cc:
        Swap arguments creation methods added.
      sql/item_cmpfunc.h:
        Swap arguments creation methods added.
      sql/item_subselect.cc:
        Swap arguments of the comparison.
      73003814
  18. 19 Jul, 2011 1 commit
    • unknown's avatar
      Fixed LP BUG#800696. · 01cf947c
      unknown authored
      The problem was that optimizer removes some outer references (it they are
      constant for example) and the list of outer items built during prepare phase is
      not actual during execution phase when we need it as the cache parameters.
      First solution was use pointer on pointer on outer reference Item and
      initialize temporary table on demand. This solved most problem except case
      when optimiser also reduce Item which contains outer references ('OR' in
      this bug test suite).
      
      The solution is to build the list of outer reference items on execution
      phase (after optimization) on demand (just before temporary table creation)
      by walking Item tree and finding outer references among Item_ident
      (Item_field/Item_ref) and Item_sum items.
      
      Removed depends_on list (because it is not neede any mnore for the cache, in the place where it was used it replaced with upper_refs).
      
      Added processor (collect_outer_ref_processor) and get_cache_parameters() methods to collect outer references (or other expression parameters in future).
      
      mysql-test/r/subselect_cache.result:
        A new test added.
      mysql-test/r/subselect_scache.result:
        Changes in creating the cache and its paremeters order or adding arguments of aggregate function (which is a parameter also, but this has no influence on the result).
      mysql-test/t/subselect_cache.test:
        Added a new test.
      sql/item.cc:
        depends_on removed.
        
        Added processor (collect_outer_ref_processor) and get_cache_parameters() methods to collect outer references.
        
        Item_cache_wrapper collect parameters befor initialization of its cache.
      sql/item.h:
        depends_on removed.
        
        Added processor (collect_outer_ref_processor) and get_cache_parameters() methods to collect outer references.
      sql/item_cmpfunc.cc:
        depends_on removed.
        
        Added processor (collect_outer_ref_processor) to collect outer references.
      sql/item_cmpfunc.h:
        Added processor (collect_outer_ref_processor) to collect outer references.
      sql/item_subselect.cc:
        depends_on removed.
        Added processor get_cache_parameters() method to collect outer references.
      sql/item_subselect.h:
        depends_on removed.
        Added processor get_cache_parameters() method to collect outer references.
      sql/item_sum.cc:
        Added processor (collect_outer_ref_processor) method to collect outer references.
      sql/item_sum.h:
        Added processor (collect_outer_ref_processor) and get_cache_parameters() methods to collect outer references.
      sql/opt_range.cc:
        depends_on removed.
      sql/sql_base.cc:
        depends_on removed.
      sql/sql_class.h:
        New iterator added.
      sql/sql_expression_cache.cc:
        Build of list of items resolved in outer query done just before creating expression cache on the first execution of the subquery which removes influence of optimizer removing items (all optimization already done).
      sql/sql_expression_cache.h:
        Build of list of items resolved in outer query done just before creating expression cache on the first execution of the subquery which removes influence of optimizer removing items (all optimization already done).
      sql/sql_lex.cc:
        depends_on removed.
      sql/sql_lex.h:
        depends_on removed.
      sql/sql_list.h:
        Added add_unique method to add only unique elements to the list.
      sql/sql_select.cc:
        Support of new Item list added.
      sql/sql_select.h:
        Support of new Item list added.
      01cf947c
  19. 11 Jul, 2011 1 commit
    • Sergey Petrunya's avatar
      Port of code for: (part of testcase is in mysql-test/t/subquery*.test and will... · 0ef2f743
      Sergey Petrunya authored
      Port of code for: (part of testcase is in mysql-test/t/subquery*.test and will be ported separately)
      
      Bug#11766642: crash in Item_field::register_field_in_read_map 
                    with view
      
      (Former 59793)
      
      Prior to the refactoring in this patch, Item_cond_xor behaved 
      partially as an Item_cond and partially as an Item_func. The
      reasoning behind this was that XOR is currently not optimized
      (thus should be Item_func instead of Item_cond), but it was 
      planned optimize it in the future (thus, made Item_cond anyway 
      to ease optimization later). 
      
      Even though Item_cond inherits from Item_func, there are 
      differences between these two. One difference is that the 
      arguments are stored differently. Item_cond stores them in a 
      list while Item_func store them in an args[]. 
      
      BUG no 45221 was caused by Item_cond_xor storing arguments in 
      the list while users of the objects would look for them in 
      args[]. The fix back then was to store the arguments in both 
      locations.
      
      In this bug, Item_cond_xor initially gets two Item_field 
      arguments. These are stored in the list inherited from 
      Item_cond and in args[] inherited from Item_func. During
      resolution, find_field_in_view() replaces the Item_fields 
      stored in the list with Item_direct_view_refs, but args[] 
      still points to the unresolved Item_fields. This shows that 
      the fix for 45221 was incorrect.
      
      The refactoring performed in this patch removes the confusion
      by making the XOR item an Item_func period. A neg_transformer() 
      is also implemented for Item_func_xor to improve performance 
      when negating XOR expressions. An XOR is negated by negating 
      one of the operands.
      0ef2f743
  20. 07 Jul, 2011 1 commit
    • unknown's avatar
      Fix bug lp:806943 · 1921ec69
      unknown authored
      Analysis:
      This bug is yet another incarnation of the generic problem
      where optimization of the outer query triggers evaluation
      of a subquery, and this evaluation performs a destructive
      change to the subquery plan. Specifically a temp table is
      created for the DISTINCT operation that replaces the
      original subquery table. Later, select_describe() attempts
      to print the table name, however, there is no corresponding
      TABLE_LIST object to the internal temp table, so we get a
      crash. Execution works fine because it is not interested in
      the corresponding TABLE_LIST object (or its name).
      
      Solution:
      Similar to other such bugs, block the evaluation of expensive
      Items in convert_const_to_int().
      1921ec69
  21. 02 Jul, 2011 1 commit
  22. 30 Jun, 2011 1 commit
  23. 21 Jun, 2011 1 commit
    • Alexander Nozdrin's avatar
      Patch for Bug 12652769 - 61470: CASE OPERATOR IN STORED ROUTINE RETAINS · 2385f627
      Alexander Nozdrin authored
      OLD VALUE OF INPUT PARAMETER.
      
      The user-visible problem was that CASE-control-flow function
      (not CASE-statement) misbehaved in stored routines under some
      circumstances. The problem resulted in a crash or wrong data
      returned. The error happened when expressions in CASE-function
      were not of the same character set.
      
      A CASE-function should return values of the same character set
      for all branches. Internally, that means a new Item-instance
      for the CONVERT(... USING <some charset>)-function is added
      to the item tree when needed. The problem was that such changes
      were not properly recorded using THD::change_item_tree(),
      thus dangling pointers remain in the item tree after
      THD::rollback_item_tree_changes(), which lead to undefined
      behavior (i.e. crash / wrong data) for subsequent executions of
      the stored routine.
      
      This bug was introduced by a patch for Bug 11753363
      (44793 - CHARACTER SETS: CASE CLAUSE, UCS2 OR UTF32, FAILURE).
      
      The fixed function is Item_func_case::fix_length_and_dec().
      New CONVERT-items are added in agg_item_set_converter(),
      which calls THD::change_item_tree().
      
      The problem was that an intermediate array was passed
      to agg_item_set_converter(). Thus, THD::change_item_tree() there
      was called on intermediate objects.
      
      Note: those intermediate objects are allocated on THD's
      memory root, so it's Ok to put them into "changed item lists".
      
      The fix is to track changes on the correct objects.
      2385f627
  24. 09 Jun, 2011 1 commit
    • Sergei Golubchik's avatar
      bugfixes: · aeb256fb
      Sergei Golubchik authored
        microsecond(TIME)
        alter table datetime<->datetime(6)
        max(TIME), mix(TIME) 
      
      mysql-test/t/func_if.test:
        fix the test case of avoid overflow
      sql/field.cc:
        don't use make_date() and make_time()
      sql/field.h:
        correct eq_def() for temporal fields
      sql/item.cc:
        move datetime caching from Item_cache_int
        to Item_cache_temporal
      sql/item.h:
        move datetime caching from Item_cache_int
        to Item_cache_temporal
      sql/item_func.cc:
        use existing helper methods, don't duplicate
      sql/item_sum.cc:
        argument cache must use argument's cmp_type, not result_type.
      sql/item_timefunc.cc:
        use existing methods, don't tuplicate.
        remove unused function.
        fix micorseconds() to support TIME argument
      sql/mysql_priv.h:
        dead code
      sql/time.cc:
        dead code
      aeb256fb
  25. 06 Jun, 2011 2 commits
    • Sergei Golubchik's avatar
      revert a suggested "optimization" that introduced a bug · 8c52df67
      Sergei Golubchik authored
      compilation error in mysys/my_getsystime.c fixed
      some redundant code removed
      sec_to_time, time_to_sec, from_unixtime, unix_timestamp, @@timestamp now
        use decimal, not double for numbers with a fractional part.
      purge_master_logs_before_date() fixed
      many bugs in corner cases fixed
      
      mysys/my_getsystime.c:
        compilation failure fixed
      sql/sql_parse.cc:
        don't cut corners. it backfires.
      8c52df67
    • Michael Widenius's avatar
      Fixed lock sorting and lock check issues with thr_lock that caused warnings... · ea22ad95
      Michael Widenius authored
      Fixed lock sorting and lock check issues with thr_lock that caused warnings when running test suite.
      Safety check that could cause core dump when doing create table with virtual column.
      
      mysql-test/mysql-test-run.pl:
        Show also warnings from thr_lock (which starts with just Warning, not Warning:)
      mysql-test/r/lock.result:
        Added test that showed not relevant warning when using table locks.
      mysql-test/t/lock.test:
        Added test that showed not relevant warning when using table locks.
      mysys/thr_lock.c:
        Fixed sorting of locks.
        (Old sort code didn't handle case where TL_WRITE_CONCURRENT_INSERT must be sorted before TL_WRITE)
        Added more information to check_locks warning output.
        Fixed wrong testing of multiple different write locks for same table.
      sql/item_cmpfunc.cc:
        Safety check that could cause core dump when doing create table with virtual column.
      ea22ad95
  26. 23 May, 2011 1 commit
    • unknown's avatar
      MWL#89: Address review feedback (by Sergey Petrunia) · cfff9277
      unknown authored
      mysql-test/r/subselect4.result:
        Moved test case for LP BUG#718593 into the correct test file subselect_mat_cost_bugs.test.
      mysql-test/t/subselect4.test:
        Moved test case for LP BUG#718593 into the correct test file subselect_mat_cost_bugs.test.
      cfff9277
  27. 19 May, 2011 2 commits
    • Sergei Golubchik's avatar
      post review changes 2 · d0fae754
      Sergei Golubchik authored
      sql/event_parse_data.cc:
        don't use "not_used" variable
      sql/item_timefunc.cc:
        Item_temporal_func::fix_length_and_dec()
        and other changes
      sql/item_timefunc.h:
        introducing Item_timefunc::fix_length_and_dec()
      sql/share/errmsg.txt:
        don't say "column X" in the error message that used not only for columns
      d0fae754
    • Sergei Golubchik's avatar
      post-review changes 1 · 404928b9
      Sergei Golubchik authored
      include/my_time.h:
        remove duplicate defines.
        cast to ulonglong to avoid overflow
      sql/field.cc:
        perform sign extension when reading packed TIME values
      sql/item_cmpfunc.cc:
        when converting a string to a date for the purpose of comparing it with another date,
        we should ignore strict sql mode.
      sql/item_timefunc.cc:
        better error message
      sql/item_timefunc.h:
        limit decimals appropriately
      sql/share/errmsg.txt:
        don't refer to an object as a "column" in error messages that are used not only for columns.
      404928b9
  28. 18 May, 2011 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #784281. · 78794f32
      Igor Babaev authored
      When a view is merged into a select all the depended_from fields
      pointing to the select of the view should have been corrected to
      point to the select where the view is used. It was not done yet.
      This could lead to wrong results returned by queries such as
      one from the test case for bug 33389.
      Correction of outer references required walking through all items
      of the proccesed qurery. To avoid this the following solution was
      implemented.
      Each select now contains a pointer to the select it is merged into
      (if there is any). Such pointers allow to get the corrected value
      of depended_from on the fly. The function Item_ident::get_depended_from
      was introduced for this purpose.
      78794f32
  29. 16 May, 2011 1 commit
    • unknown's avatar
      Fix LP BUG#778413 · 2f203da8
      unknown authored
      Analysis:
      The subquery is evaluated first during ref-optimization of the outer
      query because the subquery is considered constant from the perspective
      of the outer query. Thus an attempt is made to evaluate the MAX subquery
      and use the new constant to drive an index nested loops join.
      During this evaluation the inner-most subquery replaces the JOIN_TAB
      with a new one that fetches the data from a temp table.
      The function select_describe crashes at the lines:
              TABLE_LIST *real_table= table->pos_in_table_list; 
      	item_list.push_back(new Item_string(real_table->alias,
      					    strlen(real_table->alias),
      					    cs));
      because 'table' is a temp table, and it has no corresponding table
      reference. This 'real_table' is NULL, and real_table->alias results
      in a crash.
      
      Solution:
      In the spirit of MWL#89 prevent the evaluation of expensive predicates
      during optimization. This patch prevents the evaluation of expensive
      predicates during ref optimization.
      
      
      sql/item_subselect.h:
        Remove unused class member. Not needed for the fix, but noticed now and removed.
      2f203da8
  30. 13 May, 2011 1 commit
    • unknown's avatar
      Fix LP BUG#777597 · 707e66e1
      unknown authored
      Analysis:
      During optimization of the subquery, in the call chain:
      
      update_ref_and_keys -> add_key_fields ->
      merge_key_fields -> Item_direct_ref::is_null -> Item_cache::is_null
      
      The call to Item_cache::is_null() returns TRUE, which is wrong.
      This results in Item_null replacing the field 'f3' in the KEY_FIELD,
      then this Item_null is used for index access, producing a wrong result.
      
      The reason why Item_cache::is_null returns wrong result is that
      this Item_cache object is a cache of the left operand of IN, and was
      updated in Item_in_optimizer::val_int. In MWL#89 the latter method is
      called during the execution phase, which is after we optimize the subquery.
      Therefore during the optization phase the left operand cache of IN was
      not updated.
      
      Solution:
      Update the left operand cache during optimization if it is a constant.
      
      This bug fix also discoveres and fixes a wrong IF statement in
      convert_constant_item().
      707e66e1
  31. 08 May, 2011 1 commit
    • Michael Widenius's avatar
      Adding support for Dynamic columns (WL#34): · 25ad9417
      Michael Widenius authored
      - COLUMN_CREATE(column_nr, value, [column_nr,value]...)
      - COLUMN_ADD(blob,column_nr, value, column_nr,value]...)
      - COLUMN_DELETE(blob, column_nr, column_nr...)
      - COLUMN_EXISTS(blob, column_nr)
      - COLUMN_LIST(blob, column_nr)
      - COLUMN_GET(string, column_nr AS type)
      
      Added cast(X as DOUBLE) and cast(x as INT)
      Better warning and error messages for wrong cast's
      Created some sub functions to simplify and reuse code.
      Added a lot of conversation functions with error/warnings for what went wrong.
      Fixed some issues when casting time to datetime.
      Added functions to dynamic strings and Strings to allow one to move a string buffer from dynamic strings to String (to save malloc+ copy)
      Added dynamic columns library to libmysqlclient
      
      
      include/Makefile.am:
        Added ma_dyncol.h
      include/decimal.h:
        Added 'const' to arguments for some functions.
      include/my_sys.h:
        Added dynstr_reassociate()
      include/my_time.h:
        Added TIME_SUBSECOND_RANGE
        Added double_to_datetime()
        Added flag argument to str_to_time()
      libmysql/CMakeLists.txt:
        Added mysys/ma_dyncol.c
      libmysql/Makefile.shared:
        Added ma_dyncol
      libmysql/libmysql.c:
        Added argument to str_to_time()
      mysql-test/r/bigint.result:
        Better error messages
      mysql-test/r/cast.result:
        Better warning and error messages
        A lot of new cast() tests
      mysql-test/r/func_math.result:
        Better warning messages
      mysql-test/r/func_str.result:
        Better warning messages
      mysql-test/r/func_time.result:
        Better warning messages
      mysql-test/r/sp-vars.result:
        Better warning messages
      mysql-test/r/strict.result:
        Better warning messages
        New test result
      mysql-test/r/type_newdecimal.result:
        Better warning messages
      mysql-test/r/warnings.result:
        Better warning messages
      mysql-test/suite/funcs_1/r/innodb_func_view.result:
        Updated results after better cast warnings
      mysql-test/suite/funcs_1/r/memory_func_view.result:
        Updated results after better cast warnings
      mysql-test/suite/funcs_1/r/myisam_func_view.result:
        Updated results after better cast warnings
      mysql-test/suite/optimizer_unfixed_bugs/t/bug43448.test:
        Added begin...commit to speed up test.
      mysql-test/suite/parts/inc/part_supported_sql_funcs_delete.inc:
        Added begin...commit to speed up test.
      mysql-test/suite/parts/inc/partition_supported_sql_funcs.inc:
        Added begin...commit to speed up test.
      mysql-test/suite/parts/r/part_supported_sql_func_innodb.result:
        Added begin...commit to speed up test.
      mysql-test/suite/parts/r/part_supported_sql_func_myisam.result:
        Added begin...commit to speed up test.
      mysql-test/suite/parts/r/rpl_partition.result:
        Added begin...commit to speed up test.
      mysql-test/suite/parts/t/part_supported_sql_func_innodb.test:
        Removed duplicated --big_test
      mysql-test/suite/parts/t/rpl_partition.test:
        Added begin...commit to speed up test.
      mysql-test/suite/pbxt/r/cast.result:
        Updated results after better cast warnings
      mysql-test/suite/pbxt/r/func_str.result:
        Updated results after better cast warnings
      mysql-test/suite/pbxt/r/type_newdecimal.result:
        Updated results after better cast warnings
      mysql-test/suite/rpl/r/rpl_innodb_bug28430.result:
        Added begin...commit to speed up test.
      mysql-test/suite/rpl/t/rpl_innodb_bug28430.test:
        Added begin...commit to speed up test.
      mysql-test/suite/vcol/r/vcol_supported_sql_funcs_innodb.result:
        More warnings
      mysql-test/suite/vcol/r/vcol_supported_sql_funcs_myisam.result:
        More warnings
      mysql-test/t/cast.test:
        A lot of new cast() tests
      mysql-test/t/strict.test:
        Added new test
      mysys/CMakeLists.txt:
        Added ma_dyncol.c
      mysys/Makefile.am:
        Added ma_dyncol.c
      mysys/string.c:
        Added dynstr_reassociate() to move a buffer from dynamic_strings to some other allocator
      sql-common/my_time.c:
        Added 'fuzzydate' flag to str_to_time()
        Added support for microseconds to my_time_to_str() and my_datetime_to_str()
        Reset second_parts in number_to_datetime()
        Added double_to_datetime()
      sql/field.cc:
        Added double_to_longlong() and truncate_double() to simplify and reuse code
      sql/field.h:
        New prototypes
      sql/item.cc:
        Changed Item::get_date(MYSQL_TIME *ltime,uint fuzzydate) to be aware of type of argument.
        (Needed to make it microsecond safe and get better warnings).
        Updated call to str_to_time_with_warn()
      sql/item.h:
        Added struct st_dyncall_create_def used by dynamic columns
        Added virtual bool dynamic_result() to tell if type of argument may change over calls.
      sql/item_cmpfunc.cc:
        Added Item_func_dyncol_exists()
      sql/item_cmpfunc.h:
        Added class Item_func_dyncol_exists
      sql/item_create.cc:
        Added get_length_and_scale() to simplify other functions
        Simplified and extended create_func_cast()
        Added support for cast(X as double(X,Y))
        Added functions to create dynamic column functions.
      sql/item_create.h:
        Added prototypes
      sql/item_func.cc:
        Extended cast functions Item_func_signed() and Item_func_unsigned() to work with dynamic types
        Added Item_double_typecast()
      sql/item_func.h:
        Added class Item_double_typecast()
      sql/item_strfunc.cc:
        Added functions for COLUMN_CREATE(), COLUMN_ADD(), COLUMN_GET() and COLUMN_LIST()
      sql/item_strfunc.h:
        Added classes for COLUMN_CREATE(), COLUMN_ADD(), COLUMN_GET() and COLUMN_LIST()
      sql/item_timefunc.cc:
        Added flag argument to str_to_time_with_warn()
        Updated Item_char_typecast() to handle result type that may change between calls (for dynamic columns)
        Added Item_time_typecast::get_date() to ensure that we cast a datetime to time properly.
      sql/item_timefunc.h:
        Added get_date() to Item_time_typecast() to allow proper results for casting time to datetime
      sql/lex.h:
        Added new SQL function names
      sql/my_decimal.cc:
        Added 'const' to some arguments.
        Better error message in case of errors (we now print out the wrong value)
        Added my_decimal2int()
      sql/my_decimal.h:
        Moved some constants to my_decimal_limits.h
        Updated prototypes.
        Made my_decimal2int() a function as it's rather long (no reason to have it inline)
        Added decimal2my_decimal() function.
      sql/mysql_priv.h:
        Prototypes for new functions
      sql/share/errmsg.txt:
        New error messages for wrong casts and dynamic columns
      sql/sql_acl.cc:
        Fixed indentation
      sql/sql_base.cc:
        Added dynamic_column_error_message()
      sql/sql_string.h:
        Added reassociate() to move a buffer to be owned by String object.
      sql/sql_yacc.yy:
        Added syntax for COLUMN_ functions.
      sql/time.cc:
        Updated str_to_datetime_with_warn() flag argument to same type as other functions
        Added conversion flag to str_to_time_with_warn() (Similar to all datetime functions)
        Added conversion functions with warnings: double_to_datetime_with_warn() and decimal_to_datetime_with_warn()
      strings/decimal.c:
        Added 'const' to arguments for some functions.
      unittest/mysys/Makefile.am:
        Added test for dynamic columns code
      25ad9417
  32. 06 May, 2011 1 commit
    • Alexander Nozdrin's avatar
      Preliminary patch for Bug#11848763 / 60025 · 1df8afdc
      Alexander Nozdrin authored
      (SUBSTRING inside a stored function works too slow).
      
      Background:
        - THD classes derives from Query_arena, thus inherits the 'state'
          attribute and related operations (is_stmt_prepare() & co).
      
        - Although these operations are available in THD, they must not
          be used. THD has its own attribute to point to the active
          Query_arena -- stmt_arena.
      
        - So, instead of using thd->is_stmt_prepare(),
          thd->stmt_arena->is_stmt_prepare() must be used. This was the root
          cause of Bug 60025.
      
      This patch enforces the proper way of calling those operations.
      is_stmt_prepare() & co are declared as private operations
      in THD (thus, they are hidden from being called on THD instance).
      
      The patch tries to minimize changes in 5.5.
      1df8afdc
  33. 05 May, 2011 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #776295. · 10d74960
      Igor Babaev authored
      If the value of the flag cond_false of an Item_equal object is
      true then the print method must return the string '0'.
      10d74960
  34. 04 May, 2011 2 commits
    • Oleksandr Byelkin's avatar
      Moving max/min optimization from prepare to optimization phase. MWL#148 · 18698229
      Oleksandr Byelkin authored
      mysql-test/r/explain.result:
        fixed results (new item)
      mysql-test/r/subselect.result:
        fixed results (new item)
      mysql-test/r/subselect_no_mat.result:
        fixed results (new item)
      mysql-test/r/subselect_no_opts.result:
        fixed results (new item)
      mysql-test/r/subselect_no_semijoin.result:
        Fixed results (new item)
      mysql-test/suite/pbxt/r/subselect.result:
        Fixed results (new item)
      mysql-test/t/explain.test:
        Fixed results (correct behaviour)
      sql/item_cmpfunc.cc:
        Pass through  for max/min
      sql/item_subselect.cc:
        moving max/min
      sql/item_subselect.h:
        moving max/min
      sql/mysql_priv.h:
        new uncacheble flags added
      sql/opt_subselect.cc:
        maxmin moved.
      sql/opt_subselect.h:
        New function for maxmin.
      sql/sql_class.h:
        debug code
      sql/sql_lex.cc:
        Fixed flags.
        Limit setting fixed.
      sql/sql_lex.h:
        2 new flags.
      sql/sql_select.cc:
        Prepare divided on 2 function to be able recollect some info after transformation.
      sql/sql_select.h:
        Prepare divided on 2 functions.
      18698229
    • Igor Babaev's avatar
      Fixed LP bug #776274, · 93058ecc
      Igor Babaev authored
      The bug was introduced by the patch that fixed bug 717577.
      93058ecc
  35. 27 Apr, 2011 1 commit
    • Igor Babaev's avatar
      Fixed LP bugs #717577, #724942. · 1a18998c
      Igor Babaev authored
      Both these two bugs happened due to the following problem.
      When a view column is referenced in the query an Item_direct_view_ref
      object is created that is refers to the Item_field for the column.
      All references to the same view column refer to the same Item_field.
      Different references can belong to different AND/OR levels and,
      as a result, can be included in different Item_equal object.
      These Item_equal objects may include different constant objects.
      If these constant objects are substituted for the Item_field created
      for a view column we have a conflict situation when the second
      substitution annuls the first substitution. This leads to
      wrong result sets returned by the query. Bug #724942 demonstrates
      such an erroneous behaviour.
      Test case of the bug #717577 produces wrong result sets because best
      equal fields of the multiple equalities built for different OR levels
      of the WHERE condition differs. The subsitution for the best equal field
      in the second OR branch overwrites the the substitution made for the
      first branch.
      
      To avoid such conflicts we have to substitute for the references
      to the view columns rather than for the underlying field items.
      To make such substitutions possible we have to include into
      multiple equalities references to view columns rather than 
      field items created for such columns.
      
      This patch modifies the Item_equal class to include references
      to view columns into multiple equality objects. It also performs
      a clean up of the class methods and adds more comments. The methods
      of the Item_direct_view_ref class that assist substitutions for
      references to view columns has been also added by this patch.
      1a18998c
  36. 12 Apr, 2011 1 commit
    • Sergey Glukhov's avatar
      Bug#11766212 59270: NOT IN (YEAR( ... ), ... ) PRODUCES MANY VALGRIND WARNINGS · 1c250752
      Sergey Glukhov authored
      Valgrind warning happens due to early null values check
      in Item_func_in::fix_length_and_dec(before item evaluation).
      As result null value items with uninitialized values are
      placed into array and it leads to valgrind warnings during
      value array sorting.
      The fix is to check null value after item evaluation, item
      is evaluated in in_array::set() method.
      
      
      mysql-test/r/func_in.result:
        test case
      mysql-test/t/func_in.test:
        test case
      sql/item_cmpfunc.cc:
        The fix is to check null value after item evaluation.
      1c250752
  37. 26 Mar, 2011 1 commit