Skip to content

PXC-5217 Packaging tasks for release - PXC 8.0.46#2333

Open
adivinho wants to merge 182 commits into
8.0from
release-8.0.46
Open

PXC-5217 Packaging tasks for release - PXC 8.0.46#2333
adivinho wants to merge 182 commits into
8.0from
release-8.0.46

Conversation

@adivinho

Copy link
Copy Markdown
Contributor

No description provided.

bkandasa and others added 30 commits December 14, 2025 10:03
Approved-by: Bjorn Munch <bjorn.munch@oracle.com>
Approved-by: Bjorn Munch <bjorn.munch@oracle.com>
Change-Id: Ib024ed6904faacb0600e6db174cfe648091dd21b
Change-Id: Id10fbc01b1e57f5eb4da312fc564aa90f38a4bb2
Change-Id: I73ae358dd848af05e33010b407c744d2d01a5b36
Change-Id: I28ac34ad05289ac3795a482cd4ed3ef32db81e37
The MySQL function regexp_instr() has signature:
REGEXP_INSTR(expr, pat[, pos[, occurrence[, return_option[, match_type]]]])

Add error check when evaluating 'return_option' in the prepare phase.
Also evaluate it only once.

Also add value check for return_option in the execution phase.

Change-Id: I49dc9ad9c15970f7d89ca23c554160d4e1c06205
(cherry picked from commit 0910beaf86202a5c1993f3152a124d6c0399219a)
Approved-by: Balasubramanian Kandasamy <balasubramanian.kandasamy@oracle.com>
Approved-by: Balasubramanian Kandasamy <balasubramanian.kandasamy@oracle.com>
Modify ndb_restore to apply backup log records concurrently.

Problem :

A data node backup is comprised of one or more PARTs,
depending on the number of LDMs in the backed up data
node.

Each part comprises a CTL file, a DATA file and a LOG file.

ndb_restore uses a thread to restore each PART of a data
node backup.

During DATA file restore, each ndb_restore thread restores
rows in the DATA file concurrently, according to the passed
--parallelism parameter.

During LOG file restore, each ndb_restore thread restores
log events in the LOG file serially.

Restoring log events serially can take some time when the
LOG file has a large number of entries.

Solution

ndb_restore is modified to restore LOG file events
concurrently from each thread, in a similar way to the
concurrency used for the rows in the DATA file.

An extra transaction scheduler component is added to
ensure that LOG restore remains ordered + serialised
on a per-row basis.

Details

  ndb_restore_debug modified to give some coverage
  checking concurrent log record application,
  specifically the order of application.

  Refactored 'extra storage buffer' in consumer_restore so that
  it can be used as part of DATA or LOG iteration.

  Modified Log Iterator to use extra row buffer for log apply.
  This prepares it for later having > 1 operation in flight at once

  Modified ndb_restore to copy LogEntry content into the 'callback'
  transaction object rather than relying on the iterator being
  positioned on the same callback object.

  Modified log entry apply to define multiple concurrent transactions.
  The buffering + execution model used is the same as DATA restore.
   - The Log iterator will provide LogEntrys to the consumer(s)
   - The Log iterator will use a configurable size of file read
     buffer
   - consumer_restore will :
     - Define an NdbApi transaction to perform the action
     - Prepare the transaction
   - Transactions will be sent to data nodes either :
     - When all free transactions (parallelism) are defined
     - When the iterator needs to free the underlying data
   - The async API is used to execute transactions
   - At end of log entry iteration, all outstanding NdbApi
     transactions are processed and their results waited for.

  The existing tuple_free() method on consumer is renamed
  to data_free() to reflect that it is now used for both
  tuple and log entry iteration.

  Concurrent log apply can cause log apply errors to be detected
  later (in endLogEntrys()), resulting in a different error message.
  Modified ndb_restore_debug test to check for this.

  Concurrent log apply can cause all log apply events to be defined
  before any are complete, so that using the # of completed events
  to trigger an error-insert is unreliable.
  Modified the error-insert to use the number of defined events
  instead.

  Modify log entry apply functionality to calculate a (table+) primary
  key hash for each log entry as a side effect of defining the NdbApi
  operation, and store it in the callback transaction object.
  - Log entry content can vary depending on type (I, U, D), with key
    columns contained > once in some cases.

  - MySQL standard hash functions are used, giving e.g. collation
    safe hashing.

  - This is similar to hashing added to NdbApi for detecting multiple writes
    to the same Blob in an operation batch.

  - The hash value is considered a coarse-grained row identity for
    the operation with the properties :
    - Two operations (I, U, D) on the same row in the same table
      will have the same hash value.
     - Can be used to find operations affecting the same row

  - Two operations (I, U, D) on the same pk in a different table
    will (likely) have a different hash value.
    - Does not over serialise where the same pk is used in
      operations on different tables

  - Two operations (I, U, D) on different pks will (likely) have
    a different hash value.
    - Does not over serialise

  Existing per-log event processing is split into :
    logentry_a() :
      Define NdbApi operation
      Determine row identity value (hash of table id, primary key values)
      Ask transaction scheduler for permission to execute
        Yes : call logentry_b()
        No  : transaction is queued, return and read next log event
    logentry_b() :
      Prepare NdbApi operation to be sent to data nodes

  The logentry application callback is modified to notify the
  transaction scheduler that the transaction has completed.
  The transaction scheduler may return a transaction that was
  waiting for this completion, which must now be executed by
  calling logentry_b()

Solution properties

 - Log operation transactions against different rows can be
   executed concurrently by a single ndb_restore thread
 - Only one transaction against a single row can be executed
   at a time
   Others will be queued up, and executed serially when the
   current transaction on that row completes.
 - In the retry case (temporary error), the current active
   transaction stays active, and the queued transactions stay
   queued.
   A sanity check that the calculated hash remains the same
   is added.
 - A hash of the log event's table id and primary key values
   are used as the 'row identity'.
   There can be hash collisions where two different rows have
   the same hash value.  This will not cause functional problems
   and is ignored.
 - The most extreme serialisation would occur when all log
   operations are for the same row, and then all transactions
   are defined and queued serially.  This devolves into the
   previous fully serial implementation.

Change-Id: Ie64817d59df33b32ae3904eb69b1a9cf49f89d67
Flint++ tool's static analysis of InnoDB sources

Description:
Flint++ is a static analysis tool that scans C/C++ source code and
warns about potential issues. It provides extra diagnostics focused on
code cleanliness, safety, portability, and correctness.

Issues:
1) Move constructors should not take a const argument.
2) Symbol SYS_COLUMN__PRTYPE invalid.
3) Copy constructors should take a const argument.

Fix:
1) A move constructor must accept T&& (non-const) because moving
typically requires modifying the source object. Using const T&& prevents
moving and causes the move constructor to behave as a copy, defeating
its purpose. This patch updates the signature to T&&, enabling proper
move semantics.
2) Use of double underscore is reserved by the C/C++ standards for the
implementation (compiler, standard library, system headers). Renamed the
macro to SYS_COLUMN_PRTYPE to comply with standard naming rules.
3) Copy constructors must accept const T& so they can copy from const
objects and rvalues bound to const references. Using a non-const
reference makes the type editable in multiple scenarios and
breaks standard copy semantics. This change restores correct C++
behavior.

Change-Id: Ia139ef6a3dc1964c5e193bb2f7cb12437acd252f
Symptom:
  The test innodb.innodb_dirty_pages_at_shutdown fails sporadically with
MTR reporting 'Command "shutdown_server" failed with error 2'

Root Cause:
  The error 2 indicates that the shutdown command timed out after
waiting for 60 seconds. The test expects the server to crash during the
last phase of shutdown. A core file is generated when the server
crashes. The timeout is hit when shutdown takes too long due to
generation of core file.

Fix:
  Disable the generation of core file as it is not required for the
test.

Change-Id: I37f9777b97f564b49cfddfa7271258f974df6053
…when node rejoins

Modify node failure handling for survivor node TCs to wait until their inflight
transactions involving a failed node are complete before recording the node
failure as completed.

This avoids any risk that the failure handling is still in progress when a node
rejoins.

Change-Id: Ia5265b3f613811e3b2b5665469ae061113f61439
…when node rejoins

Added logging for the two phases of NF_CHECK_TRANSACTION failure
handling including the number of transactions needed to be waited for in
second phase.

2025-12-19T22: 19:49.434507Z [ndbd] INFO     -- DBTC 3: Step NF_CHECK_TRANSACTION identified 1 transactions where failed node 1 participated which are now being committed or rolled back.
2025-12-19T22: 19:49.434563Z [ndbd] INFO     -- DBTC 2: Step NF_CHECK_TRANSACTION identified 2 transactions where failed node 1 participated which are now being committed or rolled back.
2025-12-19T22: 19:49.434768Z [ndbd] INFO     -- DBTC 1: Step NF_CHECK_TRANSACTION identified 1 transactions where failed node 1 participated which are now being committed or rolled back.
2025-12-19T22: 19:49.434820Z [ndbd] INFO     -- DBTC 1: Step NF_CHECK_TRANSACTION all transactions where failed node 1 participated are now either committed or rolled back.
2025-12-19T22: 19:49.434822Z [ndbd] INFO     -- DBTC 1: Step NF_CHECK_TRANSACTION completed, failure handling for node 1 waiting for NF_TAKEOVER.
2025-12-19T22: 19:49.489119Z [ndbd] INFO     -- DBTC 3: Step NF_CHECK_TRANSACTION all transactions where failed node 1 participated are now either committed or rolled back.
2025-12-19T22: 19:49.489124Z [ndbd] INFO     -- DBTC 3: Step NF_CHECK_TRANSACTION completed, failure handling for node 1 waiting for NF_TAKEOVER.
2025-12-19T22: 19:49.489334Z [ndbd] INFO     -- DBTC 2: Step NF_CHECK_TRANSACTION all transactions where failed node 1 participated are now either committed or rolled back.
2025-12-19T22: 19:49.489337Z [ndbd] INFO     -- DBTC 2: Step NF_CHECK_TRANSACTION completed, failure handling for node 1 waiting for NF_TAKEOVER.

Change-Id: If44d18954297075e63765d265bda17af6d0a881f
…when node rejoins

Error insert 8127 used to show slow NodeFailCheckTransactions processing
which can still be running when node recovers leading to problems.

Change-Id: I0cb8ac11114ac534bd42cc95a15a72bf7c3bc401
…when node rejoins

New test testNodeRestart -n PreparedUpdatesNF.

Test prepares transactions with many updates. When a node that
participate in the transaction but is not the transaction coordinator
node the transaction will be aborted as part of node fail handling on
the transaction coordinator node. Before fix the node fail handling
could end before transaction was aborted.

Change-Id: I4b60c54ca664dc543ecb71ba01d4c59cb833bd61
Modify error output to avoid chance of interleaving.

Change-Id: I02a57fb941cbf3610043e34fdd8594db8ff7dc18
Follow up fix for compilation error due to extra ; outside of a
function.

Change-Id: Ibb1d29a93fc5ee20816af59b0164f491332005f3
Problem:
There is a race between the NDB binlog injector and the NDB binlog
purger that can leave a stale row in mysql.ndb_binlog_index
for a binlog file that has just been purged.

 Sequence:
 1. The NDB injector session commits the epoch transaction to the
   binlog and determines the binlog file name for that commit.
 2. The NDB injector session then uses a separate transaction to write
   that file name into mysql.ndb_binlog_index (InnoDB).

Because steps (1) and (2) are two different transactions, the purger
can start and complete its removal for that File in between (1) and (2).
In that case, the purger will not see the row inserted in (2), leaving
a single orphan row for the just‑purged file.

Analysis:
The purger should wait until NDB binlog has stopped using the binlog file
which is about to be purged. Since NDB binlog usage of file to be purged
is very rare, the solution needs to be lightweight and only activate
when
purger is requesting the current binlog file name.

Solution:
Extend NDB binlog with functionality to publish the current binlog file
name "in use" when someone is waiting for it.
Make the purger wait until the ndb binlog is not using the binlog file
to be purged.
This patch also extends rpl_injector with functionality to get the
current binlog file name, this effectively encapsulates all acess to
binlog.h which can thus be removed from other place.

Change-Id: Ic70b7ebf1508c39945e1dff8bed5eaaf722512a6
MySQL 8.0+ parser consumes significantly more memory than 5.7 for
queries with large IN clauses. With 10 million values:
- MySQL 5.7: 2,213 MB
- MySQL 8.0/9.x: 34,278 MB (15.5x worse)

The issue is caused by mem_root_deque's linear growth strategy.
When the blocks array needs to grow, it allocates a new array with
just one additional slot. Since MEM_ROOT cannot free individual
allocations, each reallocation leaves the old array wasted. With
N blocks, this creates O(N) reallocations and O(N^2) cumulative
memory waste.

The fix implements exponential growth with independent growth
factors for each direction:
1. Add m_blocks_allocated to track total array capacity
2. Add m_first_block_idx to track where used blocks start
3. Add m_back_growth_exp and m_front_growth_exp (uint8_t) to track
   growth history for each direction independently
4. When push_back triggers growth, add 2^m_back_growth_exp spare
   slots at back, then increment the exponent
5. When push_front triggers growth, add 2^m_front_growth_exp spare
   slots at front, then increment the exponent

This gives amortized O(1) insertions with O(log N) reallocations,
reducing cumulative memory waste from O(N^2) to O(N).

Results after fix (10 million IN clause values):
- MySQL 9.x: 3,147 MB (10.9x improvement vs unfixed 8.0/9.x)
- Memory now scales linearly with input size

Change-Id: I4781433ed5311b5493c7ac2edc1cb6d7dc97157f
(cherry picked from commit 39a3ccb626bca65e8d14cd3f091165f75d036b7f)
with deterministic stored function

EXPLAIN SELECT could crash the server when run on queries
with GROUP BY containing a deterministic stored function.

The crash was introduced by commit 22961101b82a
(Bug#37560280 fix), which prevented EXPLAIN from executing
stored functions. However, the fix did not account for the
interaction with find_order_in_list() in sql_resolver.cc.

The issue occurred because:
1. find_order_in_list() only adds ORDER/GROUP BY items to
   the fields list if !const_for_execution()
2. For deterministic stored functions, const_for_execution()
   returns true, so the item is NOT added to fields list
3. Without being in fields list, result_field is never set
4. create_tmp_table() calls get_tmp_table_field() which
   returns NULL, causing a crash in init_from_field()

The fix modifies find_order_in_list() to also add items
to the fields list when:
- Running in EXPLAIN mode (not EXPLAIN ANALYZE), AND
- The item contains a stored program

This ensures result_field is properly set during temp table
creation, preventing the NULL pointer dereference.

Change-Id: I1f79aedd199d480984eb63a410ea38bbae367aec
(cherry picked from commit 38e03ab4cc21189d73b307f7d363c4bb9fb022f0)
 Query_expression::optimize

This is a regression from the bugfix for
Bug#35284734. The fix for Bug#35284734 was
over counting the reference count for the
underlying items of ref items for the cases
when these items were part of the conditions
added as part of IN to EXISTS transformation.
As a result of the overcounting, an aggregate
function was not removed, but the subquery
that it was part of was removed because of
an always false condition. This lead to
problems later.
The fix for Bug#35284734 was overcouting
because it would increment the reference
count of an item everytime an expression
is marked as an expression created by
IN-TO-EXISTS tranformation. However these
expressions could be part of the condition
that gets added to the query and when that
condition is created, it is again set as
created by IN-To-EXISTS there by leading
to double counting.
So the fix is to revert the change introduced
by Bug#35284374 and introduce a more targetted
reference counting during the transformation.

Change-Id: Ic2bc3278d8b2c8542e8a12092bb1170cc71758b8
Patch for 8.0

Updated copyright headers to year 2026.

Change-Id: Ibcc3475bb4c58d246d239986b668194f9f536aa1
…imit when

locked for backup

Description:
------------
In a source–replica setup, it was observed that the replica is deadlocked when
 the relay log exceeds `relay_log_space_limit` while
`LOCK INSTANCE FOR BACKUP` is held on the replica.

Analysis:
------------
A deadlock occurs between the replica IO thread and the SQL thread due to a
missed relay log purge retry after the instance backup lock is released.
Resulting Condition:
- The relay log exceeds `relay_log_space_limit` while `LOCK INSTANCE FOR BACKUP`
  is held on the replica.
- The IO thread remains blocked, waiting for relay log space to be freed.
- The SQL thread remains blocked, waiting for new relay log events.
- No condition variable is signaled and no retry path is triggered.
- As a result, both threads remain blocked indefinitely, and replication makes
  no further progress.

Fix:
----
Ensure that the relay log purge is retried if the IO thread is waiting due to
relay_log_space_limit after the instance backup lock is released.
This allows both the IO and SQL threads to resume and replication to progress.

Change-Id: Ieeca7b3e7ac56afa4827d83a483276b074e8d03d
Patch for 8.0
- remaining outliers

Updated copyright headers to year 2026.

Change-Id: Iead0a7c23d2795329b34672ae542ee9992b802a9
Description:
  This commit is a backport effort for Bug#35784192, which enabled purge
to skip the read_only check, required for undo log truncation on replica

Fix: The include filenames differ between 8.0 and 8.4
Change-Id: I61b1b2684a6ca63e62faf6ca0785e230d6a6f7e7
…he-sha2 is missing in X

Description
===========
The implementation of WL#14281 (configuration caching_sha2_password_digest_rounds),
defines how many times the hashing algorithm should iterate over HMAC function
to generate digest that is stored in users authentication data.

The effect of this variable was only added server, where X was left with default
number of iterations.

Fix
===
Adds support of cache-sha2-password accounts that were created with different
number of difests rounds.

Change-Id: I4a30cb73c80b591930f374e63b10e6c2b21cd529
Test fails occasionally with error :

Failed to open index NDB$RESTORE_PK_MAPPING from NDB due to error 4243: Index
not found

Problem

NDB$RESTORE_PK_MAPPING indexes can be created dynamically on tables being
restored by ndb_restore threads when they determine the need.

Each ndb_restore thread runs the table_compatible_check()
function which lists indexes on each table and then opens them
to determine whether the table has any unique indexes so that
a warning can be produced about the risk of restore failure.

The table_compatible_check() is run in every ndb_restore thread in
each ndb_restore process.

If one ndb_restore thread runs listIndexes(), open() while
another is building the NDB$RESTORE_PK_MAPPING index on a
table then it may :
 - Observe that the index object exists
   (In e.g. StateBuilding)
 - Fail to open the index as it is not in StateOnline

This failure causes the restore thread to fail.

Solution

Modify table_compatible_check() to ignore
the NDB$RESTORE_PK_MAPPING index.
 -> No problems opening while it's being built
 -> No incorrect reporting that the table still
    has a unique index

Change-Id: Ice871548d57a3e402fbc86ab2504a6dccdc5211c
kamil-holubicki and others added 27 commits May 28, 2026 08:53
https://perconadev.atlassian.net/browse/PXC-5213

Fixed tests affected by change 6d6a437e in Galera.
Fixed potentially dangling pointer existence at the end of
sst_joiner_thread(). It could be dereferenced in wsrep_sst_cancel()
from the different context causing SIGSEGV.
https://perconadev.atlassian.net/browse/PXC-5213

Stabilized galera_garbd_invalid_param_value test (partial cherry pick of
16c6223)

Stabilized galera_wan test.
…LogHandler)

The NDB logger-t unit test intermittently failed in the parallel ctest run:

    Logger.cpp:566: require((getLastLogMsg(file) == expected_msg)) failed

at the end of the BufferedLogHandler stress test. The test runs reliably in
isolation (verified) and only failed under heavy concurrent load, i.e. it is a
test-robustness issue, not a product bug. It is unrelated to the upstream merge.

After flushing 1000 buffered async messages and draining the buffer, the test
logs one final message, waits a single fixed interval (100ms) and then checks
that it is the last line in the log. This is fragile under load for two reasons:

  - The BufferedLogHandler flushes asynchronously, so a single wait interval may
    not be enough for the final message to reach the file.
  - getLastLogMsg() reads from a fixed offset to EOF, assuming the file holds
    exactly one line (it clears the file after every read to maintain that).
    If the async thread flushes leftover buffered messages together with the
    final one, the file briefly holds several lines and the comparison can
    never match.

Make the final assertion robust:

  - Add getLastLogLine(), which returns the message part of the last non-empty
    line without clearing the file, so it is correct even when several messages
    were flushed at once and the message being awaited is not truncated away.
  - Replace the single fixed wait with a bounded retry loop (up to ~10s) that
    polls until the final message appears.

Verified: passes standalone and 5/5 under heavy CPU contention (200 busy
stressors) that previously triggered the failure. Only the embedded unit test
is changed; BufferedLogHandler behavior is untouched.
…info

LogTimestampTest.iso8601 failed in Jenkins (RelWithDebInfo/debian:trixie/
x86_64):

    Expected: "1970-01-01T01:00:00.000001+01:00"
    Which is: "1970-01-01T00:00:00.000001-00:00"
    Expected: "2011-07-07T02:00:00.000000+02:00"
    Which is: "2011-07-07T00:00:00.000000-00:00"

The test sets TZ=CET and expects the system-time ISO 8601 timestamp to carry a
+01:00 (winter) / +02:00 (summer) offset. The bare name "CET" relies on the
system timezone database (/usr/share/zoneinfo/CET). On minimal build/CI
containers that file is not installed, so glibc parses "CET" as a POSIX zone
with no offset rule, i.e. UTC. localtime_r() then returns tm_gmtoff == 0, the
time is not shifted and the offset is formatted as "-00:00" (the sign defaults
to '-' for a zero offset) - exactly the observed output.

Replace the bare "CET" with a fully-specified POSIX TZ string,
"CET-1CEST,M3.5.0,M10.5.0/3" (CET in winter, CEST in summer using the EU DST
rule). glibc evaluates this without consulting the timezone database, so the
expected +01:00 / +02:00 offsets are produced regardless of which zoneinfo
files the host provides. This mirrors what the Windows branch of the test
already does (it uses a POSIX-style string rather than a bare zone name).

Verified: the test passes both with the system tz database present and with it
made unavailable (TZDIR pointing at an empty directory, which reproduces the
Jenkins failure with the previous code).

Note that while this issue is not observed on any Jenkins platforms which
are officially supported for 8.0, it still makes sense to apply this fix
to 8.0 branch, e.g. to avoid possible future problems with custom builds.
Test for bug#38928287 "CRASH INSIDE OF THE QUERY PARSER/PLANNER/RESOLVER"
added in MySQL 8.0.46 causes stack overflow errors under ASAN.

This is common issue for tests which check that we correctly detect
and error out on potential stack overflows.

Disabled the test for ASAN builds like it is done for other tests doing
this (e.g. main.sp-error test).
Updated galera and wsrep-lib repo pointers.
- recent fixes
- galera updated to release_26.4.27
Percona Server release 8.0.46-37
https://perconadev.atlassian.net/browse/PXC-5213

LAsan suppression file updated.

OpenSSL libcrypto holds global/lazy-init allocations for the process
lifetime (released via atexit handlers on clean shutdown). When mysqld
is killed by safe_process during PXC cluster teardown, those handlers
never run and LSan reports them as leaks. The reported stack ends at
CRYPTO_malloc because libcrypto.so is shipped without debug symbols, so
suppress by that frame.
…hes MySQL Router

https://perconadev.atlassian.net/browse/PS-11329

Bug#39204635 mysql/mysql-server@6adc159923b

Description
===========
For X Protocol routing with `client_ssl_mode=PREFERRED` and
`server_ssl_mode=AS_CLIENT`, a client can send
`CON_CAPABILITIES_SET(tls=true)` after TLS is already active.

Router accepted this second TLS capability request and re-entered
the TLS upgrade path. During `tls_accept_finalize()`, the server-side
TLS channel could already be initialized, which led to a `logic_error`
and connection termination.

Fix
===
Reject repeated TLS capability upgrades when client-side TLS is already
active. For a second `tls=true` capability request, Router now returns
error 5001 (`Capability prepare failed for 'tls'`) and continues normal
session handling.

Change-Id: Ifaaa93eeec1019160c7a6db50daa7e1af8f383c5

Co-authored-by: Lukasz Kotula <lukasz.kotula@oracle.com>
https://perconadev.atlassian.net/browse/PS-11329

Bug#39116965 mysql/mysql-server@5417e736ad9

Description:
Connection attribute parsing read a length-encoded size field before
checking that the complete field was present in the packet.

Fix:
A size check was added before reading the field. Debug coverage was
added for short length-encoded attribute packets during
pre-authentication.

Change-Id: I08d69b0cfcbd38392a2826a4dd208320e89af5e9
https://perconadev.atlassian.net/browse/PS-11329

Raised MYSQL_VERSION_EXTRA to 38 in MYSQL_VERSION file.
Raised PERCONA_INNODB_VERSION to 38 in univ.i file.
PXC-5213: Code refresh for - PXC 8.0.46
Apply the same packaging fixes made for PXC 8.4.10 (commits 59ad171
and 1f5bf4c):

- debian/control: fix missing commas in Uploaders field (dpkg-source
  parse error).
- Remove references to percona-xtradb-cluster-galera/packages/rpm/README
  and README-MySQL, which no longer exist upstream on the galera
  4.x-8.0 branch; install the top-level README instead.
- percona-xtradb-cluster.spec: split the libfido2.so.* file glob so the
  explicit %attr() mode is not applied to the libfido2.so.1 symlink.
- Package %{_libdir}/mysql/libgalera_smm.so, installed by galera's own
  CMake subdirectory build in addition to the hand-copied galera4/ copy.
- debian/rules: drop dead PXC 5.7-era packaging cruft (nm symbol dump
  into a nonexistent percona-xtradb-cluster-5.7 doc directory, and the
  now-removed packages/rpm/README copy).
- pxc_builder.sh: fetch call-home.sh from a pinned commit with a
  sha256 checksum instead of an unauthenticated floating URL, and
  write it to a mktemp'd path instead of a fixed /tmp/call-home.sh.
- pxc_builder.sh: patch the freshly checked out galera submodule's
  SConstruct to define GALERA_LOG_H_ENABLE_CXX globally, matching
  cmake/common.cmake, fixing an SCons build failure ('gu_error' was
  not declared in this scope in gcomm/gcache).

Not applied here (needs separate verification for 8.0.46, since the
extra/libkmip submodule is pinned to a different commit than 8.4.10):
- packaging of libkmipclient.a/libkmipcore.a, which were confirmed as
  unpackaged files during an actual 8.4.10 build but may not have the
  same names in 8.0.46's libkmip version.
- the percona-xtrabackup apt version bump, which doesn't map 1:1 since
  8.0.46 pins different xtrabackup package versions/variants.
(8.0)Revert "PXC-5106: Set sql_require_primary_key=1 when using pxc_strict…
@it-percona-cla

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
5 out of 25 committers have signed the CLA.

✅ kamil-holubicki
✅ jaideepkarande
✅ adivinho
✅ VarunNagaraju
✅ inikep
❌ bkandasa
❌ mvcc
❌ lkotula
❌ paulofasilva
❌ nacarvalho
❌ ogrovlen
❌ jlopusza-oracle
❌ jujose-1
❌ Keshav Jha
❌ maras007
❌ roylyseng
❌ Chaithra-MG
❌ dlenev
❌ lukin-oleksiy
❌ catalinbp
❌ keeper
❌ polchawa-percona
❌ percona-mhansson
❌ zmur
❌ bjornmu


Keshav Jha seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

@adivinho
adivinho requested a review from jaideepkarande July 23, 2026 09:17

@jaideepkarande jaideepkarande left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.