1. 13 Feb, 2019 11 commits
    • Marko Mäkelä's avatar
      MDEV-15563: Instant ROW_FORMAT=REDUNDANT column extension · 22feb179
      Marko Mäkelä authored
      This was developed by Aleksey Midenkov based on my design.
      
      In the original InnoDB storage format (that was retroactively named
      ROW_FORMAT=REDUNDANT in MySQL 5.0.3), the length of each index field
      is stored explicitly.
      
      Because of this, we can and now will allow instant conversion from
      VARCHAR to CHAR or VARBINARY to BINARY of equal or greater size,
      as well as instant conversion of TINYINT to SMALLINT to MEDIUMINT
      to INT to BIGINT (while not changing between signed and unsigned).
      
      Theoretically, we could allow changing from an unsigned integer to
      a bigger unsigned integer, as well as changing CHAR to VARCHAR, but
      that would require additional metadata and conversions whenever
      reading old records.
      
      Field_str::is_equal(), Field_varstring::is_equal(), Field_num::is_equal():
      Return the new result IS_EQUAL_PACK_LENGTH_EXT if the table advertises
      HA_EXTENDED_TYPES_CONVERSION capability and we are considering the
      above-mentioned conversions.
      
      ALTER_COLUMN_EQUAL_PACK_LENGTH_EXT: A new ALTER TABLE flag, similar
      to ALTER_COLUMN_EQUAL_PACK_LENGTH but requiring conversions when
      reading the data. The Field::is_equal() result IS_EQUAL_PACK_LENGTH_EXT
      will map to this flag.
      
      dtype_get_fixed_size_low(): For BINARY, CHAR and integer columns
      in ROW_FORMAT=REDUNDANT, return 0 (variable length) from now on.
      
      dtype_get_sql_null_size(): Keep returning the current size for
      BINARY, CHAR and integer columns, so that in ROW_FORMAT=REDUNDANT
      it will remain possible to update in place between NULL and NOT NULL
      values.
      
      btr_index_rec_validate(): Relax a CHECK TABLE length check for
      ROW_FORMAT=REDUNDANT tables.
      
      btr_cur_instant_init_low(): No longer trust fixed_len
      for ROW_FORMAT=REDUNDANT tables.
      
      We cannot rely on fixed_len anymore because the record can have shorter
      length from before instant extension. Note that importing such tablespace
      into earlier MariaDB versions produces ER_TABLE_SCHEMA_MISMATCH when
      using a .cfg file.
      22feb179
    • Marko Mäkelä's avatar
      MDEV-15563: Instant VARCHAR extension for ROW_FORMAT=REDUNDANT · 0ae3ea79
      Marko Mäkelä authored
      In the original InnoDB storage format (which was retroactively named
      ROW_FORMAT=REDUNDANT in MySQL 5.0.3), the length of each index field
      is stored explicitly. Thus, we can and from now on will allow arbitrary
      extension of VARBINARY and VARCHAR columns when the table is in
      ROW_FORMAT=REDUNDANT.
      
      ha_innobase::open(): Advertise a new HA_EXTENDED_TYPES_CONVERSION
      capability for ROW_FORMAT=REDUNDANT tables.
      
      Field_varstring::is_equal(): If the HA_EXTENDED_TYPES_CONVERSION
      capability is advertised for the table, return IS_EQUAL_PACK_LENGTH
      for any length extension.
      0ae3ea79
    • Marko Mäkelä's avatar
      MDEV-15563: Allow instant VARCHAR extension from <128 bytes · ad17875c
      Marko Mäkelä authored
      For up to 127 bytes length, InnoDB would use 1 byte for length, and
      that byte would always be less than 128. If the maximum length is
      longer than 255 bytes, InnoDB would use a variable-length encoding
      for the length, using 1 byte for lengths up to 127 bytes, and
      2 bytes for longer lengths.
      
      Thus, 1-byte lengths are always compatible when the maximum size
      changes from less than 128 bytes to anything longer.
      
      Field_varstring::is_equal(): Return IS_EQUAL_PACK_LENGTH also when
      converting from VARCHAR less than 128 bytes to any longer VARCHAR.
      ad17875c
    • Marko Mäkelä's avatar
      MDEV-6111: Adjust a result · 8ef4105a
      Marko Mäkelä authored
      8ef4105a
    • Jan Lindström's avatar
      Merge pull request #1180 from codership/10.4-load-data-splitting · c2c637c5
      Jan Lindström authored
      10.4 make wsrep_load_data_splitting use streaming replication
      c2c637c5
    • Jan Lindström's avatar
      MDEV-18564: Change wsrep_load_data_splitting off by default · 6476126c
      Jan Lindström authored
      Variable wsrep_load_data_splitting is deprecated and should be off
      by default.
      6476126c
    • Vladislav Vaintroub's avatar
      Fix compilation on old gcc · d28dab76
      Vladislav Vaintroub authored
      d28dab76
    • Jan Lindström's avatar
      Merge pull request #1182 from grooverdan/10.4-friendlier-wsrep-message · 91451739
      Jan Lindström authored
      cmake-wsrep: friendly error message about missing wsrep_api.h
      91451739
    • Varun Gupta's avatar
      MDEV-6111 Optimizer Trace · be8709eb
      Varun Gupta authored
      This task involves the implementation for the optimizer trace.
      
      This feature produces a trace for any SELECT/UPDATE/DELETE/,
      which contains information about decisions taken by the optimizer during
      the optimization phase (choice of table access method, various costs,
      transformations, etc). This feature would help to tell why some decisions were
      taken by the optimizer and why some were rejected.
      
      Trace is session-local, controlled by the @@optimizer_trace variable.
      To enable optimizer trace we need to write:
         set @@optimizer_trace variable= 'enabled=on';
      
      To display the trace one can run:
         SELECT trace FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
      
      This task also involves:
          MDEV-18489: Limit the memory used by the optimizer trace
          introduces a switch optimizer_trace_max_mem_size which limits
          the memory used by the optimizer trace. This was implemented by
          Sergei Petrunia.
      be8709eb
    • Varun Gupta's avatar
      Extending the API for json_writer by introdcing · 6b979416
      Varun Gupta authored
      classes for Json_writer_object and Json_writer_array.
      These classes will be used for the implementation
      of the optimizer trace.
      6b979416
    • Daniel Black's avatar
      cmake-wsrep: friendly error message about missing wsrep_api.h · 4f5c6536
      Daniel Black authored
      Without this commit the error message is:
      
      $ cmake . -DWITH_WSREP=ON
      -- Running cmake version 3.12.1
      -- MariaDB 10.4.3
      CMake Error at cmake/wsrep.cmake:36 (FILE):
        FILE STRINGS file
        ".../mariadb-server-10.4/wsrep-lib/wsrep-API/v26/wsrep_api.h"
        cannot be read.
      Call Stack (most recent call first):
        CMakeLists.txt:147 (INCLUDE)
      
      Having 'git config cmake.update-submodules yes' nicely updates the
      build without error.
      
      $ cmake . -DWITH_WSREP=ON
      -- Running cmake version 3.12.1
      -- MariaDB 10.4.3
      Submodule path 'wsrep-lib': checked out 'e7d72ae7f6a6995a21d743389426a963429a1fff'
      Submodule path 'wsrep-lib/wsrep-API/v26': checked out '75a5f452f2ba07b0f4a3a9a94825fccc71b27398'
      4f5c6536
  2. 12 Feb, 2019 10 commits
  3. 11 Feb, 2019 6 commits
  4. 08 Feb, 2019 8 commits
  5. 07 Feb, 2019 5 commits