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
ParadoxV5
[skip ci] MDEV-38972: preliminarily reörganize in one `.h`–`.cc` pair

This commit forcibly reörganizes the contents in the `rpl_info_file.h`
trio of header-only files to one `rpl_info_file.h` for declarations and
one `rpl_info_file.cc` for long definitions.

Due to the files’ extensive use of C++ templates, compiling at this
commit _will_ fail with “undefined reference” linker errors.
Rather, this incomplete migration commit intends to avoid muddying the
following commits’ refactors to this relocation.

The only other change in this commit is the omission of pre-C++17 stubs
used by RocksDB, as they’re obsolete since MDEV-38213 and shall be
wiped as a part of MDEV-35462.
Mohammad Tafzeel Shams
MDEV-38305: Expose adaptive hash index statistics in ANALYZE FORMAT=JSON

- btr_sea::n_parts : change from ulong to uint to reduce struct size
  and eliminate padding hole
rusher
[misc] Add matrix entry that builds against latest C/C 3.3 branch
ParadoxV5
MDEV-39482 Drop support for CHANGE MASTER savefiles from MySQL/MariaDB 5.5 and before

Remove the ugly additional code for the old,
inextensible format before MySQL/MariaDB 4.1 for
`@@master_info_file` and 5.6/10.0 for `@@relay_log_info_file`.

Those version versions are EOL for 6 years or more,
so there’s no priority keeping a slightly divergent code
path around for them only to hinder code improvements.

MDEV-38020’s MTR test is (temporarily) removed along
with the rest of `rpl.rpl_read_old_relay_log_info`;
it will be ported to the new format in a separate commit.
Lawrin Novitsky
Just moved cpp submodule to latest commit
Tony Chen
MDEV-39828 Stabilize query_cache_executable_comments counter checks

The test asserted absolute Qcache_inserts/Qcache_hits values but reset them
with FLUSH STATUS which  does not clear those global counters.
The expected values were therefore cumulative from a pristine server, so the
test drifted by a constant offset whenever the mysqld instance was reused with
prior query cache activity (fulltest server reuse, --repeat).

E.g:

```
./build/mysql-test/mysql-test-run.pl --parallel=1 --repeat=2 main.query_cache_executable_comments
```

Use FLUSH GLOBAL STATUS instead, matching every other query cache test
(query_cache.test, query_cache_with_views.test, subselect_cache.test).
This zeroes the SHOW Qcache counters, making each case independent
of server history.

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.
Lawrin Novitsky
Made prepearedstatement testsuite not to force CSPS for defautl connection

This way it can be controlled via params/env which typ of PS is tested.
Tests requiring CSPS should take care of that
Lawrin Novitsky
ODBC-493 if LOCAL INFILE is not disabled, it should be LOCAL_INFILE_MODE_AUTO

This is safer mode than allowing it always
Lawrin Novitsky
CONCPP-157, CONCPP-158 setBytes() parameter is sent as binary type in

binary protocol. It is sent as MYSQL_TYPE_BLOB. As counterpart, binary
types received from the server via binary protocol are now converted
to int types - berfore the exception would be thrown right away w/out
any attempt to convert.
Lawrin Novitsky
Fix of issues found by MSAN.

It looks like both are problems with static variables initialization
order issue(MSAN reports use of uninitialized variables on TypeInfoColumnName initialization)
Lawrin Novitsky
Moved underlying libmariadb to 3.4 series - v3.4.9 atm

We have to support parsec auth plugin as minimum. zero config TLS is
also a big plus, but we don't change related options defaults - the
certificate is not yet validated by default.
Lawrin Novitsky
CONCPP-153 Parameter value escaping did not consider the charset

In case of client side statement prepare, if the data is encoded in multibyte
charsets, escaping of string and binary parameter could lead to incorrect data
that in its turn could let sql injection with charsets like big5, gbk, sjis, cp932.

The fix considers the charset now. The testcase has been added.
Lawrin Novitsky
ODBC-495,ODBC-496 FIxes and tests

A bit accidenatally combined in same commit.
ODBC-495 about missing MAXIMUM_SCALE info for temporal types in
SQLGetTypeInfo reasults.
ODBC-496 - Small negative scale for SQL_NUMERIC parameter could cause buffer overflow.
The fix caps such values by -38 the same way as positive values capped
by 38.
ParadoxV5
MDEV-38972: Reorganize `Info_file` entities

This commit consolidate the value structs and their related functions
to shrink the class hierarchy and mitigate many templates’s limitations.

* Rename `Persistence` to `Value_interface` and add template `Value`
* Replace subclasses with explicit specializations of the
  `Value` template’s instance methods wherever available
  * This ensures `Value` is used literally as a template – `#define`
    but typed – rather than merely for the generics as much as possible.
* Move `mariadbd_option` reference template parameter to
  `Value::default_value` pointer instance variable
* Merge DEFAULT-less classes to a case of the optional `Value`
template where the `Value::default_value` is `nullptr`
* Replace `trilean` with `std::optional<bool>` from the template
* Rename `enum_master_use_gtid::DEFAULT` to `AUTO` and *intend*
  `std::nullopt` to represent the unset/DEFAULT state for
  `Master_info_file::master_use_gtid` instead
* Dissolve `Int_IO_CACHE` to one `my_b_getsll()` (at least for now)
  and the rest merged into numeric `Value` instance methods
* Split `Master_info_file::Heartbeat_period_value`’s static methods
  to instance methods of a new `Uint32_3` conversion wrapper

Since the publication of MDEV-37530, my unimplemented designs have
evolved to feature split “metaclasses” that it can share with
`information_schema.slave_status`, especially after MDEV-31342.
As such, this commit’s redesign is modelled with a
neutral `Value::default_value` to reflect how NOT NULL
is a column constraint rather than a value property.

While here, the commit also fixes some nits in the code documentation.
Lawrin Novitsky
Merge branch 'odbc-3.1'
ParadoxV5
GCC bug with `char[1<<28]`… Windoze’s `#define ERROR`… urgh!
Mohammad Tafzeel Shams
MDEV-38305: Expose adaptive hash index statistics in ANALYZE FORMAT=JSON

Expose InnoDB's Adaptive Hash Index (AHI) statistics through ANALYZE
FORMAT=JSON output and global status variables to provide query-level
and system-level visibility into AHI usage and effectiveness.
This allows DBAs and developers to monitor how well
the adaptive hash index is serving their workloads on a per-query basis.

The r_ahi_stats object (nested inside r_engine_stats) now reports four
key metrics: ahi_searches (successful AHI lookups), ahi_searches_btree
(AHI misses requiring B-tree fallback), ahi_rows_added (rows inserted
into AHI), and ahi_pages_added (pages indexed by AHI). These same
metrics are exposed globally via innodb_status_variables.

Transaction-local tracking eliminates contention by accumulating
statistics in trx_t fields (n_sea, n_non_sea, n_ahi_rows_added,
n_ahi_pages_added) and aggregating them into global atomic counters
during trx_t::commit_cleanup() and trx_t::free(),
following the pattern established for buf_pool.stat.n_page_gets.

AHI counters are now organized as data members of the btr_sea structure
where they logically belong, using anonymous unions to enable both
atomic writes and direct non-atomic reads.

- btr_ahi_inc_searches(): Increment trx->n_sea when AHI lookup succeeds.
- btr_ahi_inc_searches_btree(): Increment trx->n_non_sea when AHI lookup
  fails and falls back to B-tree search.
- btr_ahi_inc_rows_added(): Increment trx->n_ahi_rows_added when rows
  are added to the adaptive hash index structure.
- btr_ahi_inc_pages_added(): Increment trx->n_ahi_pages_added when new
  pages are indexed by AHI.
- btr_cur_t::search_leaf(): Call btr_ahi_inc_searches() on successful
  AHI hit and btr_ahi_inc_searches_btree() on AHI miss.
- btr_sea: Add four counter members with anonymous unions to allow atomic
  writes and lockless reads: hit_count/hit_count_nonatomic (successful AHI
  lookups), miss_count/miss_count_nonatomic (B-tree searches after AHI miss),
  rows_added/rows_added_nonatomic (rows added to AHI), and
  pages_added/pages_added_nonatomic (pages added to AHI). Also includes
  hit_count_old and miss_count_old variant for computing deltas in monitor
  output.
- btr0cur.h/btr0cur.cc: Remove global declarations and definitions of
  btr_cur_n_sea, btr_cur_n_non_sea, btr_cur_n_sea_old, btr_cur_n_non_sea_old,
  btr_ahi_n_rows_added, and btr_ahi_n_pages_added as they are now data
  members of btr_sea.
- export_var_t: Remove innodb_ahi_hit, innodb_ahi_miss, innodb_ahi_rows_added,
  and innodb_ahi_pages_added members. MySQL status variables now point
  directly to btr_search counters.
- innodb_status_variables[]: Change AHI status variable pointers from
  &export_vars.innodb_ahi_* to &btr_search.*_nonatomic, enabling zero-copy
  reads: adaptive_hash_hash_searches points to &btr_search.hit_count_nonatomic,
  adaptive_hash_non_hash_searches to &btr_search.miss_count_nonatomic,
  adaptive_hash_rows_added to &btr_search.rows_added_nonatomic, and
  adaptive_hash_pages_added to &btr_search.pages_added_nonatomic.
- MONITOR_OVLD_ADAPTIVE_HASH_ROW_ADDED, MONITOR_OVLD_ADAPTIVE_HASH_PAGE_ADDED:
  Convert monitor counters to "overload" type that read from atomic counters
  btr_search.rows_added and btr_search.pages_added respectively instead of
  maintaining separate statistics.
- trx_t::commit_cleanup() and trx_t::free(): Update transaction cleanup to
  increment btr_search.hit_count, btr_search.miss_count, btr_search.rows_added,
  and btr_search.pages_added instead of the old global counters.
- trace_engine_stats(): Output r_ahi_stats object with all four AHI
  counters in JSON format when any AHI activity is detected during query
  execution.
- ha_handler_stats: Added ahi_searches, ahi_searches_btree, ahi_rows_added,
  and ahi_pages_added fields to track per-query AHI statistics.
- Add mtr parameter to btr_search_move_or_delete_hash_entries(),
  btr_cur_t::search_info_update(), btr_search_update_hash_on_insert(),
  btr_search_update_hash_ref(), btr_search_info_update_hash(), and
  btr_search_build_page_hash_index() to allow updating AHI statistics.
- ahi_stats.test: Comprehensive verification of AHI statistics reporting
  across different scenarios: insufficient accesses (no AHI build),
  threshold triggering (AHI construction), heavy warmup (full AHI
  utilization), and disabled AHI (verify zero statistics).
- check_ahi_status.inc: Reusable include file for executing queries with
  configurable warmup repetitions and extracting AHI statistics from
  ANALYZE FORMAT=JSON output using JSON path expressions.
ParadoxV5
squash "reorganize structs"
Lawrin Novitsky
Minor formatting changes
Lawrin Novitsky
Fix of issue found by MSAN.

It looks like this is the issue with static variables initialization
order issue(MSAN reports use of uninitialized variables on TypeInfoColumnName initialization)
  • codbc-bookworm-amd64-deb: build linux-connector_odbc failed -  stdio
  • codbc-fedora39-amd64: build linux-connector_odbc failed -  stdio
  • codbc-linux-amd64-asan: build linux-connector_odbc failed -  stdio
rusher
[misc] add maxscale testing to CI
Lawrin Novitsky
Fix of UBSAN errors.

In one place copying from nullptr was possible. It could happen if the
streamed text resultset had to be cached(if the connection is requested
for other operation), and NULL value was present.
In couple of places int64_t could be overflown - had to be changed to
uint64 as it is defined plus othe implied changes.
In particular fetching MIN_INT64 value in text protocol could cause
that. Looks like all compilers work fine in this case as there is the
test for this.
Lawrin Novitsky
CONCPP-152 fix of effect of C/C resetting length of fixed size types

The driver was using that length directly. Now it tests the length and
use either it or buffer length.
Lawrin Novitsky
Removed github actions config as this branch is not intended for testing

there.
There are other things that don't need to be here, but keeping them not
to make merges even more cumbersome.
Lawrin Novitsky
Merge branch 'cpp-1.1' into mini
Lawrin Novitsky
ODBC-494 Fix of string escaping similar to CONCPP-153

Escaping did not consider if the string is in multibyte charsets. That
could affect client side prepared statements with binary parameters.

Also, there was another problem with binary parameters in this case -
the string literals were not marked as _binary

The test has been added.
Lawrin Novitsky
Fix of MSAN issue.

"use-of-uninitialized-value". Looks like another static init order
problem.
rusher
[misc] add maxscale testing to CI
Lawrin Novitsky
Merge branch 'cpp-1.0' into cpp-1.1
Lawrin Novitsky
Merge branch 'odbc-3.1'
Lawrin Novitsky
Fix of issues found by MSAN.

It looks like both are problems with static variables initialization
order issue(MSAN reports use of uninitialized variables on TypeInfoColumnName initialization
+ other similar cases)
  • codbc-alma8-aarch64: build linux-connector_odbc failed -  stdio
  • codbc-alma9-aarch64: build linux-connector_odbc failed -  stdio
  • codbc-bookworm-aarch64: build linux-connector_odbc failed -  stdio
  • codbc-bookworm-aarch64-deb: build linux-connector_odbc failed -  stdio
  • codbc-bullseye-aarch64: build linux-connector_odbc failed -  stdio
  • codbc-bullseye-aarch64-deb: build linux-connector_odbc failed -  stdio
  • codbc-jammy-aarch64: build linux-connector_odbc failed -  stdio
  • codbc-jammy-aarch64-deb: build linux-connector_odbc failed -  stdio
  • codbc-noble-aarch64-deb: build linux-connector_odbc failed -  stdio
  • codbc-rhel8-aarch64: build linux-connector_odbc failed -  stdio
  • codbc-rhel9-aarch64: build linux-connector_odbc failed -  stdio
  • codbc-rocky8-aarch64: build linux-connector_odbc failed -  stdio
  • codbc-windows: 'dojob pwd && rm -rf win32 && mkdir win32 && cd win32 && del CMakeCache.txt && cmake ../src -G "Visual Studio 17 2022" -A"Win32" -DCONC_WITH_MSI=OFF -DCONC_WITH_UNIT_TESTS=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_SSL=SCHANNEL -DALL_PLUGINS_STATIC=ON && cmake --build . --config RelWithDebInfo || cmake --build . --config RelWithDebInfo' failed -  stdio
Lawrin Novitsky
CONCPP-153 Parameter value escaping did not consider the charset

In case of client side statement prepare, if the data is encoded in multibyte
charsets, escaping of string and binary parameter could lead to incorrect data
that in its turn could let sql injection with charsets like big5, gbk, sjis, cp932.

The fix considers the charset now. The testcase has been added.
Lawrin Novitsky
Fix of MSAN issues.

"use-of-uninitialized-value". Looks like yet another static init order
problems.
ParadoxV5
operator hidden by operator ?
Lawrin Novitsky
Merge branch 'cpp-1.0' into cpp-1.1
Lawrin Novitsky
CONCPP-156 Move to C/C 3.4 to support Parsec plugin

The submodule has been moved to 3.4.9 already in one of previous
commits. This one makes it it installed by MSI and taraballs