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
Dave Gosselin
MDEV-39856: innochecksum help never stops printing whitespace

The help printer wraps each option description at spaces so it fits a
fixed column.  When a single word is wider than that column there is
no space to break on, so it stops advancing and prints blank,
indented lines without end.  Running innochecksum with no arguments
showed this after a long documentation link was placed in an option
description, but any tool with a similar description is affected.

When a word does not fit the column, print it whole on its own line
instead of looping.  If it is the last word in the description, leave
it for the final write so the help does not end on a blank line.
Bill Jin
MDEV-39548 Further cleanup of MDL_request boilerplate

- Change thd->backup_commit_lock from MDL_request* to MDL_ticket*,
  and convert related call sites in handler.cc, log.cc, sql_class.cc,
  and xa.cc to use MDL_ACQUIRE_LOCK.

- Convert reload_acl_and_cache() in sql_reload.cc, purge_master_logs()
  and reset_master() in sql_repl.cc to MDL_ACQUIRE_LOCK, holding the
  ticket in a local MDL_ticket* (these functions used a local
  MDL_request originally and should not touch thd->backup_commit_lock).

- Convert acquire_lock() in partition_info.cc to MDL_ACQUIRE_LOCK.

- Add MDL_REQUEST_LIST_ADD() helper for enqueuing lock requests into
  MDL_request_list, and convert call sites in sql_base.cc and sp.cc.

All new code of the whole pull request, including one or several files
that are either new files or modified ones, are contributed under the
BSD-new license. I am contributing on behalf of my employer Amazon Web
Services, Inc.
Dave Gosselin
MDEV-39602: Document the join_type enumeration

Replace the one line comment on join_type in sql_select.h with a
comment on each value.  Each comment explains what the access method
is, the conditions under which the optimizer chooses it, and what
EXPLAIN will show for it.
Georg Richter
Backport CONC-805 to 3.3: Fix C23/glibc 2.43 const-correctness errors
  • cc-x-codbc-windows: 'dojob pwd if '3.4' == '3.4' ls win32/test SET TEST_DSN=master SET TEST_DRIVER=master SET TEST_PORT=3306 SET TEST_SCHEMA=odbcmaster if '3.4' == '3.4' cd win32/test if '3.4' == '3.4' ctest --output-on-failure' failed -  stdio
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

- Subpartitions are allowed, but restricted to existing subpartition
  types, i.e. [LINEAR] (KEY|HASH)

When performing one of the following DML statements on such a table,
it will first add partitions by the specified interval until the
partition covers the current time:

- INSERT
- INSERT ... SELECT
- LOAD
- UPDATE
- REPLACE
- REPLACE ... SELECT

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.
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

- Subpartitions are allowed, but restricted to existing subpartition
  types, i.e. [LINEAR] (KEY|HASH)

When performing one of the following DML statements on such a table,
it will first add partitions by the specified interval until the
partition covers the current time:

- INSERT
- INSERT ... SELECT
- LOAD
- UPDATE
- REPLACE
- REPLACE ... SELECT

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.
Oleksandr Byelkin
Fix MDEV-39207 test (skip if ha_example is not built)
Alexey Botchkov
MDEV-37262 XMLISVALID() schema validation function.

XMLISVALID function added to the XMLTYPE plugin.
Sergei Petrunia
main.selectivity: add -disable_replay next_query Dont support optimizer_use_condition_selectivity=5
bsrikanth-mariadb
Fix opt_context_load_stats_basic test failures

New table stat fields got added, which cause the offset of the existing
test to change. Fixed the result file.
Sergei Petrunia
Add note_verbosity and sort_buffer size to relevant variables

note_verbosity fixes main.null_key test
sort_buffer_size fixes main.index_intersect_innodb
Georg Richter
Merge branch '3.3-buildbot' into 3.3
  • cc-x-codbc-windows: 'dojob pwd if '3.4' == '3.4' ls win32/test SET TEST_DSN=master SET TEST_DRIVER=master SET TEST_PORT=3306 SET TEST_SCHEMA=odbcmaster if '3.4' == '3.4' cd win32/test if '3.4' == '3.4' ctest --output-on-failure' failed -  stdio
Georg Richter
Fix asan error:

Don't initialize mysql connection handle before
checking skip conditions
  • cc-x-codbc-windows: 'dojob pwd if '3.4' == '3.4' ls win32/test SET TEST_DSN=master SET TEST_DRIVER=master SET TEST_PORT=3306 SET TEST_SCHEMA=odbcmaster if '3.4' == '3.4' cd win32/test if '3.4' == '3.4' ctest --output-on-failure' failed -  stdio
bsrikanth-mariadb
--disable_replay: show_explain, update

disable tests that have subqueries computed at optimization time
Razvan Liviu Varzaru
MDBF-1214 Use HEAD for Git source package archives (#312)

MDBF-1214 Clean up and simplify Git source archive generation

Buildbot source package builds can run from a shallow detached checkout
created by fetching a specific commit and checking out FETCH_HEAD. In that
state, git show-branch may not report a branch name, leaving GIT_BRANCH
empty and causing git archive to fail.

To resolve this, archive HEAD directly instead. This packages the commit
that CMake is building, regardless of whether it was checked out from
a branch, tag, or detached CI commit.

Additionally, this simplifies the archive generation logic:
- Combined the duplicated zip archive commands for WIN32 and non-WIN32
  branches into a single command before the platform-specific block.
- On non-Windows platforms, configured git archive to write tar.gz directly,
  eliminating the separate, uncompressed tar and gzip compression step.
  • cc-x-codbc-windows: 'dojob pwd if '3.4' == '3.4' ls win32/test SET TEST_DSN=master SET TEST_DRIVER=master SET TEST_PORT=3306 SET TEST_SCHEMA=odbcmaster if '3.4' == '3.4' cd win32/test if '3.4' == '3.4' ctest --output-on-failure' failed -  stdio
Marko Mäkelä
Fix the Windows glitch
Sergei Petrunia
When saving/replaying multi_range_read_info_const, also save/replay mrr_mode

Fixes main.partition_mrr_aria, main.partition_mrr_myisam.
Michal Schorm
CONC-813, CONC-814 Fix UBSan errors

sint4korr (non-x86 path): the expression
`(int16)(A)[3] << 24` causes signed integer overflow
when byte value >= 128, since 128<<24 exceeds INT32_MAX.
Redefine as `(int32) uint4korr(A)` to compute in unsigned
arithmetic, matching the server (my_byteorder.h:137-140).
The next line sint8korr already uses this same pattern:
`(longlong) uint8korr(A)`.

convert_from_long (MYSQL_TYPE_DOUBLE, MYSQL_TYPE_FLOAT):
casting double/float back to ulonglong/longlong for
truncation detection is undefined when the float value
is outside the representable integer range. For example,
`(double)ULONGLONG_MAX` rounds up to 2^64 in IEEE 754
(not exactly representable with 53-bit mantissa), so
`(ulonglong)dbl` overflows. Similarly for LONGLONG_MAX.
Add range checks before the cast using `>=` for upper
bounds (since the double rounds up past the integer max)
and `<` for LONGLONG_MIN (exactly representable as -2^63).
Out-of-range values set the truncation error flag directly,
short-circuiting the dangerous cast via `||` evaluation.
This matches the server pattern in sql/field.cc and
sql/sql_select.cc (double_to_ulonglong macro).

Co-Authored-By: Claude AI <[email protected]>
  • cc-x-codbc-windows: 'dojob pwd if '3.4' == '3.4' ls win32/test SET TEST_DSN=master SET TEST_DRIVER=master SET TEST_PORT=3306 SET TEST_SCHEMA=odbcmaster if '3.4' == '3.4' cd win32/test if '3.4' == '3.4' ctest --output-on-failure' failed -  stdio
Dave Gosselin
MDEV-39856: innochecksum help never stops printing whitespace

The help printer wraps each option description at spaces so it fits a
fixed column.  When a single word is wider than that column there is
no space to break on, so it stops advancing and prints blank,
indented lines without end.  Running innochecksum with no arguments
showed this after a long documentation link was placed in an option
description, but any tool with a similar description is affected.

When a word does not fit the column, print it whole on its own line
instead of looping.  If it is the last word in the description, leave
it for the final write so the help does not end on a blank line.
Sergei Petrunia
Make Optimizer Context include "subquery_runs": [ NNN, ...].

This shows that subquery(ies) were executed at the optimization phase.
There is no way to replay this, so we do not parse this back.

The idea is to allow "--replay-server" detect this and not try
replaying such queries.
Alexey Botchkov
MDEV-37262 XMLISVALID() schema validation function.

XMLVALID function added to the XMLTYPE plugin.
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.
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.
Rex Johnston
MDEV-39495 Parallel Query:comments and code cleanup
Yuchen Pei
MDEV-15621 [refactor] Partitioning cleanup

change p_column_list_val::fixed to a bool
remove redundant end label in partition_info::fix_column_value_functions
Thirunarayanan Balathandayuthapani
MDEV-24813 Drop low-value table_lock test combinations

The three deadlock_*_race tests cannot reach their DEBUG_SYNC race
under a table lock (it degenerates to a timeout), and the three I_S
tests only restate a lock-mode change already covered
by innodb_full_scan.test.
Razvan Liviu Varzaru
MDBF-1214 Add WITH_{MSAN, ASAN, UBSAN} CMake support (#313)

* MDBF-1214 Add WITH_MSAN CMake support

Declare WITH_MSAN as a regular option for standalone Connector/C
builds.

When enabled directly in Connector/C, append MemorySanitizer compile and
link flags for Debug and RelWithDebInfo builds.

When Connector/C is included as a subproject, keep using the inherited
WITH_MSAN value only for sanitizer-specific linker behavior. This avoids
duplicating sanitizer flags already managed by parent projects.

* MDBF-1214 Add ASAN and UBSAN CMake support

Add standalone Connector/C options for WITH_ASAN and WITH_UBSAN.

Use a shared sanitizer flag helper for Debug and RelWithDebInfo builds,
covering compile flags and executable/shared/module linker flags.

Keep the flag handling disabled for subproject builds so Connector/C++
and ODBC continue to own sanitizer flags for their combined builds.

* MDBF-1214 Refine sanitizer CMake options

Add an opt-in WITH_ASAN_SCOPE option for Clang builds so ASAN can detect stack use after scope without adding the flag to linker options.

Enable MSVC ASAN stack use after return instrumentation and keep incremental linking disabled for those builds.

Reject MSAN when ASAN or UBSAN is also enabled. Remove the redundant ASAN -fPIC flag and keep UBSAN alignment checks enabled.
  • cc-x-codbc-windows: 'dojob pwd if '3.4' == '3.4' ls win32/test SET TEST_DSN=master SET TEST_DRIVER=master SET TEST_PORT=3306 SET TEST_SCHEMA=odbcmaster if '3.4' == '3.4' cd win32/test if '3.4' == '3.4' ctest --output-on-failure' failed -  stdio
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

- Subpartitions are allowed, but restricted to existing subpartition
  types, i.e. [LINEAR] (KEY|HASH)

When performing one of the following DML statements on such a table,
it will first add partitions by the specified interval until the
partition covers the current time:

- INSERT
- INSERT ... SELECT
- LOAD
- UPDATE
- REPLACE
- REPLACE ... SELECT

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.
Georg Richter
bump the version to 3.3.20
  • cc-x-codbc-windows: 'dojob pwd if '3.4' == '3.4' ls win32/test SET TEST_DSN=master SET TEST_DRIVER=master SET TEST_PORT=3306 SET TEST_SCHEMA=odbcmaster if '3.4' == '3.4' cd win32/test if '3.4' == '3.4' ctest --output-on-failure' failed -  stdio
Yuchen Pei
MDEV-39789 Fix compiling without perfschema
Yuchen Pei
MDEV-24813 Signal full scan to storage engines.

When starting to do a full table/index scan without a WHERE or JOIN
condition, tell the storage engine so and the corresponding
ulong-truncated LIMIT.

Include an innodb implementation: added an innodb switch
table_lock_on_full_scan, so that when the switch is on, on receiving
the full scan signal from the sql layer, if the truncated LIMIT is
ULONG_MAX (likely no LIMIT), attempt to acquire a table lock.

Updated tests that have different results with the switch on.

(Comment and code edited by Sergei Petrunia)
Sergei Golubchik
CONC-820 alloca() on invalid metadata from the server

in a valid packet field->length for zero-filled longs cannot exceed 255
Sergei Petrunia
Add --disable_replay in main.key
Alexey Botchkov
next
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.
Oleksandr Byelkin
Fix MDEV-39207 test (skip if ha_example is not built)
Sergei Petrunia
Add -disable_replay next_query Dont support table-less queries that require settings

Fixes ctype_utf8, func_str
Georg Richter
Merge branch '3.3' into 3.4
  • cc-x-codbc-windows: 'dojob pwd if '3.4' == '3.4' ls win32/test SET TEST_DSN=master SET TEST_DRIVER=master SET TEST_PORT=3306 SET TEST_SCHEMA=odbcmaster if '3.4' == '3.4' cd win32/test if '3.4' == '3.4' ctest --output-on-failure' failed -  stdio
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

- Subpartitions are allowed, but restricted to existing subpartition
  types, i.e. [LINEAR] (KEY|HASH)

When performing one of the following DML statements on such a table,
it will first add partitions by the specified interval until the
partition covers the current time:

- INSERT
- INSERT ... SELECT
- LOAD
- UPDATE
- REPLACE
- REPLACE ... SELECT

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 Petrunia
Make --replay-server support "Optimizer Context Stopword": subquery_runs

If a stopword is present in the optimizer context, we do not try to
replay it.