- 15 Feb, 2019 5 commits
-
-
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().
-
Marko Mäkelä authored
-
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
-
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.
-
Marko Mäkelä authored
-
- 14 Feb, 2019 11 commits
-
-
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.
-
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.
-
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
-
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
-
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
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
Too easy to abuse. One tends to use it even when microseconds are not needed and will be ignored.
-
Jan Lindström authored
Cleanup wsrep_schema and remove all references to wsrep_thd_pool
-
Jan Lindström authored
WSREP debug log levels support
-
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.
-
- 13 Feb, 2019 24 commits
-
-
Igor Babaev authored
-
Marko Mäkelä authored
Commit 22feb179 broke the build with performance_schema disabled. dict_col_t::same_charset(): An auxiliary function to dict_col_t::same_format(). Determine if two non-binary string columns have the same character set.
-
Alexey Botchkov authored
-
Daniel Black authored
Remove 'register' quantifer from args too.
-
Daniel Black authored
This was added in 29fa7252 (in 2000) and nothing defines NEW_HASH_FUNCTION. A low collision is the wrong tradeoff, it should be focused on throughput. d405bee0 shows the existing function is pretty cpu intensive and needs to be improved as well.
-
mkaruza authored
Global variable wsrep_debug now can be used to filter wsrep-lib messages based on debug level provided. Type of wsrep_debug is now set to be unsigned int, so tests and configuration files changed accordingly.
-
Monty authored
When creating a field of type JSON, it will be automatically converted to TEXT with CHECK (json_valid(`a`)), if there wasn't any previous check for the column. Additional things: - Added two bug fixes that was found while testing JSON. These bug fixes has also been pushed to 10.3 (with a test case), but as they where minimal and needed to get this task done and tested, the fixes are repeated here. - CREATE TABLE ... SELECT drops constraints for columns that are both in the create and select part. - If one has both a default expression and check constraint for a column, one can get the error "Expression for field `a` is refering to uninitialized field `a`. - Removed some duplicate MYSQL_PLUGIN_IMPORT symbols
-
Igor Babaev authored
Fixing failures of federated test on 32-bit platforms
-
Monty authored
- CREATE TABLE ... SELECT drops constraints for columns that are both in the create and select part. - Fixed by copying the constraint in Column_definiton::redefine_stage1_common() - If one has both a default expression and check constraint for a column, one can get the error "Expression for field `a` is refering to uninitialized field `a`. - Fixed by ignoring default expressions for current column when checking for CHECK constraint
-
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.
-
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.
-
Daniel Black authored
According to close(2) "Retrying the close() after a failure return is the wrong thing to do" Even the EINTR case its maybe closed. Take the prudent approach here an risk leaking one file descriptor rather than closing one that is nolonger ours.
-
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.
-
Marko Mäkelä authored
-
Sergey Vojtovich authored
No need to call list.empty(): first one is called by List constructor, second one doesn't make sense as the object is destroyed immediately afterwards.
-
Daniel Black authored
Also always empty list rather than only if there is no error.
-
Jan Lindström authored
10.4 make wsrep_load_data_splitting use streaming replication
-
Jan Lindström authored
Variable wsrep_load_data_splitting is deprecated and should be off by default.
-
Vladislav Vaintroub authored
-
Jan Lindström authored
cmake-wsrep: friendly error message about missing wsrep_api.h
-
Igor Babaev authored
-
Igor Babaev authored
MDEV-17631 select_handler for a full query pushdown Added comments and file headers for files introduced in these tasks.
-
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.
-
Varun Gupta authored
classes for Json_writer_object and Json_writer_array. These classes will be used for the implementation of the optimizer trace.
-