- 16 Nov, 2018 8 commits
-
-
Marko Mäkelä authored
dict_index_t::db_trx_id(): Return the position of DB_TRX_ID. Only valid for the clustered index. dict_index_t::db_roll_ptr(): Return the position of DB_ROLL_PTR. Only valid for the clustered index. dict_index_get_sys_col_pos(): Remove. This was performing unnecessarily complex computations, which only made sense for DB_ROW_ID, which would exist either as the first field in the clustered index or as the last field in a secondary index (only when a DB_ROW_ID column is materialised). row_sel_store_row_id_to_prebuilt(): Remove, and replace with simpler code. row_upd_index_entry_sys_field(): Remove. btr_cur_log_sys(): Replaces row_upd_write_sys_vals_to_log(). btr_cur_write_sys(): Write DB_TRX_ID,DB_ROLL_PTR to a data tuple.
-
Marko Mäkelä authored
row_import_set_sys_max_row_id(): Change the return type to void, and access the first column (DB_ROW_ID) directly.
-
Marko Mäkelä authored
fts_get_max_doc_id(): Remove totally unnecessary call to rec_get_offsets(). In FTS_DOC_ID_INDEX, the FTS_DOC_ID is always stored in the first 8 bytes of the record. fts_get_doc_id_from_row(): Get the offsets from the caller. row_ins_foreign_check_on_constraint(): Invoke rec_get_offsets() for the call.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
dict_index_t::reconstruct_fields(): Correctly permute the fields of the columns. The code was totally wrong in MDEV-15562. It would only work when columns are added last or dropped, but not when columns are permuted.
-
Marko Mäkelä authored
row_ins_clust_index_entry_low(): Do not attempt to read an AUTO_INCREMENT column value from a metadata record, because it does not make any sense. Moreover, the field offset would be off by one in case the AUTO_INCREMENT column is not part of the PRIMARY KEY, because the MDEV-15562 metadata record would contain an extra field at index->first_user_field(). On MariaDB Server 10.3 after MDEV-11369, we would unnecessarily read a dummy AUTO_INCREMENT value from the metadata record, but that value would always be written as NULL or 0, so there is no problem.
-
Eugene Kosov authored
Remove one totally dead monitor.
-
Alexander Barkov authored
modified: ../sql-common/my_time.c Moving the logic that mixes warnings of two kinds: - those came from truncating garbage before the actual parsing of date/time - those came during the actual parsing from outside to inside of str_to_datetime_or_date_body(). This makes the caller code easier and removes some code duplication. We'll be adding more parsing functions for time intervals soon, so this change helps to avoid more duplicate code in the coming functions.
-
- 14 Nov, 2018 2 commits
-
-
Alexander Barkov authored
-
Alexander Barkov authored
-
- 12 Nov, 2018 2 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
- 09 Nov, 2018 3 commits
-
-
Marko Mäkelä authored
dict_instant_t::non_pk_col_map: Change the type to uint16_t The persistent storage for this metadata is only 16 bits. dict_table_t::serialise_columns(): Define inline.
-
Marko Mäkelä authored
-
Daniel Bartholomew authored
-
- 08 Nov, 2018 4 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
The following merges changed sql_yacc.yy but not sql_yacc_ora.yy: commit 862af4d2 commit df563e0c Apply the same fixes to the other parser.
-
Marko Mäkelä authored
-
Alexander Barkov authored
MDEV-17625 Different warnings when comparing a garbage to DATETIME vs TIME - Splitting processes of data type conversion (to TIME/DATE,DATETIME) and warning generation. Warning are now only get collected during conversion (in an "int" variable), and are pushed in the very end of conversion (not in parallel). Warnings generated by the low level routines str_to_xxx() and number_to_xxx() can now be changed at the end, when TIME_FUZZY_DATES is applied, from "Invalid value" to "Truncated invalid value". Now "Illegal value" is issued only when the low level routine returned an error and TIME_FUZZY_DATES was not set. Otherwise, if the low level routine returned "false" (success), or if NULL was converted to a zero datetime by TIME_FUZZY_DATES, then "Truncated illegal value" is issued. This gives better warnings. - Methods Type_handler::Item_get_date() and Type_handler::Item_func_hybrid_field_type_get_date() now only convert and collect warning information, but do not push warnings. - Changing the return data type for Type_handler::Item_get_date() and Type_handler::Item_func_hybrid_field_type_get_date() from "bool" to "void". The conversion result (success vs error) can be checked by testing ltime->time_type. MYSQL_TIME_{NONE|ERROR} mean mean error, other values mean success. - Adding new wrapper methods Type_handler::Item_get_date_with_warn() and Type_handler::Item_func_hybrid_field_type_get_date_with_warn() to do conversion followed by raising warnings, and changing the code to call new Type_handler::***_with_warn() methods. - Adding a helper class Temporal::Status, a wrapper for MYSQL_TIME_STATUS with automatic initialization. - Adding a helper class Temporal::Warn, to collect warnings but without actually raising them. Moving a part of ErrConv into a separate class ErrBuff, and deriving both Temporal::Warn and ErrConv from ErrBuff. The ErrBuff part of Temporal::Warn is used to collect textual representation of the input data. - Adding a helper class Temporal::Warn_push. It's used to collect warning information during conversion, and automatically pushes warnings to the diagnostics area on its destructor time (in case of non-zero warning). - Moving more code from various functions inside class Temporal. - Adding more Temporal_hybrid constructors and protected Temporal methods make_from_xxx(), which convert and only collect warning information, but do not actually raise warnings. - Now the low level functions str_to_datetime() and str_to_time() always set status->warning if the return value is "true" (error). - Now the low level functions number_to_time() and number_to_datetime() set the "*was_cut" argument if the return value is "true" (error). - Adding a few DBUG_ASSERTs to make sure that str_to_xxx() and number_to_xxx() always set warnings on error. - Adding new warning flags MYSQL_TIME_WARN_EDOM and MYSQL_TIME_WARN_ZERO_DATE for the code symmetry. Before this change there was a special code path for (rc==true && was_cut==0) which was treated by Field_temporal::store_invalid_with_warning as "zero date violation". Now was_cut==0 always means that there are no any error/warnings/notes to be raised, not matter what rc is. - Using new Temporal_hybrid constructors in combination with Temporal::Warn_push inside str_to_datetime_with_warn(), double_to_datetime_with_warn(), int_to_datetime_with_warn(), Field::get_date(), Item::get_date_from_string(), and a few other places. - Removing methods Dec_ptr::to_datetime_with_warn(), Year::to_time_with_warn(), my_decimal::to_datetime_with_warn(), Dec_ptr::to_datetime_with_warn(). Fixing Sec6::to_time() and Sec6::to_datetime() to convert and only collect warnings, without raising warnings. Now warning raising functionality resides in Temporal::Warn_push. - Adding classes Longlong_hybrid_null and Double_null, to return both value and the "IS NULL" flag. Adding methods Item::to_double_null(), to_longlong_hybrid_null(), Item_func_hybrid_field_type::to_longlong_hybrid_null_op(), Item_func_hybrid_field_type::to_double_null_op(). Removing separate classes VInt and VInt_op, as they have been replaced by a single class Longlong_hybrid_null. - Adding a helper method Temporal::type_name_by_timestamp_type(), moving a part of make_truncated_value_warning() into it, and reusing in Temporal::Warn::push_conversion_warnings(). - Removing Item::make_zero_date() and Item_func_hybrid_field_type::make_zero_mysql_time(). They provided duplicate functionality. Now this code resides in Temporal::make_fuzzy_date(). The latter is now called for all Item types when data type conversion (to DATE/TIME/DATETIME) is involved, including Item_field and Item_direct_view_ref. This fixes MDEV-17563: Item_direct_view_ref now correctly converts NULL to a zero date when TIME_FUZZY_DATES says so.
-
- 07 Nov, 2018 12 commits
-
-
Igor Babaev authored
This bug in the code of the function With_element::check_unrestricted_recursive() could force a recursive CTE to be executed in a non-standard compliant mode in which recursive UNION ALL could lead to an infinite execution. This problem could occur only in the case when this CTE was used by another recursive CTE at least twice.
-
Andrei Elkin authored
There was a failure in rpl_delayed_slave after recent MDEV-14528 commit. The parallel applier should not set its Relay_log::last_master_timestamp from Format-descriptor log event. The latter may reflect a deep past so Seconds-behind-master will be computed through it and displayed all time while the first possibly "slow" group of events is executed. The main MDEV-14528 is refined, rpl_delayed_slave now passes also in the parallel mode.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Remove the separate test innodb.alter_instant, because it can be easily mistaken for innodb.instant_alter, which in turn is covering various instant ALTER TABLE operations.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Alexander Barkov authored
-
Oleksandr Byelkin authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Vladislav Vaintroub authored
Fix is not to use blocking socket IO during SSL handshake. With non-blocking socket IO, threadpool is able to utilize the wait notification callbacks, that vio_io_wait() is calling whenever socket would block.
-
- 06 Nov, 2018 9 commits
-
-
Igor Babaev authored
when using brackets Do not create master unit for select if it has already one.
-
Igor Mazur authored
When replicated events are from Master unaware of MariaDB GTID their handling by the Parallel slave misses Seconds_Behind_Master updating. In the bug condition the Show-Slave-Status' field remains unchanged. Because in such case event execution is sequential the bug is fixed with deploying the same logics as in the explicit single-threaded mode with is to set Relay_log_event::last_master_timestamp member early at the end of event reading from the relay log.
-
Marko Mäkelä authored
-
Sergei Petrunia authored
It tests SQL-level feature that is available in FB/MySQL and not in MariaDB
-
Sergei Golubchik authored
add a test case
-
Vladislav Vaintroub authored
-
Sergei Golubchik authored
ping is not a reliable way to detect github's availability
-
Sergei Golubchik authored
-
Anel Husakovic authored
-