Details
-
Task
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
Description
Implement the engine-defined options corresponding to useful table
options, including (options marked as ++ are included only because
of the "keep" decision on the corresponding spider system variables
in MDEV-27228):
- auto_increment_mode
- bgs_mode
- bulk_size
- bulk_update_size
- connect_timeout
- multi_split_read
- net_read_timeout
- net_write_timeout
- priority
- query_cache
- query_cache_sync
- read_only_mode
- skip_parallel_search++
- host
- password
- port
- username
- wrapper
- default_file
- default_group
- driver
- dsn
- filedsn
- socket
- ssl_capath
- ssl_ca
- ssl_cert
- ssl_cipher
- ssl_key
- ssl_vscs
- use_pushdown_udf
- force_bulk_delete
- force_bulk_update
- table_count_mode
- delete_all_rows_type
- idx
Spider table parameters are documented (incompletely) at
https://mariadb.com/kb/en/spider-table-parameters/
Many of these table params have a twin system variable. Examples
include read_only_mode, net_read_timeout etc. The natural
approach to these params is to use HA_TOPTION_SYSVAR macro,
which takes care of the value overriding. This is also a natural
continuation of spider sysvar tickets like MDEV-27169 and
MDEV-31524. However, table options can not fall back dynamically to
the current sysvar value, so we have to keep the overriding/fallback
mechanism and use the string type (HA_TOPTION_STRING) for these
values, where we can encode unspecified as the null string.
There's also a temporary problem with unspecified non-string table
options. Given that we will keep connection string parsing by
COMMENT or CONNECTION until MDEV-31146, It makes sense as a part of
the changes for this ticket, to ignore COMMENT/CONNECTION parsing
when any table option is used. However, it is not possible to tell
whether a non-string type table option has been specified. We fix
this by making these options also string type (so all spider options
are of the string type) and if any of them is non-null (i.e.
specified), we ignore COMMENT/CONNECTION for parsing. An alternative
fix also considered was to make the COMMENT string parsing override
these table options. However, this is an inferior choice given
that 1. this increases complexity in overriding; 2. only six
relatively uncommon table options are not sysvars and not strings
(priority, query_cache, query_cache_sync, force_bulk_delete,
force_bulk_update, table_count_mode); 3. all params are already
supplied as strings (e.g. read_only_mode "1") in the existing
comment string parsing so no surprise to users if they remain
strings, and in create table statements strings do not need to be
quoted anyway; 4. users might want to use comments for comments.
Even though after this task there are MDEV-28861 and MDEV-31146 that
duplicate and remove connection info encoded in comments, there will
still be connection string parser in the spider codebase, for spider
udfs like spider_direct_sql and spider_copy_tables.
Regarding the choice of the table options in the list above, some
undocumented parameters have unclear purpose. It is not in the scope
of this ticket to try to document every one of them. Examples
include force_bulk_update, force_bulk_delete,
table_count_mode. Also worth noting is the parameter
delete_all_rows_type, which is buggy at 11.2 (MDEV-31996), but
on face value its purpose is clear, so we keep it for now.
Attachments
Issue Links
- blocks
-
MDEV-28861 Spider: Deprecate table options by COMMENT
- Closed
- causes
-
MDEV-32486 Assertion `!trx->alloc_line_no[id] || trx->alloc_line_no[id] == line_no' failed in spider_alloc_mem_calc
- Closed
-
MDEV-32558 ERROR 1429 (base) versus crash [SIGSEGV in spider_create_conn] (28856 patch) and ERROR 12719 infinite loop (base) versus ERROR 12518 table is read only (patch) on optimized builds in CLI
- Closed
- includes
-
MDEV-32157 Backport cleanup commits from MDEV-28856 to lower versions
- Closed
-
MDEV-32234 Missing spaces in Spider variable descriptions
- Closed
- is blocked by
-
MDEV-31117 Spider UBSAN runtime error: applying non-zero offset x to null pointer in st_spider_param_string_parse::restore_delims
- Closed
-
MDEV-32486 Assertion `!trx->alloc_line_no[id] || trx->alloc_line_no[id] == line_no' failed in spider_alloc_mem_calc
- Closed
- relates to
-
MDEV-27228 Deprecate Spider plugin variables that result in excessive tweak
- Stalled
-
MDEV-27106 Spider: specify connection to data node by engine-defined attributes
- Closed
-
MDEV-32492 SIGSEGV in spider_conn_first_link_idx and others on DELETE, INSERT and SELECT
- Closed
-
MDEV-32557 "ERROR 12501 (HY000): The connect info 'MYSQL' is invalid" not repeatable in MDEV-28856 branch
- Closed
-
MDEV-32585 ASAN: stack-buffer-overflow in get_defaults_options on SELECT
- Confirmed