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

INSERT DELAYED on a SPIDER table doesn't produce ER_DELAYED_NOT_SUPPORTED, doesn't work like delayed, and doesn't honor lock_wait_timeout like normal INSERT

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 10.0.5
    • Component/s: None
    • Labels:

      Description

      INSERT DELAYED might work differently depending on an engine. For example, on MyISAM it works in a classic way (returns and leaves the delayed operation in a separate thread). On InnoDB it produces ER_DELAYED_NOT_SUPPORTED. It would also be understandable if, when not supported, it worked as a normal INSERT.

      However with SPIDER, it doesn't do either of this. It doesn't return an error, doesn't spawn a delayed operation, and doesn't work as normal INSERT. For normal INSERT, SPIDER honors lock_wait_timeout, but for INSERT DELAYED it doesn't.

      Test case:

      	CREATE TABLE mysql.spider_tables(
       db_name char(64) not null default '',
       table_name char(64) not null default '',
       link_id int not null default 0,
       priority bigint not null default 0,
       server char(64) default null,
       scheme char(64) default null,
       host char(64) default null,
       port char(5) default null,
       socket text default null,
       username char(64) default null,
       password char(64) default null,
       ssl_ca text default null,
       ssl_capath text default null,
       ssl_cert text default null,
       ssl_cipher char(64) default null,
       ssl_key text default null,
       ssl_verify_server_cert tinyint not null default 0,
       default_file text default null,
       default_group char(64) default null,
       tgt_db_name char(64) default null,
       tgt_table_name char(64) default null,
       link_status tinyint not null default 1,
       PRIMARY KEY (db_name, table_name, link_id),
       KEY idx1 (priority)
       ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
       
      install soname 'ha_spider.so';
      create database remote;
       
      CREATE TABLE remote.t1 (i INT) ENGINE=MyISAM;
       
      eval CREATE TABLE t1 (i INT) 
      ENGINE=SPIDER 
      CONNECTION='host "localhost", socket "$MASTER_MYSOCK", user "root", password "", prt "2000000"' 
      COMMENT='database "remote", table "t1"';
       
      LOCK TABLE t1 READ;
       
      --connect (con1,localhost,root,,)
       
      SET lock_wait_timeout=1;
      --echo # It hangs here
      INSERT DELAYED INTO t1 VALUES (1);

      bzr version-info

      revision-id: svoj@mariadb.org-20130627111848-b8kc0z60ywwpqavz
      revno: 3762
      branch-nick: 10.0

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              svoj Sergey Vojtovich
              Reporter:
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: