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
Disable main.subselect_sj_mat testfile to be run in replay mode

loose scan semi-join strategy is using rec_per_key instead of
actual_rec_per_key to know the output number of rows. Disabling the
entire testfile, as several tests fail. The fix would be made as part of
MDEV-39942.
Sergei Petrunia
Fix ubsan failure with not a valid value for enum_mysql_show_type

It produced errors like:
  runtime error: load of value 19, which is not a valid value for
  type 'enum enum_mysql_show_type'

In order to get a correct server-side definition of enum_mysql_show_type,
one must include sql_plugin.h (see #define SHOW_always_last there) before
including include/mysql/plugin.h, either directly or indirectly.
Sergei Petrunia
Remove un-needed files

Added by
MDEV-39368: Trace replay: add --extra-server support, part 1.

should have been removed by

Revert the --replay-server mtr feature
bsrikanth-mariadb
Do not dump stats and const rows for read only engines' tables.

Stats for tables from engines such as Archive, S3, PerfSchema, and
Sequence shouldn't be recorded in the context. Similarly, const row
records should also not be stored in the context.

Added few tests for Sequence's engine tables like seq_1_to_5.
bsrikanth-mariadb
clear optimizer_record_context after error/warning has occured during
replay

If not done, then context recording is performed for subsequent
non-explain queries. This could result in counter mismatches.
bsrikanth-mariadb
Fix warnings in windows build
Sergei Petrunia
Fix unittest name: jons_reader -> json_reader
bsrikanth-mariadb
MDEV-40387: perfschema.misc fails on replay

Disable the testfile, as we don't capture context for performance schema
tables.
bsrikanth-mariadb
Update opt_context_replay_basic.result file.

it got changed as part of Commit 6aeb48b
Sergei Petrunia
Code cleanup (2). Introduce dump_sql_script() function.
bsrikanth-mariadb
Don't enable ps protocol for a negative test in opt_context_store_ddls

context for the previous insert statement is being used for the new
query having a syntax error. This is happening now because, insert
statements are also able record contexts -
Done as part of commit 294165195824a9aae01130ff8525c04f0f49b122
Sergei Petrunia
Revert the --replay-server mtr feature
bsrikanth-mariadb
update opt_context_replay_basic to include variable standard_compliant_cte
Sergei Petrunia
More include file renames.
bsrikanth-mariadb
MDEV-39360: set statement optimizer_record_context for query fails

Move the initialization of context recorder, and replay after
run_set_statement_if_requested() is invoked in the
mysql_execute_command() in sql_parse.cc
bsrikanth-mariadb
MDEV-40383:innodb_gis.point_basic fails on replay

There are 2 problems: -
1. The REPLACE statement that is recorded doesn't store the
  value of geometry type field correctly.
2. The table definition that got recorded has fields with non-null constraint,
  and no default value is specified.
  Also, the "REPLACE INTO" statement that gets stored in the context,
  doesn't have any value specified for these non-null fields.

Solution is to: -
1. When using REPLACE INTO statement, store all the non-numeric values in HEX,
  whenever conversion from field's charset to output's charset is lossy.
2. Instead of storing only the column values that were projected in the
  query, store all the non-virtual column values into the recorded
  REPLACE INTO statement.

Implementation details: -
1. Introduce a new method is_charset_conversion_lossless() in filesort.cc,
  to check if the output charset to which field's data is being written to,
  results in a lossless conversion. If so, non-numeric values being witten
  using REPLACE INTO statement are stored in string representation,
  else they are converted to HEX.
2. Modify join_read_const(), and join_read_system() methods in sql_select.cc,
  and opt_sum_query() method in opt_sum.cc the following way: -
    a. Extend the read_set to make sure, we read all the non-virtual column
        using Optimizer_context_recorder::prepare_captured_row_read().
        This method also saves the original read_set.
    b. Read the row.
    c. Dump the row into the context when no error is noticed while
        reading. Irrespective of the error, restore back the read_set state to
        the original using Optimizer_context_recorder::finish_captured_row_read()
Sergei Petrunia
Code cleanup in JSON array-of-object reading, add unit tests.
bsrikanth-mariadb
MDEV-38701: Optimizer Context Replay: merge into 13.1 tree

Optimizer Context Replay feature allows one to record and replay
a query's Optimizer Context. Optimizer Context includes everything
that one needs to replicate how the Query Optimizer processed the query.

It can be replayed on another to host to debug how the Query Optimizer
processed the query, run what-if scenarios, etc.

== Example recording ==

  set optimizer_record_context=1;
  < Run the query of interest. Typically it's EXPLAIN ...>;
  select context [into dumpfile '/tmp/context.sql']
  from information_schema.optimizer_context;

== Example replay ==
  -- On another machine, just source the script
  source context.sql

This will
* Set relevant system variables to match the recording side;
* Create the dataases, tables and views the query needs;
* Load EITS statistics for the tables;
* Provide the optimizer with other context data
* Finally re-run the query. If it was an EXPLAIN, one should get the
  same output as on the recording side.

Approved-by: Sergei Petrunia ([email protected])
bsrikanth-mariadb
MDEV-40384: innodb_gis.geometry fails on replay

The test had innodb_strict_mode turned OFF, when running the test. But,
in the replay, it was enabled, which caused the creation of tables with
KEY_BLOCK_SIZE=16 fail.

Solution is to record the innodb_strict_mode variable in the context, so
that it gets used during the replay.
Oleksandr Byelkin
attempt #2
bsrikanth-mariadb
MDEV-40388: sequence.simple fails on replay

The problem is that, when recording is enabled for the query such as,
explain select * from seq_1_to_10;
it recorded the table context having a DDL definition as: -

CREATE TABLE `seq_1_to_10` (
    ->  `seq` bigint(20) unsigned NOT NULL,
    ->  PRIMARY KEY (`seq`)
    -> ) ENGINE=SEQUENCE DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;

Now, when that context is replayed, the DDL statement is executed.
But, we cannot create such a table, and instead it errors out saying
ERROR 1050 (42S01): Table 'seq_1_to_10' already exists.

Solution is to use: -
  CREATE TABLE IF NOT EXISTS seq_1_to_10 ...;

=====

Also, there is a different way to use sequences as: -
  Create sequence s1;
  Explain select * from s1;

Here, we should be recording the DDL statement, but no need to store the
stats for it. However, we didn't record the DDL statement earlier.
Moreover, sequence's next value should be the same in the replay environment.

Solution here is to record the DDL for such a sequence as
  CREATE TABLE IF NOT EXISTS s1 ...;
and also set its start value as the recorded environment's previous value using
  SELECT SETVAL(s1, prev_value);
Oleksandr Byelkin
attempt #3
Sergei Petrunia
Make mtr accept and ignore  "--disable_replay next_query|test_file text" command
bsrikanth-mariadb
MDEV-40389: type_test.type_test_int8 fails on replay

plugins are not yet supported in replay mode.

So, disabling tests type_test.type_test_int8, and type_test.type_test_double
to be run in replay-server mode
Sergei Petrunia
Renames: record/infuse functions to match the target function name
Sergei Petrunia
Code cleanup, introduce get_create_table_stmt().
bsrikanth-mariadb
Disable a couple of main.cte_recursive tests when run in replay-server mode

They can be re-enabled after MDEV-39978 is resolved
KhaledR57
MDEV-40495 KEY_OP_SHIFT redo moves data past the page buffer

The KEY_OP_SHIFT branch of _ma_apply_redo_index() took the shift length
straight from the redo record and used it to form a bmove() source and
size, and to update page_length. The only guards were DBUG_ASSERTs, which
are compiled out when DBUG_OFF is set. A corrupt record with a negative
length could therefore move data from outside the page and wrap
page_length.

Turn both asserts into runtime checks. The page offset must be set and
inside the used page, the resulting page length must still fit the page,
and for a negative shift the source must stay inside the used page too.
The conditions are the ones the asserts already tested, so debug buildskeep the same behaviour.

This also fixes MDEV-40496, which covers the page_length side of the same
branch. The first check bounds it.

The test forges the logged shift length with corrupt_shift_length
debug, then crashes the server so recovery has to replay the record.
Sergei Petrunia
Renames: (record|infuse)multi_range_read_info_const
Sergei Petrunia
Remove incorrectly added sql/opt_sum.cc.orig
bsrikanth-mariadb
MDEV-39433: Crash when recording context for a sequence query

With optimizer_record_context enabled, a simple query involving sequence
such as:

create sequence s1;
Explain select * from s1;

is crashing in store_optimizer_costs(). There are no costs associated
with sequence tables, and their fields, and hence when trying to access
cost information for them, a crash occurs.

Solution
========
Don't try to store stats or cost information for sequences
Sergei Petrunia
Rename include/get_rec_idx_ranges_from_opt_ctx.inc, cleaner printouts

New name: include/opt_context_list_tables_and_ranges.inc
bsrikanth-mariadb
Add standard_compliant_cte to opt_related_sys_vars list

Fixes a test in main.cte_recursive
bsrikanth-mariadb
MDEV-40518: add both drop table and view stmts

The context only stored "DROP TABLE IF EXISTS t1" before adding a
"CREATE TABLE t1" statement. However, there can be a view named t1
already existing in the database. When the context was replayed,
the CREATE statement failed stating t1 already exists.

Solution is to add both "DROP TABLE IF EXISTS t1", and
"DROP VIEW IF EXISTS t1" before adding a
"CREATE TABLE t1" statement into the context.
Sergei Petrunia
More code cleanups.
bsrikanth-mariadb
Replace List<> with Mem_root_dynamic_array for double and uint types
bsrikanth-mariadb
MDEV-40220: Add server version to optimizer context

Additionaly, include Version_source_revision as well.
These are read only informative sya variables. So, they are included as
comments instead of SET commands.
bsrikanth-mariadb
MDEV-40390: compat/oracle.sp-package fails on replay

UDFs are not yet supported in replay mode.

So, disabling test compat/oracle.sp-package
Sergei Petrunia
Code cleanup (3).
Sergei Petrunia
MDEV-40740: Optimizer Context Replay: innodb.xa_unlock_unmodified fails assert

Optimizer Context code changed format_and_store_row() to check both
table->read_set and table->write_set (when required). It used to
use one of those depending on the lock level.

But we don't set the table->read_set bit so we can get an assertion
failure when dumping the column value.

This is fairly rare as Optimizer Context now reads all columns, and the
only other user is statements like "DBUG_PRINT("dml", dbug_format_row(..."