1. 03 Dec, 2017 20 commits
    • Monty's avatar
      Add direct join support for Spider · 52ca07c2
      Monty authored
      Includes Spider patches
      - 062_mariadb-10.2.0.direct_join_1and3.diff
      - 063_mariadb-10.2.0.direct_join_for_single_partition.diff
      - Test cases from Kentoku
      
      Allows Spider to push full joins to the Spider engine trough the
      create_group_by interface.
      
      Other things:
      - Increased MYSQL_VERSION_ID to check for 10211 (latest 10.2 version)
      - Fix for const_table at calling create_group_by().
      
      Original author: Kentoku SHIBA
      52ca07c2
    • Jacob Mathew's avatar
      bfaf2d6e
    • Kentoku SHIBA's avatar
      merge Spider 3.3.13 · 207594af
      Kentoku SHIBA authored
      New features in 3.3.13 are:
      - Join Push Down for 1 by 1 table and single partition.
      207594af
    • Kentoku SHIBA's avatar
      Adding direct update/delete to the server and to the partition engine. · e53ef202
      Kentoku SHIBA authored
      Add support for direct update and direct delete requests for spider.
      A direct update/delete request handles all qualified rows in a single
      operation rather than one row at a time.
      
      Contains Spiral patches:
      006_mariadb-10.2.0.direct_update_rows.diff      MDEV-7704
      008_mariadb-10.2.0.partition_direct_update.diff MDEV-7706
      010_mariadb-10.2.0.direct_update_rows2.diff     MDEV-7708
      011_mariadb-10.2.0.aggregate.diff               MDEV-7709
      027_mariadb-10.2.0.force_bulk_update.diff       MDEV-7724
      061_mariadb-10.2.0.mariadb-10.1.8.diff          MDEV-12870
      
      - The differences compared to the original patches:
        - Most of the parameters of the new functions are unnecessary.  The
          unnecessary parameters have been removed.
        - Changed bit positions for new handler flags upon consideration of
          handler flags not needed by other Spiral patches and handler flags
          merged from MySQL.
        - Added info_push() (Was originally part of bulk access patch)
        - Didn't include code related to handler socket
        - Added HA_CAN_DIRECT_UPDATE_AND_DELETE
      
      Original author: Kentoku SHIBA
      First reviewer:  Jacob Mathew
      Second reviewer: Michael Widenius
      e53ef202
    • Michael Widenius's avatar
    • Michael Widenius's avatar
      Cleanups for ha_partition.cc · 352feb49
      Michael Widenius authored
      - Ensure that var= doesn't have a space before =
      - Fixed DBUG_PRINT to use %u for unsigned types
      - Use "enter" when printing function arguments
      - Fixed typos
      - Added some extra DBUG_PRINT
      - Removed not needed assignment
      352feb49
    • Monty's avatar
      MDEV-7702 Spiral patch 004_mariadb-10.0.15.slave-trx-retry.diff · b016e1ba
      Monty authored
      This is about adding more options to force slave retries
      
      Two new variables has been added:
      slave_transaction_retry_errors
      - Tells the slave thread to retry transaction for replication when a
        query event returns an error from the provided list. Deadlock and
        elapsed lock wait timeout errors are automatically added to this list
      slave-transaction-retry-interval
      - Interval of the slave SQL thread will retry a transaction
        in case it failed with a deadlock or elapsed lock wait
        timeout or listed in slave_transaction_retry_errors
      
      Other changes:
      - Simplifed code for slave_skip_errors (to be aligned with
        slave_transaction_retry_errors)
      - Renamed print_slave_skip_errors() to make_slave_skip_errors_printable()
      - Remove printing error from init_slave_skip_errors as my_bitmap_init()
        will do that if needed.
      - Generalize has_temporary_error()
      b016e1ba
    • Monty's avatar
      Fix index scan cleanup in the partition engine. · 3907ff2d
      Monty authored
      Spiral Patch 057: 057_mariadb-10.2.0.partition_index_end.diff MDEV-12999
      
      Original author: Kentoku SHIBA
      First reviewer:  Jacob Mathew
      Second reviewer: Michael Widenius
      3907ff2d
    • Monty's avatar
      Adding option to tell that cmp_ref handler call is expensive · f26e14e2
      Monty authored
      - In Spider, calling cmp_ref() can be very expensive. In ha_partition.cc
        we don't anymore sort rows according to position for the Spider
        engine.
      - Removed Spider specific call info(HA_EXTRA_STARTING_ORDERED_INDEX_SCAN)
        from handle_ordered_index_scan(). It's caused performance issues and
        does not change results for queries with ORDER BY.
      - The visible effect of this patch is that for some storage engines,
        rows may be returned in a different order if there is no ORDER BY clause.
      
      - Based in Spiral Patch 052:
        052_mariadb-10.2.0.add_partition_skip_pk_sort_for_non_clustered_index
        MDEV-7748
      - The major difference from original patch is that there is no variable to
        get the old behaviour.
      
      Other things:
      - Optimized ha_partition::cmp_ref() and cmp_part_ids() to make them
        simpler and faster.
      - Changed arguments to cmp_key_part_id() to be same as
        cmp_key_rowid_part_id to simplify code.
      
      Original author: Kentoku SHIBA
      First reviewer:  Jacob Mathew
      Second reviewer: Michael Widenius
      f26e14e2
    • Monty's avatar
      Adding support for auto_increment in the partition engine. · dc17ac16
      Monty authored
      Contains Spiral patches:
      022_mariadb-10.2.0.auto_increment.diff               MDEV-7720
      030: 030_mariadb-10.2.0.partition_auto_inc_init.diff MDEV-7726
      
      These patches have the following differences compared to the original
      patches:
      - Added the new #defines for the feature in spd_environ.h instead of in
        handler.h because these #defines are needed by Spider and are not needed
        by the server.
      - Cleaned up code related to the removed variable m_need_info_for_auto_inc
      . Changed variable assignment in lock_auto_increment() and
        unlock_auto_increment() so that the assignments are done under locks.
      - Added a test case.
      - Added test result changes resulting from a bug that was fixed by these
        patches.
      
      Original author: Kentoku SHIBA
      First reviewer:  Jacob Mathew
      Second reviewer: Michael Widenius
      dc17ac16
    • Monty's avatar
      Adding Full Text Search support to partitions · 2f09b28e
      Monty authored
      Contains Spiral patches:
      007_mariadb-10.2.0.partition_fulltext.diff  MDEV-7705
      038_mariadb-10.2.0.partition_fulltext2.diff MDEV-7734
      
      This commit has the following differences compared to the original
      patches:
      
      - Added necessary full text search cleanup at the storage engine layer
        that was omitted in the original patch.
      - Added test case.
      - A lot of code cleanups to make the code notable smaller.
      - Changed SQL code to use ha_ft_end() instead of ft_end()
      
      Original author: Kentoku SHIBA
      First reviewer:  Jacob Mathew
      Second reviewer: Michael Widenius
      2f09b28e
    • Monty's avatar
      5b409843
    • Monty's avatar
      Add direct aggregates · da26d16d
      Monty authored
      Spider patches 026 (MDEV-7723), 031 (MDEV-7727) and 058 (MDEV-12532)
      
      This allows the storage engine to internally compute sum and count
      operations.
      
      - Enhance sum items to be able to store the sum value directly.
      - return_record_by_parent() is enabled in spider as
        HANDLER_HAS_DIRECT_AGGREGATE is defined
      - Added spd_environ.h to spider. This is loaded first to ensure that all
        MariaDB specific defines that are used by include files are properly
        defined.
      - This code is tested by the existing spider tests direct_aggregate.test
        and direct_aggregate_part.test and also partition.test
      da26d16d
    • Monty's avatar
      Added more DBUG information · 6f5a7e92
      Monty authored
      Done to simplify spider patch for direct aggregates
      6f5a7e92
    • Monty's avatar
      Adding multi_range_read support to partitions · 8eeb689e
      Monty authored
      Other things:
      - Cleanup of allocated bitmaps done in open(), which
        simplifies init_partition_bitmaps()
      - Add needed defines in ha_spider.cc to enable new spider code
      - Fixed some DBUG_PRINT() to be consistent with normal code
      - Removed end space
      - The changes in test cases partition_innodb, partition_range,
        partition_pruning etc are becasue partitions can now more exactly
        calculate the number of rows in a range.
      
      Contains spider patches:
      014,015,023,033,035,037,040,042,044,045,049,050,051,053,059
      8eeb689e
    • Monty's avatar
      MDEV-7700 Spiral patch 002_mariadb-10.0.15.spider.diff, part 2 · d5268a61
      Monty authored
      Allow partition engines to access table->s->connect_string for engines
      that uses HTON_CAN_READ_CONNECT_STRING_IN_PARTITION
      Don't reset table->s->connect_string in ha_partition::open
      d5268a61
    • Monty's avatar
      MDEV 7701 extra() calls for VP engine · 7abe1149
      Monty authored
      Added Spider patches:
      003_mariadb-10.0.15.vp.diff
      060_mariadb-10.2.0.partition_reset_top_table_fields.diff
      
      - Support HA_EXTRA_ADD_CHILDREN_LIST,HA_EXTRA_ATTACH_CHILDREN,
        HA_EXTRA_IS_ATTACHED_CHILDREN and HA_EXTRA_DETACH_CHILDREN
        in partition handler for handlers that has HA_CAN_MULTISTEPL_MERGE flag
      - Added HA_CAN_MULTISTEPL_MERGE to MERGE handler.
      - Added handler::get_child_handlers()
      - Change m_num_lock to contain total number of locks. This was needed as
        we now adjust number of locks when extra(HA_EXTRA_ATTACH_CHILDREN) is
        called.
      7abe1149
    • Monty's avatar
      MDEV-7700 Spiral patch 002_mariadb-10.0.15.spider.diff · 3d1d4b87
      Monty authored
      - Enable HA_EXTRA_WRITE_CAN_REPLACE and HA_EXTRA_WRITE_CANNOT_REPLACE for
        partition engine.
      3d1d4b87
    • Monty's avatar
      Applied patch 001_mariadb-10.0.15.partition_cond_push.diff · 25a1fdd1
      Monty authored
      - Added cond_push() and cond_pop() to ha_partition.cc
      25a1fdd1
    • Monty's avatar
      Added spider patches for adding HANDLER support for the partition engine · c57e1bf5
      Monty authored
      013_mariadb-10.0.15.vp_handler.diff
      034_mariadb-10.0.15.vp_handler2.diff
      005_mariadb-10.0.15.hs.diff
      041_mariadb-10.0.15.vp_handler2.diff
      + Fixes from Kentoku
      + Added handler/suite.pm and handler/suite.opt to be able to run test cases
        in spider/handler
      c57e1bf5
  2. 02 Dec, 2017 4 commits
    • Monty's avatar
      Changed "const row not found" to "Const row not found" · 66607085
      Monty authored
      Also changed Unique row not found to use uppercase first.
      This was done to make these messages consistent with the rest
      66607085
    • Monty's avatar
      Improve error messages · c24d1d66
      Monty authored
      - mysql_install_db now prints position to error file, if log-error is used
      - Warning about compatibility now mentions MySQL 5.6 and 5.7
      - Give warning if --show_compatibility_56 is used
      c24d1d66
    • Monty's avatar
      cfaaace6
    • Monty's avatar
      Mark constant 'null_tables' with table->const_table=1 · c65911ac
      Monty authored
      This was done to make thing consistent. It gives the additional benefit
      that EXPLAIN EXTENDED now treat null_tables like constant's and replaces
      columns with NULL, in a similar way that it replaces columns with constants
      for constant tables.
      
      - Null tables are tables where all columns are always NULL. The most common
        NULL TABLE is a table used in a LEFT_JOIN that is never true.
      - All result changes comes from replacing columns with NULL for null_tables.
      - "Impossible where" is now also shows constants for const columns.
      - Removed duplicated s->type= JT_CONST
      - Reset found_const_table_map when JOIN is created (safety fix)
      c65911ac
  3. 01 Dec, 2017 4 commits
  4. 30 Nov, 2017 3 commits
  5. 29 Nov, 2017 6 commits
    • Vladislav Vaintroub's avatar
    • Vladislav Vaintroub's avatar
      MDEV-14536 : In mariabackup, reread redo log blocks , if checksum mismatch · bf6d11c4
      Vladislav Vaintroub authored
      is detected.
      
      The checksum mismatch can be due to partial write, thus retry the read
      bf6d11c4
    • Aleksey Midenkov's avatar
      FRM: fail to load extra2 option with size 1 fix · 51b30586
      Aleksey Midenkov authored
      From comment in unreg.h:
      
        Types of values in the MariaDB extra2 frm segment.
        Each value is written as
          type:       1 byte
          length:     1 byte  (1..255) or \0 and 2 bytes.
          binary value of the 'length' bytes.
      
      length == 1 is valid.
      51b30586
    • Alexander Barkov's avatar
    • Vicențiu Ciorbaru's avatar
      MDEV-13384: "window" seems like a reserved column name but it's not listed as one · 8cee2f13
      Vicențiu Ciorbaru authored
      Window is a reserved keyword according to SQL Standard 2016. However, we
      can make the grammar slightly flexible by allowing WINDOW keyword everywhere
      except table aliases. Change yacc grammar to separate between all keywords
      and table_alias keywords.
      8cee2f13
    • Alexander Barkov's avatar
      MDEV-14467 Item_param: replace {INT|DECIMAL|REAL|STRING|TIME}_VALUE with Type_handler · e01d33d7
      Alexander Barkov authored
      1. Removing data type specific constants from enum_item_param_state,
         adding SHORT_DATA_VALUE instead.
      2. Replacing tests for Item_param::state for the removed constants to
         tests for Type_handler::cmp_type() against {INT|REAL|TIME|DECIAML}_RESULT.
         Deriving Item_param::PValue from Type_handler_hybrid_field_type,
         to store the data type handler of the current value of the parameter.
      
      3. Moving Item_param::decimal_value and Item_param::str_value_ptr
         to Item_param::PValue. Adding Item_param::PValue::m_string
         and changing Item_param to use it to store string values,
         instead of Item::str_value. The intent is to replace Item_param::value
         to a st_value based implementation in the future, to avoid duplicate code.
         Adding a sub-class Item::PValue_simple, to implement
         Item_param::PValue::swap() easier.
         Remaming Item_basic_value::fix_charset_and_length_from_str_value()
         to fix_charset_and_length() and adding the "CHARSET_INFO" pointer
         parameter, instead of getting it directly from item->str_value.charset().
         Changing Item_param to pass value.m_string.charset() instead
         of str_value.charset().
         Adding a String argument to the overloaded
         fix_charset_and_length_from_str_value() and changing Item_param
         to pass value.m_string instead of str_value.
      
      4. Replacing the case in Item_param::save_in_field() to a call
         for Type_handler::Item_save_in_field().
      
      5. Adding new methods into Item_param::PValue:
         val_real(), val_int(), val_decimal(), val_str().
         Changing the corresponding Item_param methods
         to use these new Item_param::PValue methods
         internally. Adding a helper method
         Item_param::can_return_value() and removing
         duplicate code in Item_param::val_xxx().
      
      6. Removing value.set_handler() from Item_param::set_conversion()
         and Type_handler_xxx::Item_param_set_from_value().
         It's now done inside Item_param::set_param_func(),
         Item_param::set_value() and Item_param::set_limit_clause_param().
      
      7. Changing Type_handler_int_result::Item_param_set_from_value()
         to set max_length using attr->max_length instead of
         MY_INT64_NUM_DECIMAL_DIGITS, to preserve the data type
         of the assigned expression more precisely.
      
      8. Adding Type_handler_hybrid_field_type::swap(),
         using it in Item_param::PValue::swap().
      
      9. Moving the data-type specific code from
         Item_param::query_val_str(), Item_param::eq(),
         Item_param::clone_item() to
         Item_param::value_query_type_str(),
         Item_param::value_eq(), Item_param::value_clone_item(),
         to split the "state" dependent code and
         the data type dependent code.
         Later we'll split the data type related code further
         and add new methods in Type_handler. This will be done
         after we replace Item_param::PValue to st_value.
      
      10. Adding asserts into set_int(), set_double(), set_decimal(),
         set_time(), set_str(), set_longdata() to make sure that
         the value set to Item_param corresponds to the previously
         set data type handler.
      
      11. Adding tests into t/ps.test and suite/binlog/t/binlog_stm_ps.test,
         to cover Item_param::print() and Item_param::append_for_log()
         for LIMIT clause parameters.
         Note, the patch does not change the behavior covered by the new
         tests. Adding for better code coverage.
      
      12. Adding tests for more precise integer data type in queries like this:
          EXECUTE IMMEDIATE
           'CREATE OR REPLACE TABLE t1 AS SELECT 999999999 AS a,? AS b'
            USING 999999999;
          The explicit integer literal and the same integer literal
          passed as a PS parameter now produce columns of the same data type.
          Re-recording old results in ps.result, gis.result, func_hybrid_type.result
          accordingly.
      e01d33d7
  6. 28 Nov, 2017 3 commits