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
Oleksandr Byelkin
change after changing server maturity
Dave Gosselin
MDEV-35747: Wrong result from prepared TVC with parameter markers

The setup of column type information in table_value_constr::prepare()
was wrapped in an "if (!holders)" guard so that it runs only once per
prepared statement.  However, the guard was too wide because it bound
the allocation of item holders (which should happen only once) to the
collection of type information (which should happen on each
execution).

This leaves the TVC stuck with whatever placeholder type the parameter
had at PREPARE time which may not match the type of the next
substitution.  A type holder has no actual type at PREPARE time.  Its
type only becomes known when a value is bound at EXECUTE time.  So
both the TVC types and the corresponding Item_type_holder instance in
the SELECT item list must be computed again on every EXECUTE.

This patch separates the work done once per prepared statement from
the work done on every execution as implied above.
Monty
Review fixes for "Batch tail allocation for blob continuation chains"

- Optimized setting is_only_run (avoiding one/two if's for each loop)
- Removed test for run_rec_count == 1 in a context where it was guaranteed
  to be 1.
- Removed not needed variable prev_pos (as it was always identical to
  run_start)
Jan Lindström
MDEV-39488 : Skip Galera test requiring perfschema if -DPLUGIN_PERFSCHEMA=NO

Test change only, this test does not need perfschema.
Oleksandr Byelkin
fix show create after merge
ParadoxV5
MDEV-37321: Move select IO thread steps and select connector functions

To prepare for MDEV-37321, this commit moves them to a
`Remote_event_stream` class outside of `sql/`.
The `.cc` file will switch to Connector/C unbeknownst to `rpl_mi.cc`.

Only the following steps are reörganized to reusable instance methods:
* Connection setup and startup
* VIO management
  * Abort when the thread is killed
  * Closing
    (already covered by Connector/C, but not by the current `libmysql`)

The following steps are currently not öptimal for moving
(have verbose changesets), so they are only wrapped, not reörganized:
* steps that run queries *with copy-pasted code*
* sending commands `COM_REGISTER_SLAVE` & `COM_BINLOG_DUMP`,
  including serializing their arguments
  * Connector/C does not have a formal API for serializing
    command arguments, especially variable-length strings.
  * Connector/C has a Binlog API that duplicates this step, but that
    API is not modular for the Server’s full replication capabilities.
* error checking

These require refactors and ideally an evaluation for `mariadb-binlog`.

To enable this migration, this commit additionally:
* Reserves the management of the IO thread’s VIO to the client library
* Draft-specific: omits MDEV-28114’s kludge failure
  recovery for Semi-Sync graceful self-KILL since
  * MDEV-32551 fixed the root bug on the ACK receiver, and
  * MDEV-39583 plans to remove this entire sub-component.

Draft-specific: Until Connector/C exports the pre-decompress (network)
byte count, `@@read_binlog_speed_limit` will measure the post-decompress
count even in `@@slave_compressed_protocol` for now.
Sergei Golubchik
MDEV-39582 mariadb-binlog missing sanity checks for ibb files

check that binlog_page_size <= BINLOG_PAGE_SIZE_MAX
Oleksandr Byelkin
MDEV-39389 Memory leaks in _db_set_init

Handle forgotten case of resetting parameters
(free command_line before assigning a new one).
Alexey Botchkov
MDEV-39536 ASAN heap-buffer-overflow in process_str_arg upon ER_TRUNCATED_WRONG_VALUE "Incorrect XML value".

Test casse added.
Raghunandan Bhat
MDEV-39095: Fixes to MariaDB Syntax Checker

- Skip initializing stopwords for full-text indicies.
- Skip changing data directory when checking syntax.
- Help message when syntax checker is used in interactive mode.
- Initialize THD with a dummy database name to prevent `No database
  selected` error.
- Allow execution of SET sql_mode, so that subsequent queries are parsed
  based on the set sql mode.
- More tests: DDLs, DMLs, Stored Procedures, Views, sql_mode
Monty
Review of reclaim tail records on failed blob allocation

- Simplify loop in hp_shrink_tail to avoid multiplcations
- Moved assert from callers of hp_shrink_tail() to hp_shrink_tail()
Monty
Review fixes for "Code review feedback: `hp_update.c` cleanup, test renames, style fixes"

- Optimized struct layouts in heap.h even more by moving variables
  according to size
- Replaced max_heap_table_size with tmp_memory_table_size in tests
- In ha_heap::records_in_range, removed not needed variable blob_count
- In hp_blob.cc:hp_write_run_data() replaced loop with one memcpy
- In heap_write() replaced loop with jump to avoid code duplication

Other things:
- Removed extra empty lines
- Reformatted rows to fit 80 characters
- Removed not needed braces from blocks with no varaibles.
Monty
Review fixes for "Batch tail allocation for blob continuation chains"

- Optimized setting is_only_run (avoiding one/two if's for each loop)
- Removed test for run_rec_count == 1 in a context where it was guaranteed
  to be 1.
- Removed not needed variable prev_pos (as it was always identical to
  run_start). This also fixes one of the bugs fixed by the next commit.
Dave Gosselin
MDEV-35747: Wrong result from prepared TVC with parameter markers

The setup of column type information in table_value_constr::prepare()
was wrapped in an "if (!holders)" guard so that it runs only once per
prepared statement.  However, the guard was too wide because it bound
the allocation of item holders (which should happen only once) to the
collection of type information (which should happen on each
execution).

This leaves the TVC stuck with whatever placeholder type the parameter
had at PREPARE time which may not match the type of the next
substitution.  A type holder has no actual type at PREPARE time.  Its
type only becomes known when a value is bound at EXECUTE time.  So
both the TVC types and the corresponding Item_type_holder instance in
the SELECT item list must be computed again on every EXECUTE.

This patch separates the work done once per prepared statement from
the work done on every execution as implied above.
Alexey Botchkov
MDEV-39536 ASAN heap-buffer-overflow in process_str_arg upon ER_TRUNCATED_WRONG_VALUE "Incorrect XML value".

Test casse added.
Rex Johnston
MDEV-39492 Parallel Query: Study how to create worker threads

Introduces parallel_worker_threads variable to control the number
of worker threads created by a parallel execution query.

2 new files, sql_parallel_workers.h sql_parallel_workers.cc which
contain structures for the creation, management and deletion of
parallel worker threads (pwt_ in the name).  Main management
class created in the stack in JOIN::exec, implemented for the
top level select.

Current parallel_worker_thread_func sleeps for a random time, generates
a warning, signals the main thread, sleeps a random time, signals the
main thread again, sets it's finished flag and cleans it's THD.

The main thread loops through worker threads, looking for finished
thread and cleans them up if they have finished.
It then waits for a signal, then processes it's message queue.

The thread management data is allocated on the stack in JOIN::exec.
Everything else is allocated using my_malloc() and my_free().
Dave Gosselin
MDEV-38508: Constant table detection

If a table that's in a FULL OUTER JOIN is found to be a const
table, then don't allow the constant table optimization to
take place.

Later, when we support FULL OUTER JOIN on the inner side of
other join types then we may be able to relax this restriction.
Alexey Botchkov
MDEV-39589 Wrong results with xmltype as a virtual column.

Store value in the XML column even if an error happened.
Monty
Review fixes for "Code review feedback: `hp_update.c` cleanup, test renames, style fixes"

- Optimized struct layouts in heap.h even more by moving variables
  according to size
- Replaced max_heap_table_size with tmp_memory_table_size in tests
- In ha_heap::records_in_range, removed not needed variable blob_count
- In hp_blob.cc:hp_write_run_data() replaced loop with one memcpy
- In heap_write() replaced loop with jump to avoid code duplication

Other things:
- Removed extra empty lines
- Reformatted rows to fit 80 characters
- Removed not needed braces from blocks with no varaibles.
Dave Gosselin
Remove the unused AGGR_OP::flush_record method
Raghunandan Bhat
MDEV-39095: Fixes to MariaDB Syntax Checker

- Skip initializing stopwords for full-text indicies.
- Skip changing data directory when checking syntax.
- Help message when syntax checker is used in interactive mode.
- Initialize THD with a dummy database name to prevent `No database
  selected` error.
- Allow execution of SET sql_mode, so that subsequent queries are parsed
  based on the set sql mode.
- More tests.
Alexey Botchkov
MDEV-39536 ASAN heap-buffer-overflow in process_str_arg upon ER_TRUNCATED_WRONG_VALUE "Incorrect XML value".

Test casse added.
Monty
squash! 4888cdb69fd115986625da2a44b78a6a3898983c

Fixed that heap_prepare_hp_create_info() honors tmp_memory_table_size
Fixed memory overrun error in hp_test_hash-t
Added DBUG_ASSERT to ensure that we are not used converted heap
keys with index_read()
Alexey Botchkov
MDEV-39570 LeakSanitizer: detected memory leaks after insert with xmltype

XML parser should always be freed.
Raghunandan Bhat
MDEV-39095: Fixes to MariaDB Syntax Checker

- Skip initializing stopwords for full-text indicies.
- Skip changing data directory when checking syntax.
- Help message when syntax checker is used in interactive mode.
- Initialize THD with a dummy database name to prevent `No database
  selected` error.
- Allow execution of SET sql_mode, so that subsequent queries are parsed
  based on the set sql mode.
- More tests.
Daniel Black
MDEV-30518: JSON functions cannot be killed on big-endian

The json_engine killed_ptr was of type uchar however the enum
in the server is dependant on the architecture. On big-endian
architectures like IBM Z, retreiving a uchar* retreived the
unmodifed part of the THD->kill enum location and was always 0.

As C++11 allows enums to inherit a type, used uint32_t as the base
class of killed_state type in the server and used uint32_t in the
json library.

reload_acl_and_cache required an expression change to avoid
the compile error:
sql/sql_reload.cc:472:24: error: enumerated and non-enumerated
type in conditional expression [-Werror=enum-conversion]
  472 |  return result || (thd ? thd->killed : 0);

Added the kill_ptr assignment the following functions can be
killed:
* Item_func_json_depth::val_int
* Item_func_json_type::val_str
* Item_func_json_length::val_int

Item_func_json_array_append::val_str, check_killed() only applied
to json_error: label and not return_null.

Item_func_json_overlaps::val_bool ensure check_killed() is called.

Item_func_json_format::val_str(), corresponding to the SQL,
json_compact, json_detailed, json_loose - add debug instrumentation
for the func_json_notembedded test.

MDEV-26726 (fcd345de485f) added a json_pause_execution sync point
however the test case used debug_max_statement_time, which doesn't
exist. Fix the sync point name in the test.
Sergei Golubchik
MDEV-39582 mariadb-binlog missing sanity checks for ibb files

check that binlog_page_size <= BINLOG_PAGE_SIZE_MAX
Alexey Botchkov
MDEV-39536 ASAN heap-buffer-overflow in process_str_arg upon ER_TRUNCATED_WRONG_VALUE "Incorrect XML value".

Test casse added.
Alexey Botchkov
MDEV-38809 RBR fails upon DML with XML type.

Add Field_xmltype::rpl_conv_type_from() function to control
replication data types.
Monty
Review commit for Overflow-to-Aria on `ha_update_tmp_row()`...

- Updated test to print number created temporary files for all
  test parts.
- Fixed long comment in hp_blob.c
Alexey Botchkov
MDEV-39536 ASAN heap-buffer-overflow in process_str_arg upon ER_TRUNCATED_WRONG_VALUE "Incorrect XML value".

Test casse added.
Alexey Botchkov
MDEV-39573 Server crashes in Item_char_typecast::fix_length_and_dec_internal after select xmltype.

Charset specified.
Alexey Botchkov
MDEV-39570 LeakSanitizer: detected memory leaks after insert with xmltype

XML parser should always be freed.
Dave Gosselin
MDEV-35747: Wrong result from prepared TVC with parameter markers

The setup of column type information in table_value_constr::prepare()
was wrapped in an "if (!holders)" guard so that it runs only once per
prepared statement.  However, the guard was too wide because it bound
the allocation of item holders (which should happen only once) to the
collection of type information (which should happen on each
execution).

This leaves the TVC stuck with whatever placeholder type the parameter
had at PREPARE time which may not match the type of the next
substitution.  An Item_param has no actual type at PREPARE time.  Its
type only becomes known when a value is bound at EXECUTE time.  So
both the TVC types and the corresponding Item_type_holder instance in
the SELECT item list must be computed again on every EXECUTE.

This patch separates the work done once per prepared statement from
the work done on every execution.

A separate change in Item_args::alloc_arguments resets arg_count to
zero on entry, so that running get_type_attributes_for_tvc again on
persistent Type_holder slots does not accumulate arguments across
executions.
Alexey Botchkov
MDEV-39536 ASAN heap-buffer-overflow in process_str_arg upon ER_TRUNCATED_WRONG_VALUE "Incorrect XML value".

XML should be prepared before inserting it into the error message.
Raghunandan Bhat
MDEV-39095: Fixes to MariaDB Syntax Checker

- Skip initializing stopwords for full-text indicies.
- Skip changing data directory when checking syntax.
- Help message when syntax checker is used in interactive mode.
- Initialize THD with a dummy database name to prevent `No database
  selected` error.
- Allow execution of SET sql_mode, so that subsequent queries are parsed
  based on the set sql mode.
- More tests: DDLs, DMLs, Stored Procedures, Views, sql_mode
Dave Gosselin
MDEV-39569: Skip FULL JOIN rewrite to inner side of an outer join

Prevent simplify_joins from rewriting a chained FULL JOIN into a query
where a FULL JOIN could end up on the inner side of another outer
join.  Of course, this means that we will have a null complement pass
that the rewritten query would have avoided.  Once we support FULL
JOINs on the inner side of outer joins, in phase 3, then we can relax
this constraint.