Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-28856

Spider: Implement more engine-defined options




      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

      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.


        Issue Links



              ycp Yuchen Pei
              nayuta-yanagisawa Nayuta Yanagisawa (Inactive)
              1 Vote for this issue
              9 Start watching this issue



                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.