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

RocksDB may show empty or incorrect output with rocksdb_strict_collation_check=off

Details

    Description

      It is hard to find exact conditions which reliably trigger the problem, but following steps did demonstrate it (see outputs later):

      set global rocksdb_strict_collation_check=off;
      drop table t;
      CREATE TABLE t(
        a varchar(10) NOT NULL,
        b char(1) DEFAULT 'X',
        c char(2) NOT NULL DEFAULT '??',
        d varchar(10) NOT NULL,
        e int(11) DEFAULT 0,
        PRIMARY KEY (a,d),
        KEY (e)
      ) ENGINE=ROCKSDB DEFAULT CHARSET=utf8;
       
      insert into t select 1,1,1,1,0;
      insert into t select 2,1,1,1,0;
      insert into t select 3,1,1,1,0;
       
      select a from t;
      explain select * from t where not e;
      select a from t;
      

      MariaDB [test]> drop table t;
      Query OK, 0 rows affected (0.04 sec)
       
      MariaDB [test]> CREATE TABLE t(
          ->   a varchar(10) NOT NULL,
          ->   b char(1) DEFAULT 'X',
          ->   c char(2) NOT NULL DEFAULT '??',
          ->   d varchar(10) NOT NULL,
          ->   e int(11) DEFAULT 0,
          ->   PRIMARY KEY (a,d),
          ->   KEY (e)
          -> ) ENGINE=ROCKSDB DEFAULT CHARSET=utf8;
      Query OK, 0 rows affected (0.22 sec)
       
      MariaDB [test]> 
      MariaDB [test]> insert into t select 1,1,1,1,0;
      Query OK, 1 row affected (0.07 sec)
      Records: 1  Duplicates: 0  Warnings: 0
       
      MariaDB [test]> insert into t select 2,1,1,1,0;
      Query OK, 1 row affected (0.03 sec)
      Records: 1  Duplicates: 0  Warnings: 0
       
      MariaDB [test]> insert into t select 3,1,1,1,0;
      Query OK, 1 row affected (0.03 sec)
      Records: 1  Duplicates: 0  Warnings: 0
       
      MariaDB [test]> 
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> explain select * from t where not e;
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      | id   | select_type | table | type | possible_keys | key  | key_len | ref   | rows | Extra |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      |    1 | SIMPLE      | t     | ref  | e             | e    | 5       | const |    2 |       |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      1 row in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      |   |
      |   |
      |   |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> \r
      Connection id:    11
      Current database: test
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      |   |
      |   |
      |   |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> flush tables;
      Query OK, 0 rows affected (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      |   |
      |   |
      |   |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      ERROR 2006 (HY000): MySQL server has gone away
      No connection. Trying to reconnect...
      Connection id:    9
      Current database: test
       
      +---+
      | a |
      +---+
      |   |
      |   |
      |   |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> optimize table t;
      +--------+----------+----------+----------+
      | Table  | Op       | Msg_type | Msg_text |
      +--------+----------+----------+----------+
      | test.t | optimize | status   | OK       |
      +--------+----------+----------+----------+
      1 row in set (0.15 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      |   |
      |   |
      |   |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> select a,b from t;
      +---+------+
      | a | b    |
      +---+------+
      | 1 | 1    |
      | 2 | 1    |
      | 3 | 1    |
      +---+------+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      |   |
      |   |
      |   |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> alter table t drop primary key;
      Query OK, 3 rows affected (0.27 sec)               
      Records: 3  Duplicates: 0  Warnings: 0
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> explain select * from t where not e;
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      | id   | select_type | table | type | possible_keys | key  | key_len | ref   | rows | Extra |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      |    1 | SIMPLE      | t     | ref  | e             | e    | 5       | const |    1 |       |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      1 row in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> alter table t add primary key(a,d);
      Query OK, 3 rows affected (0.27 sec)               
      Records: 3  Duplicates: 0  Warnings: 0
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      |   |
      |   |
      |   |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> drop table t;
      Query OK, 0 rows affected (0.03 sec)
       
      MariaDB [test]> CREATE TABLE t(
          ->   a varchar(10) NOT NULL,
          ->   b char(1) DEFAULT 'X',
          ->   c char(2) NOT NULL DEFAULT '??',
          ->   d varchar(10) NOT NULL,
          ->   e int(11) DEFAULT 0,
          ->   PRIMARY KEY (a,d),
          ->   KEY (e)
          -> ) ENGINE=ROCKSDB DEFAULT CHARSET=utf8;
      ERROR 4063 (HY000): Unsupported collation on string indexed column test.t.a Use binary collation (latin1_bin, binary, utf8_bin).
      MariaDB [test]> 
      MariaDB [test]> insert into t select 1,1,1,1,0;
      ERROR 1146 (42S02): Table 'test.t' doesn't exist
      MariaDB [test]> insert into t select 2,1,1,1,0;
      ERROR 1146 (42S02): Table 'test.t' doesn't exist
      MariaDB [test]> insert into t select 3,1,1,1,0;
      ERROR 1146 (42S02): Table 'test.t' doesn't exist
      MariaDB [test]> 
      MariaDB [test]> select a from t;
      ERROR 1146 (42S02): Table 'test.t' doesn't exist
      MariaDB [test]> set global rocksdb_strict_collation_check=off;
      Query OK, 0 rows affected (0.00 sec)
       
      MariaDB [test]> drop table t;
      ERROR 1051 (42S02): Unknown table 'test.t'
      MariaDB [test]> CREATE TABLE t(
          ->   a varchar(10) NOT NULL,
          ->   b char(1) DEFAULT 'X',
          ->   c char(2) NOT NULL DEFAULT '??',
          ->   d varchar(10) NOT NULL,
          ->   e int(11) DEFAULT 0,
          ->   PRIMARY KEY (a,d),
          ->   KEY (e)
          -> ) ENGINE=ROCKSDB DEFAULT CHARSET=utf8;
      Query OK, 0 rows affected (0.14 sec)
       
      MariaDB [test]> 
      MariaDB [test]> insert into t select 1,1,1,1,0;
      Query OK, 1 row affected (0.03 sec)
      Records: 1  Duplicates: 0  Warnings: 0
       
      MariaDB [test]> insert into t select 2,1,1,1,0;
      Query OK, 1 row affected (0.03 sec)
      Records: 1  Duplicates: 0  Warnings: 0
       
      MariaDB [test]> insert into t select 3,1,1,1,0;
      Query OK, 1 row affected (0.04 sec)
      Records: 1  Duplicates: 0  Warnings: 0
       
      MariaDB [test]> 
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> select a,b from t;
      +---+------+
      | a | b    |
      +---+------+
      | 1 | 1    |
      | 2 | 1    |
      | 3 | 1    |
      +---+------+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> explain select a from t;
      +------+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
      | id   | select_type | table | type  | possible_keys | key     | key_len | ref  | rows | Extra       |
      +------+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
      |    1 | SIMPLE      | t     | index | NULL          | PRIMARY | 64      | NULL |    0 | Using index |
      +------+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
      1 row in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> explain select a from t where not 1;
      +------+-------------+-------+------+---------------+------+---------+------+------+------------------+
      | id   | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra            |
      +------+-------------+-------+------+---------------+------+---------+------+------+------------------+
      |    1 | SIMPLE      | NULL  | NULL | NULL          | NULL | NULL    | NULL | NULL | Impossible WHERE |
      +------+-------------+-------+------+---------------+------+---------+------+------+------------------+
      1 row in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> explain select a from t where not a;
      +------+-------------+-------+-------+---------------+---------+---------+------+------+--------------------------+
      | id   | select_type | table | type  | possible_keys | key     | key_len | ref  | rows | Extra                    |
      +------+-------------+-------+-------+---------------+---------+---------+------+------+--------------------------+
      |    1 | SIMPLE      | t     | index | PRIMARY       | PRIMARY | 64      | NULL |    0 | Using where; Using index |
      +------+-------------+-------+-------+---------------+---------+---------+------+------+--------------------------+
      1 row in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> explain select a from t where not e;
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------------+
      | id   | select_type | table | type | possible_keys | key  | key_len | ref   | rows | Extra       |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------------+
      |    1 | SIMPLE      | t     | ref  | e             | e    | 5       | const |    1 | Using index |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------------+
      1 row in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> explain select * from t where not e;
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      | id   | select_type | table | type | possible_keys | key  | key_len | ref   | rows | Extra |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      |    1 | SIMPLE      | t     | ref  | e             | e    | 5       | const |    2 |       |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      1 row in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      |   |
      |   |
      |   |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> alter table t engine=rocksdb;
      Query OK, 3 rows affected (0.27 sec)               
      Records: 3  Duplicates: 0  Warnings: 0
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      |   |
      |   |
      |   |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> set global rocksdb_strict_collation_check=off;
      Query OK, 0 rows affected (0.00 sec)
       
      MariaDB [test]> drop table t;
      Query OK, 0 rows affected (0.03 sec)
       
      MariaDB [test]> CREATE TABLE t(
          ->   a varchar(10) NOT NULL,
          ->   b char(1) DEFAULT 'X',
          ->   c char(2) NOT NULL DEFAULT '??',
          ->   d varchar(10) NOT NULL,
          ->   e int(11) DEFAULT 0,
          ->   PRIMARY KEY (a,d),
          ->   KEY (e)
          -> ) ENGINE=ROCKSDB DEFAULT CHARSET=utf8;
      Query OK, 0 rows affected (0.20 sec)
       
      MariaDB [test]> 
      MariaDB [test]> insert into t select 1,1,1,1,0;
      Query OK, 1 row affected (0.04 sec)
      Records: 1  Duplicates: 0  Warnings: 0
       
      MariaDB [test]> insert into t select 2,1,1,1,0;
      Query OK, 1 row affected (0.03 sec)
      Records: 1  Duplicates: 0  Warnings: 0
       
      MariaDB [test]> insert into t select 3,1,1,1,0;
      Query OK, 1 row affected (0.03 sec)
      Records: 1  Duplicates: 0  Warnings: 0
       
      MariaDB [test]> 
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> explain select a from t where not e;
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------------+
      | id   | select_type | table | type | possible_keys | key  | key_len | ref   | rows | Extra       |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------------+
      |    1 | SIMPLE      | t     | ref  | e             | e    | 5       | const |    1 | Using index |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------------+
      1 row in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> explain select * from t where not a;
      +------+-------------+-------+------+---------------+------+---------+------+------+-------------+
      | id   | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra       |
      +------+-------------+-------+------+---------------+------+---------+------+------+-------------+
      |    1 | SIMPLE      | t     | ALL  | PRIMARY       | NULL | NULL    | NULL |    0 | Using where |
      +------+-------------+-------+------+---------------+------+---------+------+------+-------------+
      1 row in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> explain select * from t where not e;
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      | id   | select_type | table | type | possible_keys | key  | key_len | ref   | rows | Extra |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      |    1 | SIMPLE      | t     | ref  | e             | e    | 5       | const |    1 |       |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      1 row in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      | 1 |
      | 2 |
      | 3 |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> explain select * from t where not e;
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      | id   | select_type | table | type | possible_keys | key  | key_len | ref   | rows | Extra |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      |    1 | SIMPLE      | t     | ref  | e             | e    | 5       | const |    5 |       |
      +------+-------------+-------+------+---------------+------+---------+-------+------+-------+
      1 row in set (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      |   |
      |   |
      |   |
      +---+
      3 rows in set (0.00 sec)
       
      MariaDB [test]> flush query cache;
      Query OK, 0 rows affected (0.00 sec)
       
      MariaDB [test]> select a from t;
      +---+
      | a |
      +---+
      |   |
      |   |
      |   |
      +---+
      3 rows in set (0.00 sec)
      

      Attachments

        Issue Links

          Activity

            There are some difficult cases:

            innodb_ext_key failure:

            "Extended keys" feature the way it works on the SQL layer does not always fully extend the index. One example: when the length of the key reaches MAX_KEY_LENGTH, it will not append any more PK key parts to the secondary key (even if the storage engine actually does).

            So, SQL layer thinks that not all of PK key parts are added to the secondary index. Well, the only way to know if a PK column can be decoded from the secondary index is to make a call like this:

              handler->index(secondary_key, extended_pk_key_part, 0) & HA_KEYREAD_ONLY
            

            if there is no extended_pk_key_part, there is no way to check...

            (A testcase in innodb_ext_key.test assumes the following: if a table has ha_table_flags() & HA_PRIMARY_KEY_IN_READ_INDEX, then all PK columns can be obtained by doing a secondary index read).

            psergei Sergei Petrunia added a comment - There are some difficult cases: innodb_ext_key failure: "Extended keys" feature the way it works on the SQL layer does not always fully extend the index. One example: when the length of the key reaches MAX_KEY_LENGTH, it will not append any more PK key parts to the secondary key (even if the storage engine actually does). So, SQL layer thinks that not all of PK key parts are added to the secondary index. Well, the only way to know if a PK column can be decoded from the secondary index is to make a call like this: handler->index(secondary_key, extended_pk_key_part, 0) & HA_KEYREAD_ONLY if there is no extended_pk_key_part, there is no way to check... (A testcase in innodb_ext_key.test assumes the following: if a table has ha_table_flags() & HA_PRIMARY_KEY_IN_READ_INDEX , then all PK columns can be obtained by doing a secondary index read).

            Another failure is partition_innodb.test. The partitioning storage engine has share->use_ext_keys=FALSE, so keys are not extended (That is, one cannot use them for doing index lookups, for example). But it does have table_flags() & HA_PRIMARY_KEY_IN_READ_INDEX, which means one gets PK column values when doing secondary index reads.

            psergei Sergei Petrunia added a comment - Another failure is partition_innodb.test . The partitioning storage engine has share->use_ext_keys=FALSE , so keys are not extended (That is, one cannot use them for doing index lookups, for example). But it does have table_flags() & HA_PRIMARY_KEY_IN_READ_INDEX , which means one gets PK column values when doing secondary index reads.

            Note that the upstream has:

              ulonglong table_flags() const override {
                ...
                DBUG_RETURN(HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE |
                            HA_REC_NOT_IN_SEQ | HA_CAN_INDEX_BLOBS |
                            (m_pk_can_be_decoded ? HA_PRIMARY_KEY_IN_READ_INDEX : 0) |
            

            (added there by myself at some point)

            while MariaDB has

              ulonglong table_flags() const override {
            ...
                /*
            ...
                  HA_PRIMARY_KEY_IN_READ_INDEX
                    This flag is always set, even for tables that:
                    - have no PK
                    - have some (or all) of PK that can't be decoded from the secondary
                      index.
                */
                DBUG_RETURN(HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE |
                            HA_REC_NOT_IN_SEQ | HA_CAN_INDEX_BLOBS |
                            HA_PRIMARY_KEY_IN_READ_INDEX |
            ...
            

            The difference comes from this change where init_with_fields call was removed in MariaDB:
            https://github.com/MariaDB/server/commit/7fb3b348d71ef29ed10ed7f41b332074c8ac0a3d

            psergei Sergei Petrunia added a comment - Note that the upstream has: ulonglong table_flags() const override { ... DBUG_RETURN(HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE | HA_REC_NOT_IN_SEQ | HA_CAN_INDEX_BLOBS | (m_pk_can_be_decoded ? HA_PRIMARY_KEY_IN_READ_INDEX : 0) | (added there by myself at some point) while MariaDB has ulonglong table_flags() const override { ... /* ... HA_PRIMARY_KEY_IN_READ_INDEX This flag is always set, even for tables that: - have no PK - have some (or all) of PK that can't be decoded from the secondary index. */ DBUG_RETURN(HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE | HA_REC_NOT_IN_SEQ | HA_CAN_INDEX_BLOBS | HA_PRIMARY_KEY_IN_READ_INDEX | ... The difference comes from this change where init_with_fields call was removed in MariaDB: https://github.com/MariaDB/server/commit/7fb3b348d71ef29ed10ed7f41b332074c8ac0a3d

            To sum up: existing storage engines (InnoDB, Partition+InnoDB) require that the following is done:

              pk_field->part_of_key= share->keys_in_use
            

            whenever the table has HA_PRIMARY_KEY_IN_READ_INDEX flag.
            This needs to be done regardless of whether the "extended keys" feature puts all/some PK columns at the ends of secondary indexes or not.

            Enter MyRocks:

            pk_field->part_of_key should only include secondary indexes if the pk_field can be decoded from its key image.

            The only way for SQL layer to know if the PK field is decodable is to check

            h->index_flags(secondary_key, pk_key_part, 0) & HA_KEYREAD_ONLY

            This can only be done when Extended Keys has added the pk_field into the secondary key.
            When it hasn't, SQL layer assumes the column is decodable (see ), which has a potential of causing wrong query result (**).

            Can one solve (**) by having MyRocks not return HA_PRIMARY_KEY_IN_READ_INDEX when at least one of PK columns is not decodable? This is what the upstream does, and no, we can't do it because we are not allowed to have handler->init_with_fields call that the upstream does have.

            (The issue is that table_flags() is called before the storage engine has a chance to know what the table DDL is)

            psergei Sergei Petrunia added a comment - To sum up: existing storage engines (InnoDB, Partition+InnoDB) require that the following is done: pk_field->part_of_key= share->keys_in_use whenever the table has HA_PRIMARY_KEY_IN_READ_INDEX flag. This needs to be done regardless of whether the "extended keys" feature puts all/some PK columns at the ends of secondary indexes or not. Enter MyRocks: pk_field->part_of_key should only include secondary indexes if the pk_field can be decoded from its key image. The only way for SQL layer to know if the PK field is decodable is to check h->index_flags(secondary_key, pk_key_part, 0) & HA_KEYREAD_ONLY This can only be done when Extended Keys has added the pk_field into the secondary key. When it hasn't, SQL layer assumes the column is decodable (see ), which has a potential of causing wrong query result (**). Can one solve (**) by having MyRocks not return HA_PRIMARY_KEY_IN_READ_INDEX when at least one of PK columns is not decodable? This is what the upstream does, and no, we can't do it because we are not allowed to have handler->init_with_fields call that the upstream does have. (The issue is that table_flags() is called before the storage engine has a chance to know what the table DDL is)
            • Committed a patch for this issue, testing it in buildbot.
            • Filed MDEV-14563 for the "another testcase", made a patch for that too. Testing it also.
            psergei Sergei Petrunia added a comment - Committed a patch for this issue, testing it in buildbot. Filed MDEV-14563 for the "another testcase", made a patch for that too. Testing it also.

            People

              psergei Sergei Petrunia
              anikitin Andrii Nikitin (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

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