- 07 Oct, 2019 3 commits
-
-
Alexander Barkov authored
-
Alexander Barkov authored
- Moving the implementations of class Inet4 and class Inet6 into separate files sql_type_inet.h and sql_type_inet.cc, in order to reuse them for the INET6 data type and inet function collection. - Adding a warning in the case when IS_IPV4_MAPPED() and IS_IPV4_COMPAT() erroneously gets an IPv4 address instead of the expected IPv6 address.
-
Alexander Barkov authored
-
- 05 Oct, 2019 1 commit
-
-
Alexander Barkov authored
-
- 04 Oct, 2019 5 commits
-
-
Alexander Barkov authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
LEX::parsed_select_expr_cont(): Replace a condition with an assertion DBUG_ASSERT(!s2->next_select()), and always initialize sel1=s2, because all subsequent code paths will assign to sel1->first_nested. This was flagged by GCC reporting -Wmaybe-uninitialized for the statement last->link_neighbour(sel1).
-
Alexander Barkov authored
Moving geometry types aggregation inside Type_collection_geometry This change introduces a static method Type_aggregator::find_handler_in_array(), which will later be reused by other data type plugins.
-
- 03 Oct, 2019 4 commits
-
-
Alexander Barkov authored
-
Alexander Barkov authored
-
Alexander Barkov authored
If we have a mixture of: - a MariaDB standard (built-in permanent) data type, and - a non-standard (optionally compiled or pluggable) data type, then ask the type collection of the non-standard type to aggregate the mixture. If the non-standard collection fails, then continue aggregation with Type_handler_data.
-
Jan Lindström authored
-
- 02 Oct, 2019 2 commits
-
-
Alexander Barkov authored
Adding error reporting (ER_UNKNOWN_DATA_TYPE) when a handler name read from EXTRA2_FIELD_DATA_TYPE_INFO is not known to the server.
-
Alexander Barkov authored
-
- 01 Oct, 2019 13 commits
-
-
Alexander Barkov authored
-
Alexander Barkov authored
-
Alexander Barkov authored
-
Alexander Barkov authored
-
Jan Lindström authored
-
Alexander Barkov authored
-
Alexander Barkov authored
-
seppo authored
* MDEV-20225 BF aborting SP execution When stored procedure execution was chosen as victim for a BF abort, the old implemnetationn called for rollback immediately when execution was inside SP isntruction. Technically this happened in wsrep_after_statement() call, which identified the need for a rollback. The problem was that MariaDB does not accept rollback (nor commit) inside sub statement, there are several asserts about it, checking for THD::in_sub_stmt. This patch contains a fix, which skips calling wsrep_after_statement() for SP execution, which is marked as BF must abort. Instead, we return error code to upper level, where rollback will eventually happen, ouside of SP execution. Also, appending the affected trigger table (dropped or created) in the populated key set for the write set, which prevents parallel applying of other transactions working on the same table. * MDEV-20225 BF aborting SP execution, second patch First PR missed 4 commits, which are now squashed in this patch: - Added galera_sp_bf_abort test. A MTR test case which will reproduce BF-BF conflict if all keys corresponding to affected tables are not assigned for DROP TRIGGER. - Fixed incorrect use of sync pointsin MDEV-20225 - Added condition for SQLCOM_DROP_TRIGGER in wsrep_can_run_in_toi() to make it replicate. * MDEV-20225 BF aborting SP execution, third patch The galera_trigger.test caused a situation, where SP invocation caused a trigger to fire, and the trigger executed as sub statement SP, and was BF aborted by applier. because of wsrep_after_statement() was called for the sub-statement level, it ended up in exeuting rollback and asserted there. Thus fix will catch sub-statement level SP execution, and avoids calling wsrep_after_statement()
-
Alexander Barkov authored
-
Alexander Barkov authored
-
Alexander Barkov authored
-
Alexander Barkov authored
-
Alexander Barkov authored
-
- 30 Sep, 2019 8 commits
-
-
Robert Bindar authored
-
Aleksey Midenkov authored
Fixes -Winconsistent-missing-override in MDEV-16144 Default TIMESTAMP clause for SELECT from versioned
-
Alexey Botchkov authored
Make the skip_key a bit faster.
-
Aleksey Midenkov authored
vers_sys_type_t -> vers_kind_t
-
Aleksey Midenkov authored
1. Removed TIMESTAMP/TRANSACTION unit auto-detection in favor of default TIMESTAMP. Reasons: 1.1. rare practical use and doubtful advantage of such auto-detection; 1.2. it conflicts with MDEV-16226 (TRX_ID-based versioned tables performance improvement). Needless check_unit membership removed. 2. SQL: versioning type handling refactoring Vers_type_handler hierarchy stores versioning properties of type. virtual Type_handler::vers() accesses specialization of Vers_type_handler for specific type. virtual Vers_type_handler::kind() returns versioning kind (timestamp/trx_id). Removed Type_handler::Vers_history_point_check_unit() in favor of Type_handler::vers(). Renames: require_timestamp() -> require_timestamp_error() require_trx_id() -> require_trx_id_error() EDIT by Alexander Barkov (@abarkov): check_sys_fields() moved to Vers_type_handler::check_sys_fields()
-
Alexey Botchkov authored
First character of the key name is just skipped, so the escapement wasn't handled properly.
-
Marko Mäkelä authored
For release builds, do not declare unused variables. unpack_row(): Omit a debug-only variable from WSREP diagnostic message. create_wsrep_THD(): Fix -Wmaybe-uninitialized for the PSI_thread_key.
-
Sujatha authored
MDEV-20645: Replication consistency is broken as workers miss the error notification from an earlier failed group. Analysis: ======== In general if there are three groups. 1 - Inserts 32 which fails due to local entry '32' on slave. 2 - Inserts 33 3 - Inserts 34 Each group considers itself as a waiter and it waits for prior group 'waitee'. This is done in 'register_wait_for_prior_event_group_commit'. If there is no other parallel group being scheduled then no waitee will be there. Let us assume 3 groups are being scheduled in parallel. 3-> waits for 2-> waits for->1 '1' upon completion it checks is there any registered subsequent waiter. If so it wakes up the subsequent waiter with its execution status. This execution status is stored in wakeup_error. If '1' failed then it sends corresponding wakeup_error to 2. Then '2' aborts and it propagates error to '3'. So all further commits are aborted. This mechanism works only when all transactions reach a stage where they are waiting for their prior commit to complete. In case of optimistic following scenario occurs. 1,2,3 are scheduled in parallel. 3 - Reaches group_commit_code waits for 2 to complete. 1 - errors out sets stop_on_error_sub_id=1. When a group execution results in error its corresponding sub_id is set to 'stop_on_error_sub_id'. Any new groups queued for execution will check if their sub_id is > stop_on_error_sub_id. If it is true their execution will be skipped as prior group execution failed. 'skip_event_group=1' will be set. Since the execution of SQL thread is about to stop we just skip execution of all the following event groups. We still do all the normal waiting and wakeup processing between the event groups as a simple way to ensure that everything is stopped and cleaned up correctly. Upon error '1' transaction checks for registered waiters. Since no one is there it simply goes away. 2 - Starts the execution. It checks do I have a waitee. Since wait_commit_sub_id == entry->last_committed_sub_id no waitee is set. Secondly: 'entry->stop_on_error_sub_id' is set by '1'st execution. Now 'handle_parallel_thread' code checks if the current group 'sub_id' is greater than the 'sub_id' set within 'stop_on_error_sub_id'. Since the above is true 'skip_event_group=true' is set. Simply call 'wait_for_prior_commit' to wakeup all waiters. Group '2' didn't had any waitee and its execution is skipped. Hence its wakeup_error=0.It sends a positive wakeup signal to '3'. Which commits. This results in a missed transaction. i.e 33 is missed and 34 is committed. Fix: === When a worker learns that an earlier transaction execution has failed, and it should not proceed for further execution, it should mark its own execution status as failed so that it alerts its followers to abort as well.
-
- 29 Sep, 2019 1 commit
-
-
Alexander Barkov authored
-
- 28 Sep, 2019 3 commits
-
-
Sergei Golubchik authored
mark big_tables deprecated, the server can put temp tables on disk as needed avoiding "table full" errors. in case someone would really need to force a tmp table to be created on disk from the start and for testing allow tmp_memory_table_size to be set to 0. fix tests to use that instead (and add a test that it actually works). make sure in-memory TREE size limit is never 0 (it's [ab]using tmp_memory_table_size at the moment) remove few sys_vars.*_basic tests
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-