Home - Waterfall Grid T-Grid Console Builders Recent Builds Buildslaves Changesources - JSON API - About

Console View


Categories: connectors experimental galera main
Legend:   Passed Failed Warnings Failed Again Running Exception Offline No data

connectors experimental galera main
PranavKTiwari
MDEV-26820 Assertion 'marked_for_read()' failed upon SELECT with VALUE(virtual column)
Problem:
Item_insert_value::fix_fields() created a temporary field
without preserving vcol_info. As a result, VALUE()/VALUES()
on virtual columns lost dependency metadata and could trigger:

Assertion `marked_for_read()' failed during virtual column evaluation.

Cause:
The temporary Field_string copied field_index but did not copy virtual column metadata from the original field.

Fix:
Preserve vcol_info when creating temporary fields in Item_insert_value::fix_fields() so virtual column dependency
tracking remains intact.
Vladislav Vaintroub
meh7
Marko Mäkelä
Add a separate test backup.backup_stream
Aleksey Midenkov
MDEV-39384 Wrong result when selecting from precise-versioned table

Const item behave wrongly in read_record loop. const_item() turns on
cache in Arg_comparator::cache_converted_constant().

The fix manipulates table->map to force Item_field to be non-const.
Vladislav Vaintroub
Tests - remove user created in test_bind_address.

mtr is unhappy with unit.conc_connection otherwise, says
"MTR's internal check of the test case 'unit.conc_connection' failed."
Vladislav Vaintroub
Fix broken CI

Fix timing and enviroment errors on CI runs
Aleksey Midenkov
MDEV-39384 Use index in TR_table::query

TR_table::query() used table scan. Now utilize the index if possible,
with minimum validity detection. Getting trx_id by commit_ts is still
suboptimal is it does two index accesses (as limited by fields in
commit_ts index).

When the index detection fails TR_table::query() falls back to
original table scanning method.

FIXME: test case
Aleksey Midenkov
MDEV-39384 Wrong result when selecting from precise-versioned table

Const item behave wrongly in read_record loop. const_item() turns on
cache in Arg_comparator::cache_converted_constant().

The fix manipulates table->map to force Item_field to be non-const.

FIXME: test case
diego
[fix] prevent SSL/TLS CRL test hangs
Marko Mäkelä
Revert "Experiment: Disable copy_file_range"

This reverts commit 08d2218ba72a45ba9d0453817973bf9b25f4de32.
Sergei Petrunia
MDEV-39720: Optimizer Trace doesn't quote string values, may have invalid JSON

- Make Json_writer::add_str() do the quoting with json_escape_to_string().
  = All other string writing methods are handled as they call this one.
- Move json_escape_to_string() from opt_histogram_json.cc to
  my_json_writer.cc. This is needed because JSON writer unit tests do not
  link with opt_histogram_json.
- Histogram code does its own escaping (with handling for special cases).
  Add Json_writer::add_escaped_str() to accept escaped strings.
  This is not intended to be commonly used.
- opt_trace_print_expanded_query() did its own escaping for
  "expanded_query" string. It was done in MDEV-30354. Remove escaping
  there to avoid double escaping.
- dump_record_to_trace() also did own escaping when writing table DDLs
  into the optimizer trace. Remove double escaping.
- Adjust my_json_writer unit test.
Sergei Petrunia
MDEV-39005: Assertion failure on hint-forced Split-Materialized plan

The problem: consider a query in form:
  t1 JOIN (SELECT a FROM t2 GROUP BY a) dt ON dt.a=t1.a

After fix for MDEV-30877, the optimizer computes the number of GROUP BY
groups that we will have in the materialized derived table. It is saved
into TABLE(dt)->used_stat_records and propagates into
TABLE(dt)->opt_range_condition_rows.

On the other hand, the Split-Materialized optimization tries to compute
the number of rows in the temp. table when we're running in the the
Split-Materialized mode and only populate the matching groups' rows there.

These numbers may come into disagreement: Split-Materialized may produce
a higher number, save it into JOIN_TAB::records and cause an assertion
failure in cardinality code due to having

  table->opt_range_condition_rows > join_tab->records

Split-Materialized code's computations omit a lot, like the whole grouping
operation.
For now, use a trivial fix: make sure Split-Materialized's estimate of
JOIN_TAB::records doesn't exceed the derived table size.
diego
[misc] ensure fail-fast is disabled for CI job strategy second part
Vladislav Vaintroub
meh6
Aleksey Midenkov
WITHOUT_ABI_CHECK followup

Followup for b337e14440b as info_src takes time too.
info_src does not make much sense without ABI check.
Marko Mäkelä
fixup! e09f1176375031b7c812f474da52985a4c61a77e
Marko Mäkelä
backup_server: Generate the stream.bat with perl
PranavKTiwari
MDEV-36896 Assertion 'marked_for_read()' failed in virtual my_time_t Field_timestamp0::get_timestamp(const uchar*, ulong*) const.

Problem:
SELECT on a table with a TIMESTAMP column and a virtual column
expression containing a field reference crashes with assertion
marked_for_read() in Field_timestamp0::get_timestamp.

Cause:
convert_item_for_comparison() physically evaluates the subject item
via Datetime dt(thd, subject, ...) to attempt a TIMESTAMP vs DATETIME
optimization. During vcol_fix_expr() at open_table() time,
used_tables_cache is not yet propagated up the item tree, causing
const_item() to return true incorrectly for a non-constant expression
containing a field reference. The evaluation then reads Field_timestamp0
before read bitmaps are initialized, violating marked_for_read().

Fix:
Add find_field_processor() to the Item base class, overridden in
Item_field to return true. Guard convert_item_for_comparison() with
a walk() check to skip physical evaluation if the subject subtree
contains any field reference.
diego
[misc] ensure fail-fast is disabled for server job strategy
Marko Mäkelä
Fix backup.backup_stream on Windows
Aleksey Midenkov
MDEV-39384 Use index in TR_table::query

TR_table::query() used table scan. Now utilize the index if possible,
with minimum validity detection. Getting trx_id by commit_ts is still
suboptimal is it does two index accesses (as limited by fields in
commit_ts index).

When the index detection fails TR_table::query() falls back to
original table scanning method.
PranavKTiwari
MDEV-36896 Assertion 'marked_for_read()' failed in virtual my_time_t Field_timestamp0::get_timestamp(const uchar*, ulong*) const.

Problem:
SELECT on a table with a TIMESTAMP column and a virtual column
expression containing a field reference crashes with assertion
marked_for_read() in Field_timestamp0::get_timestamp.

Cause:
convert_item_for_comparison() physically evaluates the subject item
via Datetime dt(thd, subject, ...) to attempt a TIMESTAMP vs DATETIME
optimization. During vcol_fix_expr() at open_table() time,
used_tables_cache is not yet propagated up the item tree, causing
const_item() to return true incorrectly for a non-constant expression
containing a field reference. The evaluation then reads Field_timestamp0
before read bitmaps are initialized, violating marked_for_read().

Fix:
Add find_field_processor() to the Item base class, overridden in
Item_field to return true. Guard convert_item_for_comparison() with
a walk() check to skip physical evaluation if the subject subtree
contains any field reference.
Aleksey Midenkov
MDEV-39384 Wrong result when selecting from precise-versioned table

Const item behave wrongly in read_record loop. const_item() turns on
cache in Arg_comparator::cache_converted_constant().

The fix manipulates table->map to force Item_field to be non-const.

FIXME: test case
copilot-swe-agent[bot]
MDEV-39384: Add regression test for TRT query correctness
PranavKTiwari
MDEV-30297 Server crash / assertion failure in Compare_identifiers::operator upon dropping period with empty name

Problem:
ALTER TABLE ... DROP PERIOD IF EXISTS FOR can trigger an assertion failure in debug builds and crash in non-debug builds.

Cause:
Lex_cstring_with_compare::streq() may invoke Compare_identifiers on default-constructed Lex_cstring objects (str == NULL, length == 0). Compare_identifiers assumes non-null string pointers and asserts or crashes when called with a null pointer.

Fix:
Add null-pointer handling to Lex_cstring_with_compare::streq() and avoid calling Compare_identifiers when either string pointer is null. This prevents invalid comparisons while preserving existing behavior for initialized strings.
Aleksey Midenkov
MDEV-39384 Debug trace

mtrr --mysqld=--debug=d,vers_trx_id,query:i:o,/tmp/good.log bug/v.trx_id,debug
Vladislav Vaintroub
increase connection timeout for tls.c/test_crl a little bit

Many failures on CI otherwise
Vladislav Vaintroub
Fix broken CI

Fix timing and enviroment errors on CI runs
Marko Mäkelä
Tolerate noexec on /dev/shm (mysql-test/mtr --mem)
Marko Mäkelä
fixup
forkfun
MDEV-35630 Wrong ER_FK_COLUMN_CANNOT_CHANGE with a STORED column before the FK column

prepare_inplace_alter_table() maps a field position to an InnoDB
cols[] position by skipping columns absent from that array. It used
Field::vcol_info, which is also set for STORED generated columns, so
such a column shifted the mapping by one and the FK-membership check
examined the wrong column, raising a false ER_FK_COLUMN_CANNOT_CHANGE.

Skip only truly virtual columns: use !stored_in_db() instead of
vcol_info.
diego
[misc] simplify server plugin build flags
PranavKTiwari
MDEV-26820: Copy vcol_info in Item_insert_value temp field

Preserve vcol_info when creating temporary fields in
Item_insert_value::fix_fields() so VALUE()/VALUES() works
correctly with virtual columns and does not lose dependency
tracking.
PranavKTiwari
MDEV-28610 : Assertion  marked_for_read() failed upon range select with virtual column in index.
Problem:
Executing a range select using an index that includes virtual/generated columns
(e.g. SELECT ... WHERE c BETWEEN ... ORDER BY d) could trigger:

Assertion 'marked_for_read()' failed in Field access during execution.

Cause:
The keyread initialization path was populating table->read_set using
mark_index_columns(), which follows the non-recursive index marking path.
This only marks direct index fields and does not resolve dependencies of
virtual/generated columns.

As a result, when an index contained virtual columns, their dependent base
columns were not included in read_set, leading to invalid access during
later evaluation of virtual columns.

Fix:
Replace mark_index_columns() with mark_index_columns_for_read() in the
keyread initialization path. This ensures the recursive read-marking logic is
used, so virtual/generated column dependencies are correctly propagated into
read_set before execution.
Aleksey Midenkov
MDEV-39384 Use index in TR_table::query

TR_table::query() used table scan. Now utilize the index if possible,
with minimum validity detection. Getting trx_id by commit_ts is still
suboptimal is it does two index accesses (as limited by fields in
commit_ts index).

When the index detection fails TR_table::query() falls back to
original table scanning method.

FIXME: test case
Rex Johnston
MDEV-39499 Updates to derived-with-keys, window functions determining

..records per key

Enabling derived keys optimization for derived.col = const pushed
conditions.

Estimating records per key in derived key for the optimizer
based on form and/or size of components of a derived table.

Consider any derived table of the form

SELECT ..., ROW_NUMBER ()  OVER (PARTITION BY c1,c2 order by ...)
FROM t1, t2, t3 ...
WHERE ...

If the optimizer generates a key on this derived table because of
a constraint being pushed into it, it currently will not consider key
components of the form  col = const

We lift this constraint and add code to TABLE::add_tmp_key to search
for a window function ROW_NUMBER().  From the partition list c1, c2 we
can in infer an estimate of the number of rows we expect to see for
each key value.  In the absence of EITS, we still have an number of
expected records in our referred to table and will fall back to using
that as a worst case scenario.

As a consequence of forcing best_access_path to now consider a generated
index's records per key on any type of derived table, we see a number of
optimization changes, for example a range optimizer might now be
considered best and might return IMPOSSIBLE_RANGE (seen in
rowid_filter_myisam.result).
Raghunandan Bhat
MDEV-38971: ASAN/UBSAN errors, assertion `is_valid_value_slow()` failure upon combination temporal functions and `ZERO_DATE_TIME_CAST`

Problem:
  The following temporal functions-
  - `Item_func_last_day::get_date`
  - `Item_date_typecast::get_date`
  - `Item_datetime_typecast::get_date` forwarded the TIME_INTERVAL_DAY /
  TIME_INTERVAL_hhmmssff flags, set by an enclosing EXTRACT, into the
  DATE/DATETIME conversion of their argument.This made, for ex:
  LAST_DAY(200012010000) and CAST(200012010000 AS DATETIME) parse number
  as TIME interval instead of a DATETIME. Under ZERO_DATE_TIME_CAST
  that hour became an out-of-range month, overflowing days_in_month in
  `check_date` and invalidating the Datetime.

Fix:
  A DATE / DATETIME can never be an interval, so suppress the
  TIME_INTERVAL_hhmmssff / TIME_INTERVAL_DAY flags when `LAST_DAY` and
  `CAST` converts its argument. Also add a debug assert in `check_date`
  to catch any future caller that violates its "month is assumed valid"
  contract.
Vladislav Vaintroub
meh7