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
bsrikanth-mariadb
MDEV-39538: Different costs when same range is read twice

When same range is used as a filter, once in the outer query block, and
the second inside a sub query such as: -

select * from t1
  where year(a) = 2010 and c < (select count(*) from t1 where year(a) = 2010);

The Optimizer Context had two records for multi_range_read_info_const() call,
but had different cost vector members.
The cause is that the first table considered index-only scan on the range,
while the second considered non-index only scan.

However, when replaying the context, the same range got matched
twice, and the costs corresponding to that got returned twice.
Hence the costs in the explain plan output differed as well.

Solution
========
Include a new field called "call_number", while recording range contexts
into the overall context. This way, we could even match the call_number
and return the appropriate cost during replay.
Alexey Botchkov
MDEV-37262 XMLISVALID() schema validation function.

XMLVALID function added to the XMLTYPE plugin.
Raghunandan Bhat
MDEV-39227: Schema Versioning - Server-side

- SQL layer infrastructure for multiple versions of a table definition.
- Only a subset of DDLs- such as `ALTER TABLE COMMENT='...'` that dont
  need changes in storage engine and only changes the table metadata on
  the server side is functional.
- No storage engine changes; any DDLs that depends on the engine or is
  not yet supported.
- Replication/binlog, DDL log for crash recovery are not supported yet.
Marko Mäkelä
Avoid CopyFileEx() when copying parts of InnoDB log
Sergei Golubchik
MDEV-39821 heap-use-after-free in heap_rnext with tree indexes

heap_update() forgot to update key_changed
bsrikanth-mariadb
Add in_predicate_conversion_threshold to opt_related_sys_vars[].

Use tbl->db.str, tbl->table_name.str instead of tbl->get_db_name().str,
and tbl->get_table_name().str in append_full_table_name().
tbl_get_table_name() could return view names that are not stored in the
context, which could cause a warning to be raised during replay when
view name couldn't be found in the context.
Georg Richter
Backport CONC-805 to 3.3: Fix C23/glibc 2.43 const-correctness errors
Marko Mäkelä
Revert "Preserve the backup directory"

This reverts commit 56b8e279371a3a5194ae87e9575e32a0e6b5c743.
Georg Richter
Merge branch '3.3-buildbot' into 3.3
Marko Mäkelä
Fix up the checkpoint headers on Windows
Oleg Smirnov
Fix failing tests
Sergei Golubchik
MDEV-39816 MyISAM crash on corrupted MYI with invalid keyseg length

check that the keyseg lengths are sane.

fix Aria too.
Marko Mäkelä
fixup! c310d7cf477e8db2b4911d69985fc237cba5133f
Yuchen Pei
MDEV-15621 Auto add RANGE COLUMNS partitions by interval

Allow auto partitioning by interval in PARTITION BY RANGE COLUMNS

PARTITION BY RANGE COLUMNS (col_name)
INTERVAL interval [AUTO]
(
  PARTITION partition_name VALUES LESS THAN (value)
  [, PARTITION partition_name VALUES LESS THAN (value) ... ]
)

where

- col_name is the name of one column of type DATE or DATETIME or
  TIMESTAMP

- at least one partition is supplied, and the highest partition cannot
  have MAXVALUE range

- INTERVAL interval is a positive time interval. it can be mariadb
  format or oracle NUMTODSINTERVAL/NUMTOYMINTERVAL format. Like
  versioning, the smallest unit is second, i.e. no subsecond like
  microsecond.

- DATE column cannot have interval with values less than a day

When performing DML on such a table, it will first add partitions
by the specified interval until the partition covers the current time.

Partition addition will not cause an implicit commit like DDL normally
does.

The partitions are named pN.

Otherwise the table behaves exactly the same as a normal RANGE COLUMNS
partitioned table.

Note that TIMESTAMP is not allowed as a type for PARTITION BY RANGE
COLUMNS otherwise.
Alexey Botchkov
Fix for XMLTYPE.
Aquila Macedo
MDEV-34195 tests: avoid LP64 MYSQL size assert on x32

x32 defines __x86_64__ but uses the ILP32 ABI, so the LP64
sizeof(MYSQL) == 1272 compile-time assert is selected incorrectly
and breaks the build.

Guard the x86_64 check with !defined(__ILP32__) so the LP64 size assert
only applies to real amd64 LP64 builds, while leaving the existing
Windows amd64 and i386 checks unchanged.
Yuchen Pei
MDEV-15621 Auto add RANGE COLUMNS partitions by interval

Allow auto partitioning by interval in PARTITION BY RANGE COLUMNS

PARTITION BY RANGE COLUMNS (col_name)
INTERVAL interval [AUTO]
(
  PARTITION partition_name VALUES LESS THAN (value)
  [, PARTITION partition_name VALUES LESS THAN (value) ... ]
)

where

- col_name is the name of one column of type DATE or DATETIME or
  TIMESTAMP

- at least one partition is supplied, and the highest partition cannot
  have MAXVALUE range

- INTERVAL interval is a positive time interval. it can be mariadb
  format or oracle NUMTODSINTERVAL/NUMTOYMINTERVAL format. Like
  versioning, the smallest unit is second, i.e. no subsecond like
  microsecond.

- DATE column cannot have interval with values less than a day

When performing DML on such a table, it will first add partitions
by the specified interval until the partition covers the current time.

Partition addition will not cause an implicit commit like DDL normally
does.

The partitions are named pN.

Otherwise the table behaves exactly the same as a normal RANGE COLUMNS
partitioned table.

Note that TIMESTAMP is not allowed as a type for PARTITION BY RANGE
COLUMNS otherwise.
Sergei Golubchik
MDEV-39817 JSON_ARRAYAGG() returns garbage because of off-by-one error

don't truncate to a position somewhere between
[old_length, max_length-1] if old_length == max_length.
Simply set the length to old_length in this case.

Also, max_length cannot be zero.
PranavKTiwari
Added test case.
Alexey Botchkov
MDEV-37262 XMLISVALID() schema validation function.

XMLVALID function added to the XMLTYPE plugin.
Thirunarayanan Balathandayuthapani
MDEV-34998 Assertion `n_fields > n_cols || type & 32' failed in dict_index_t::init_change_cols on ALTER

Problem:
=======
During ALTER TABLE with column type modification and index addition,
InnoDB aborts with an assertion failure when processing collation
changes for single-column secondary indexes.

Solution:
========
dict_index_t::init_change_cols(): A single-column prefix secondary
index can have n_cols == n_fields when the column is the same as
the primary key column and undergoes a collation or type change
during ALTER TABLE.
PranavKTiwari
MDEV-36896 : Assertion 'marked_for_read()' failed in virtual String *Field_varstring::val_str(String *, String *)
update_virtual_field() uses tmp_set only as an accumulator during dependency traversal. The walk itself sets all required bits for the current virtual-column evaluation. Clearing tmp_set beforehand is not required to discover the current dependencies, but it does remove previously established bits. Since find_all_keys() aliases tmp_set as both read_set and write_set, clearing tmp_set also clears the active column maps. Replacing tmp_set with an independent bitmap or avoiding the clear eliminates the issue and all regression tests continue to pass.
Oleg Smirnov
Fix failing tests
Marko Mäkelä
Preserve the backup directory
Marko Mäkelä
Avoid CopyFileEx() when copying parts of InnoDB log
Yuchen Pei
MDEV-39805 MDEV-39790 signal EOF in "unordered" partition index scans

This is a follow-up fix to MDEV-39535
96531691c18ebea4993454ee9d355e60ad9bea07 and MDEV-20195
8721a00dd38dc0aa1514a3b5ca8c95c6e94af1c9.

In those two fixes we added check for m_part_spec.start_part ==
NO_CURRENT_PART_ID (a typical sign of EOF) in
ha_partition::handle_unordered_prev and
ha_partition::handle_unordered_next respectively. However, because of
MDEV-37330 496aecf9251e3d74b83285f4e787daa9d8c37ae4, we skip a call to
handle_unordered_scan_next_partition inside these functions on
EOF (error == HA_ERR_END_OF_FILE and we have run out of partitions to
scan), whereas prior to MDEV-37330
496aecf9251e3d74b83285f4e787daa9d8c37ae4, it would call
handle_unordered_scan_next_partition which sets
m_part_spec.start_part= NO_CURRENT_PART_ID.

So in this patch we restore setting m_part_spec.start_part to
NO_CURRENT_PART_ID to signal EOF.
Yuchen Pei
MDEV-20195 Check for signs of EOF in partition "unordered scan"

When running HANDLER commands, there is no optimization to detect
const tables of empty rows and the handler states are not reset
between HANDLER NEXT statements, either in ha_partition::reset or in
ha_partition::partition_scan_set_up (for m_part_spec.start_part,
relevant to this task)

When doing a partition "unordered scan" (i.e. an ordered scan without
using priority queues), with the "first scan" in
ha_partition::handle_unordered_scan_next_partition, EOF causes
NO_CURRENT_PART_ID to be assigned to m_part_spec.start_part. In the
"subsequent scan" ha_partition::handle_unordered_next should check
this condition and return EOF directly, just like the "ordered scan"
ha_partition::handle_ordered_next.
Marko Mäkelä
Avoid CopyFileEx() when copying parts of InnoDB log
Marko Mäkelä
Avoid CopyFileEx() when copying parts of InnoDB log
bsrikanth-mariadb
MDEV-39791: Handle count aggregate optimization for replay purpose

Separately dump into the optimizer context, the count aggregation value
of any one non-nullable column of a table if any are used in the query.
This is only suppoerted for myisam tables.

During opt_sum_query() call, record the count aggregation values into
the optimizer context recorder. Once the context is being stored into
the information_schema table, dump all these recorded values into it.

During replay, parse the count aggregate values and store them in memory.
Later when opt_sum_query() requires the count value, hook the recorded
value from the parsed context.
Yuchen Pei
MDEV-39805 MDEV-39790 signal EOF in "unordered" partition index scans

This is a follow-up fix to MDEV-39535
96531691c18ebea4993454ee9d355e60ad9bea07 and MDEV-20195
8721a00dd38dc0aa1514a3b5ca8c95c6e94af1c9.

In those two fixes we added check for m_part_spec.start_part ==
NO_CURRENT_PART_ID (a typical sign of EOF) in
ha_partition::handle_unordered_prev and
ha_partition::handle_unordered_next respectively. However, because of
MDEV-37330 496aecf9251e3d74b83285f4e787daa9d8c37ae4, we skip a call to
handle_unordered_scan_next_partition inside these functions on
EOF (error == HA_ERR_END_OF_FILE and we have run out of partitions to
scan), whereas prior to MDEV-37330
496aecf9251e3d74b83285f4e787daa9d8c37ae4, it would call
handle_unordered_scan_next_partition which sets
m_part_spec.start_part= NO_CURRENT_PART_ID.

So in this patch we restore setting m_part_spec.start_part to
NO_CURRENT_PART_ID to signal EOF.
Alexey Botchkov
MDEV-37262 XMLISVALID() schema validation function.

XMLVALID function added.
Alexey Botchkov
fix.
Dave Gosselin
Update table_elim for FULL JOIN base table check

Two EXPLAIN queries in table_elim place a nested join on the right
side of a FULL JOIN.  Phase 2 supports only base tables there, so
check_full_join_base_tables rejects them with
ER_FULL_JOIN_BASE_TABLES_ONLY.
PranavKTiwari
Added file.
PranavKTiwari
Test commit.
Yuchen Pei
MDEV-39789 Fix compiling without perfschema