1. 16 Dec, 2016 11 commits
    • Alexander Barkov's avatar
      MDEV-11337 Split Item::save_in_field() into virtual methods in Type_handler · cb16d753
      Alexander Barkov authored
      Also fixes:
      MDEV-11331 Wrong result for INSERT INTO t1 (datetime_field) VALUES (hybrid_function_of_TIME_data_type)
      MDEV-11333 Expect "Impossible where condition" for WHERE timestamp_field>=DATE_ADD(TIMESTAMP'9999-01-01 00:00:00',INTERVAL 1000 YEAR)
      
      This patch does the following:
      1. Splits the function Item::save_in_field() into pieces:
      - Item::save_str_in_field()
      - Item::save_real_in_field()
      - Item::save_decimal_in_field()
      - Item::save_int_in_field()
      
      2. Adds the missing "no_conversion" parameters to
         Item::save_time_in_field() and Item::save_date_in_field(),
         so this parameter is now correctly passed to
         set_field_to_null_with_conversions().
         This fixes the problem reported in 11333.
      
      3. Introduces a new virtual method Type_handler::Item_save_in_field()
         and uses the methods Item::save_xxx_in_field() from the implementations
         of Type_handler_xxx::Item_save_in_field().
      
      These changes additionally fix the problem reported in MDEV-11331,
      as the old code erroneously handled expressions like
      COALESE(datetime-expression) through the STRING_RESULT branch of
      Item::save_in_field() and therefore they looked like string type expressions
      for the target fields. Now such expressions are correctly handled by
      Item::save_date_in_field().
      cb16d753
    • Alexander Barkov's avatar
      MDEV-11346 Move functions case_stmt_xxx and add_select_to_union_list as methods to LEX · 4b4efb04
      Alexander Barkov authored
      The full list of functions moved:
      int case_stmt_action_expr(LEX *, Item* expr);
      int case_stmt_action_when(LEX *, Item *when, bool simple);
      int case_stmt_action_then(LEX *);
      bool add_select_to_union_list(LEX *,bool is_union_distinct,  bool is_top_level);
      
      This is a preparatory change for "MDEV-10142 PL/SQL parser",
      to reuse the code easier between sql_yacc.yy and coming soon sql_yacc_ora.yy.
      4b4efb04
    • Alexander Barkov's avatar
      MDEV-11294 Move definitions of Derivation, DTCollation, Type_std_attributes... · cba00921
      Alexander Barkov authored
      MDEV-11294 Move definitions of Derivation, DTCollation, Type_std_attributes from field.h and item.h to sql_type.h
      cba00921
    • Alexander Barkov's avatar
      MDEV-11245 Move prepare_create_field and sp_prepare_create_field() as methods to Column_definition · 01546ee4
      Alexander Barkov authored
      Some upcoming tasks, e.g.:
      - MDEV-10577 sql_mode=ORACLE: %TYPE in variable declarations
      - MDEV-10914 ROW data type for stored routine variables
      
      will need to reuse the code implemented in prepare_create_field(),
      sp_prepare_create_field(), prepare_blob_field().
      
      Before reusing this code, it's a good idea to move these global functions
      as methods to Column_definition.
      
      This patch:
      - actually moves prepare_create_field(), sp_prepare_create_field(),
        prepare_blob_field() as methods to Column_definition
      - makes sp_prepare_create_field() call prepare_create_field() at the end,
        to avoid duplicate code in MDEV-10577 and MDEV-10914.
      - changes the return data type for prepare_create_field() from int to bool,
        to make it consistent with all other functions returning "ok" or "error".
      - moves the implementation sp_head::fill_field_definition() from sp_head.cc
        to sp_head.h, as it now uses globally visible Column_definition methods,
        and is very simple, so inlining is now possible.
      - removes the unused "LEX*" argument from sp_head::fill_field_definition()
      01546ee4
    • Alexander Barkov's avatar
    • Alexander Barkov's avatar
      MDEV-11146 SP variables of the SET data type erroneously allow values with comma · e5dfe04d
      Alexander Barkov authored
      There was a duplicate code to create TYPELIB from List<String>:
      - In typelib() and mysql_prepare_create_table(), which was used to initialize
        table fields.
      - create_typelib() and sp_prepare_create_field(), which was used to initialize
        SP variables.
      create_typelib() was incomplete and didn't check for wrong SET values.
      
      Fix:
      - Moving the code from create_typelib() and mysql_prepare_create_field()
        to news methods Column_definition::create_interval_from_interval_list()
        and Column_definition::prepare_interval_field().
      - Moving the code from calculate_interval_lengths() in sql_table.cc
        to a new method Column_definition::calculate_interval_lengths(), as it's now
        needed only in Column_definition::create_interval_from_interval_list()
      - Reusing the new method Column_definition::prepare_interval_field() in both
        mysql_prepare_create_table() and sp_prepare_create_field(), instead of the
        old duplicate code pieces
      - Removing global functions typelib() and create_typelib()
      
      This patch also fixes:
      MDEV-11155 Bad error message when creating a SET column with comma and non-ASCII characters
      The problem was that ErrCongString() was called with a wrong "charset" parameter.
      e5dfe04d
    • Alexander Barkov's avatar
      Starting the 10.3 branch · 239287b2
      Alexander Barkov authored
      239287b2
    • Alexey Botchkov's avatar
      MDEV-11572 JSON_DEPTH returns wrong results. · ce55094f
      Alexey Botchkov authored
              JSON depth calculation fixed.
      ce55094f
    • Alexey Botchkov's avatar
      MDEV-11569 JSON_ARRAY_INSERT produces an invalid result. · 30c231b0
      Alexey Botchkov authored
              String insertion fixed.
      30c231b0
    • Alexey Botchkov's avatar
      MDEV-JSON_CONTAINS_PATH returns incorrect results and produces wrong warning. · beded435
      Alexey Botchkov authored
              The Item_func_json_contains_path was mistakenly set with the
              no '*' paths limitation.
      beded435
    • Alexey Botchkov's avatar
      MDEV-11562 Assertion `js->state == JST_VALUE' failed in... · e5377be2
      Alexey Botchkov authored
      MDEV-11562 Assertion `js->state == JST_VALUE' failed in check_contains(json_engine_t*, json_engine_t*).
      
              check_contains() fixed. When an item of an array is a complex
              structure, it can be half-read after the end of the recursive
              check_contains() call. So we just manually get to it's ending.
      e5377be2
  2. 15 Dec, 2016 7 commits
  3. 14 Dec, 2016 3 commits
    • Igor Babaev's avatar
      Adjusted test results after merge. · 5cf6fd3e
      Igor Babaev authored
      5cf6fd3e
    • Igor Babaev's avatar
      Fixed bug mdev-11488. · 441fa005
      Igor Babaev authored
      The patch for bug mdev-10882 tried to fix it by providing an
      implementation of the virtual method build_clone for the class
      Item_cache. It's turned out that it is not easy provide a valid
      implementation for Item_cache::build_clone(). At the same time
      if the condition that can be pushed into a materialized view
      contains a cached item this item can be substituted for a basic
      constant of the same value. In such a way we can avoid building
      proper clones for Item_cache objects when constructing pushdown
      conditions.
      441fa005
    • Daniel Black's avatar
      Travis: add lib{stemmer,xml2,pcre3}-dev · e9ada862
      Daniel Black authored
      e9ada862
  4. 13 Dec, 2016 3 commits
  5. 12 Dec, 2016 16 commits