Skip to content
/ server Public

Comments

MDEV-38805:Store optimizer_context into a IS table#4675

Open
bsrikanth-mariadb wants to merge 1 commit into12.3-MDEV-38701-dev-sprint-work-1from
12.3-MDEV-38805-dev-sprint-work-2
Open

MDEV-38805:Store optimizer_context into a IS table#4675
bsrikanth-mariadb wants to merge 1 commit into12.3-MDEV-38701-dev-sprint-work-1from
12.3-MDEV-38805-dev-sprint-work-2

Conversation

@bsrikanth-mariadb
Copy link
Contributor

@bsrikanth-mariadb bsrikanth-mariadb commented Feb 20, 2026

Currently, optimizer context is written as JSON sub-element in the Optimizer Trace.

In this task, we separate it out from the optimizer trace, and instead store it in optimizer_context Information Schema table.

The structure of the context is changed to look like below:

CREATE TABLE t1 ( ... );
-- in case it is a constant table
REPLACE INTO t1 VALUES (...);

CREATE TABLE t2 ( ... );
...

set @context='{ JSON with all the captured calls }'; set @optimizer_context='context';

the original query;

The IS can be used to read the current stored context, as well as to dump it to a sql file which can later be replayed in a different environment.

It is done like below: -

set optimizer_record_context=ON;
set optimizer_trace=1

-- sample query

select into outfile '/tmp/captured-context.sql' context from information_schema.OPTIMIZER_CONTEXT;

All the existing tests are modified to query OPTIMIZER_CONTEXT IS table

Currently, optimizer context is written as JSON sub-element in the
Optimizer Trace.

In this task, we separate it out from the optimizer trace, and instead
store it in optimizer_context Information Schema table.

The structure of the context is changed to look like below: -
----------------------------------
CREATE TABLE t1 ( ... );
-- in case it is a constant table
REPLACE INTO t1 VALUES (...);

CREATE TABLE t2 ( ... );
...

set @context='{ JSON with all the captured calls }';
set @optimizer_context='context';

... the original query;
----------------------------------

The IS can be used to read the current stored context, as well as to
dump it to a sql file which can later be replayed in a different
environment.

It is done like below: -
--------------------------------------
set optimizer_record_context=ON;
set optimizer_trace=1

-- sample query

select into outfile '/tmp/captured-context.sql' context from information_schema.OPTIMIZER_CONTEXT;
---------------------------------------

All the existing tests are modified to query OPTIMIZER_CONTEXT IS table
@bsrikanth-mariadb bsrikanth-mariadb force-pushed the 12.3-MDEV-38805-dev-sprint-work-2 branch from 1541a53 to 074a5c1 Compare February 20, 2026 12:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

1 participant