1. 18 Feb, 2019 7 commits
  2. 16 Feb, 2019 3 commits
    • Marko Mäkelä's avatar
      MDEV-18598: Wrong results after instant integer conversions · 790b6f5a
      Marko Mäkelä authored
      Field_str::is_equal(): Do not allow instant conversions between
      BIT (which is stored big-endian) and integer types (which can
      be stored big-endian or little-endian, depending on storage engine).
      
      row_sel_field_store_in_mysql_format_func(): Properly extend
      narrower integer and DATA_FIXBINARY values to the current format.
      DATA_FIXBINARY was incorrectly padded with 0x20 instead of 0.
      790b6f5a
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · e9e47889
      Marko Mäkelä authored
      e9e47889
    • Marko Mäkelä's avatar
      Fix tests for innodb_checksum_algorithm=strict_crc32 · df51dc28
      Marko Mäkelä authored
      In tests that directly write InnoDB data file pages,
      compute the innodb_checksum_algorithm=crc32 checksums,
      instead of writing the 0xdeadbeef value used by
      innodb_checksum_algorithm=none. In this way, these tests
      will not cause failures when executing
      ./mtr --mysqld=--loose-innodb-checksum-algorithm=strict_crc32
      df51dc28
  3. 15 Feb, 2019 11 commits
    • Sergei Golubchik's avatar
      28f18aa7
    • Igor Babaev's avatar
      Merge branch '10.4' into bb-10.4-mdev16188 · a44f2c3e
      Igor Babaev authored
      a44f2c3e
    • Alexander Barkov's avatar
      A cleanup for MDEV-13916 Enforce check constraint on JSON type · 62c0ac2d
      Alexander Barkov authored
      1. Renaming Type_handler_json to Type_handler_json_longtext
         There will be other JSON handlers soon, e.g. Type_handler_json_varchar.
      
      2. Making the code more symmetric for data types:
      
      - Adding a new virtual method
        Type_handler::Column_definition_validate_check_constraint()
      - Moving JSON-specific code from sql_yacc.yy to
        Type_handler_json_longtext::Column_definition_validate_check_constraint()
      
      3. Adding new files sql_type_json.cc and sql_type_json.h
         and moving Type_handler+JSON related code into these files.
      62c0ac2d
    • Vladislav Vaintroub's avatar
    • Marko Mäkelä's avatar
      MDEV-18579 Assertion !ctx->online || num_fts_index == 0 · e1af4601
      Marko Mäkelä authored
      instant_alter_column_possible(): Add the other MDEV-17459 work-around
      condition. The existence of fulltext indexes only prevents instant
      DROP COLUMN or changing the order of columns. Other forms of instant
      ALTER TABLE are no problem.
      
      Before commit 4e7ee166 that merged
      the MDEV-18295 fix from 10.3, the work-around of MDEV-17459 in
      instant_alter_column_possible() was categorically refusing any
      ALGORITHM=INSTANT if any FULLTEXT INDEX was present. After that commit,
      a related condition was only present in prepare_inplace_alter_table_dict()
      but not in the other callers of instant_alter_column_possible().
      e1af4601
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · 2b921845
      Marko Mäkelä authored
      2b921845
    • Jan Lindström's avatar
      MDEV-18109: Galera 4: run galera_sr test suite · dcaabf07
      Jan Lindström authored
      Fix some of the galera_sr suite test failures.
      Remove tests that are not going to be run because required
      feature is not supported.
      
      	modified:   mysql-test/suite/galera_sr/disabled.def
      	deleted:    mysql-test/suite/galera_sr/r/GCF-574.result
      	modified:   mysql-test/suite/galera_sr/r/galera_sr_cc_slave.result
      	modified:   mysql-test/suite/galera_sr/r/galera_sr_kill_all_norecovery.result
      	modified:   mysql-test/suite/galera_sr/r/galera_sr_load_data.result
      	deleted:    mysql-test/suite/galera_sr/r/galera_sr_sbr.result
      	modified:   mysql-test/suite/galera_sr/r/mysql-wsrep-features#148.result
      	deleted:    mysql-test/suite/galera_sr/r/mysql-wsrep-features#29.result
      	deleted:    mysql-test/suite/galera_sr/t/GCF-574.test
      	modified:   mysql-test/suite/galera_sr/t/galera_sr_cc_slave.test
      	modified:   mysql-test/suite/galera_sr/t/galera_sr_kill_all_norecovery.cnf
      	modified:   mysql-test/suite/galera_sr/t/galera_sr_kill_all_norecovery.test
      	modified:   mysql-test/suite/galera_sr/t/galera_sr_load_data.test
      	deleted:    mysql-test/suite/galera_sr/t/galera_sr_sbr.test
      	modified:   mysql-test/suite/galera_sr/t/mysql-wsrep-features#148.test
      	deleted:    mysql-test/suite/galera_sr/t/mysql-wsrep-features#29.test
      dcaabf07
    • Igor Babaev's avatar
      Merge branch '10.4' into bb-10.4-mdev16188 · 294b8c42
      Igor Babaev authored
      294b8c42
    • Marko Mäkelä's avatar
      MDEV-15564: Fix bool/ibool type mismatch · e17fc729
      Marko Mäkelä authored
      dtype_is_string_type(), dtype_is_binary_string_type(),
      dtype_is_non_binary_string_type(): Define as inline functions that
      return bool, not ibool.
      e17fc729
    • Marko Mäkelä's avatar
      MDEV-15564: Fix the non-debug build · 10c05d4a
      Marko Mäkelä authored
      10c05d4a
    • Igor Babaev's avatar
      Merge branch '10.4' into bb-10.4-mdev16188 · 98d55b13
      Igor Babaev authored
      98d55b13
  4. 14 Feb, 2019 13 commits
    • Igor Babaev's avatar
      MDEV-16188 Post review fixes · ccce4d3b
      Igor Babaev authored
      Also adjusted some test files.
      ccce4d3b
    • Vladislav Vaintroub's avatar
      MDEV-18549 Failing assertion: opt_no_lock during mariabackup --backup · 282ba973
      Vladislav Vaintroub authored
      The assertion happens under BACKUP STAGE BLOCK_COMMIT, when a DDL on a
      temporary table (#sql-xxx) is found.
      
      Apparently, assumption that all DDLs are blocked under FTWRL does not
      hold for BACKUP STAGE, and temporary tables can still have ALTERs
      
      The fix is to relax the assertion, and only check for opt_no_lock if
      backup is *really* inconsistent, i.e either optimized DDL or CREATE/RENAME
      are done on the tables that were not skipped during backup.
      282ba973
    • Marko Mäkelä's avatar
      MDEV-15564 Avoid table rebuild in ALTER TABLE on collation or charset changes · ea0be9e2
      Marko Mäkelä authored
      Allow ALGORITHM=INSTANT (or avoid touching any data)
      when changing the collation, or in some cases, the character set,
      of a non-indexed CHAR or VARCHAR column. There is no penalty
      for subsequent DDL or DML operations, and compatibility with
      older MariaDB versions will be unaffected.
      
      Character sets may be changed when the old encoding is compatible
      with the new one. For example, changing from ASCII to anything
      ASCII-based, or from 3-byte to 4-byte UTF-8 can sometimes be
      performed instantly.
      
      This is joint work with Eugene Kosov.
      The test cases as well as ALTER_CONVERT_TO, charsets_are_compatible(),
      Type_handler::Charsets_are_compatible() are his work.
      The Field_str::is_equal(), Field_varstring::is_equal() and
      the InnoDB changes were mostly rewritten by me due to conflicts
      with MDEV-15563.
      
      Limitations:
      
      Changes of indexed columns will still require
      ALGORITHM=COPY. We should allow ALGORITHM=NOCOPY and allow
      the indexes to be rebuilt inside the storage engine,
      without copying the entire table.
      
      Instant column size changes (in bytes) are not supported by
      all storage engines.
      
      Instant CHAR column changes are only allowed for InnoDB
      ROW_FORMAT=REDUNDANT. We could allow this for InnoDB
      when the CHAR internally uses a variable-length encoding,
      say, when converting from 3-byte UTF-8 to 4-byte UTF-8.
      
      Instant VARCHAR column changes are allowed for InnoDB
      ROW_FORMAT=REDUNDANT, and for others only if the size
      in bytes does not change from 128..255 bytes to more
      than 256 bytes.
      
      Inside InnoDB, this slightly changes the way how MDEV-15563
      works and fixes the result of the innodb.instant_alter_extend test.
      We change the way how ALTER_COLUMN_EQUAL_PACK_LENGTH_EXT
      is handled. All column extension, type changes and renaming
      now go through a common route, except when ctx->is_instant()
      is in effect, for example, instant ADD or DROP COLUMN has
      been initiated. Only in that case we will go through
      innobase_instant_try() and rewrite all column metadata.
      
      get_type(field, prtype, mtype, len): Convert a SQL data type into
      InnoDB column metadata.
      
      innobase_rename_column_try(): Remove the update of SYS_COLUMNS.
      
      innobase_rename_or_enlarge_column_try(): New function,
      replacing part of innobase_rename_column_try() and all of
      innobase_enlarge_column_try(). Also changes column types.
      
      innobase_rename_or_enlarge_columns_cache(): Also change
      the column type.
      ea0be9e2
    • Sergei Golubchik's avatar
      cleanup: Account_options · e5701d83
      Sergei Golubchik authored
      move account options from LEX to Account_options structure
      namely, mqh and ssl_*
      
      Also, use LEX_CSTRING for ssl_*/x509_* strings and move
      setting of ACL_USER::account_locked where it belongs
      e5701d83
    • Robert Bindar's avatar
      MDEV-13095 Implement User Account locking · 6c8ce999
      Robert Bindar authored
      Add server support for user account locking.
      This patch extends the ALTER/CREATE USER statements for
      denying a user's subsequent login attempts:
        ALTER USER
          user [, user2] ACCOUNT [LOCK | UNLOCK]
        CREATE USER
          user [, user2] ACCOUNT [LOCK | UNLOCK]
      The SHOW CREATE USER statement was updated to display the
      locking state of an user.
      
      Closes #1006
      6c8ce999
    • Sergei Golubchik's avatar
      bugfix: mysql_fix_privilege_tables table_schema=database() · d89cdfc2
      Sergei Golubchik authored
      fix mysql_fix_privilege_tables to look for the `user` table in the
      correct schema when deciding whether to convert it to `global_priv` table
      
      make related tests a bit more verbose
      d89cdfc2
    • Sergei Golubchik's avatar
      cleanup: reformat · 84cbd69c
      Sergei Golubchik authored
      84cbd69c
    • Sergei Golubchik's avatar
      c0745e37
    • Sergei Golubchik's avatar
      cleanup: remove THD::query_start_timeval() · 1d8b5524
      Sergei Golubchik authored
      Too easy to abuse. One tends to use it even when
      microseconds are not needed and will be ignored.
      1d8b5524
    • Jan Lindström's avatar
      Merge pull request #1185 from codership/10.4-wsrep_schema_cleanup · c568e253
      Jan Lindström authored
      Cleanup wsrep_schema and remove all references to wsrep_thd_pool
      c568e253
    • Jan Lindström's avatar
      Merge pull request #1183 from codership/10.4-wsrep_debug · 677a1e7c
      Jan Lindström authored
      WSREP debug log levels support
      677a1e7c
    • Daniele Sciascia's avatar
      Cleanup wsrep_schema and remove all references to wsrep_thd_pool · 047754a7
      Daniele Sciascia authored
      * Removed all references related to wsrep_thd_pool (which was removed)
      
      * Removed unused declarations in wsrep_schema.h
      
      * The following would result invalid reads in
        Wsrep_schema::replay_transaction():
        ```
        frag_table->field[4]->val_str(&buf);
      
        Wsrep_schema_impl::end_index_scan(frag_table);
        Wsrep_schema_impl::finish_stmt(thd);
        ret= wsrep_apply_events(thd, rli, buf.c_ptr_safe(), buf.length());
        ```
      
        because `buf` was accessed after closing the table. The fix is to
        perform storage reads using a different THD.
      
      * In Wsrep_schema::recover_sr_transactions(), cluster_table was opened
        for write, however it is only read here. And frag_table was opened
        for read, wereas write is potentially needed.
        Also, avoid copy caused by String::c_ptr() to zero terminate the c
        string, use c_ptr_quick instead.
      047754a7
    • Igor Babaev's avatar
      MDEV-16188 Introduced the notion of adjusted filter gain. · e1de23b8
      Igor Babaev authored
      Due to inconsistent usage of different cost models to calculate
      the cost of ref accesses we have to make the calculation of the
      gain promising by usage a range filter more complex.
      e1de23b8
  5. 13 Feb, 2019 6 commits