Bug #94127 The description of "13.7.6.2 CACHE INDEX Syntax" is ambiguous

Submitted: 30 Jan 2019 3:32 Modified: 25 Apr 2019 14:41
Reporter: JianJun Shi Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Documentation Severity:S4 (Feature request)
Version:5.7 OS:Linux
Assigned to: CPU Architecture:Any

[30 Jan 2019 3:32] JianJun Shi
Description:
"13.7.6.2 CACHE INDEX Syntax" chapter in the "MySQL 5.7 Reference Manual" was describe as following:

CACHE INDEX
tbl_index_list [, tbl_index_list] ...
[PARTITION (partition_list | ALL)]
IN key_cache_name

tbl_index_list:
tbl_name [[INDEX|KEY] (index_name[, index_name] ...)]

partition_list:
partition_name[, partition_name][, ...]

From my point of view, "[PARTITION (partition_list | ALL)]" mains: the syntax of "PARTITION" is not in collision with the syntax of "tbl_index_list", we can use them at the same time. Actually, if we do like that. We will get back a error message from the "CACHE INDEX" syntax.

How to repeat:
use test;
CREATE TABLE IF NOT EXISTS Part_CACHE_INDEX_100 (C_ID INT NOT NULL DEFAULT 99 REFERENCES CREATE_TABLE_000 (C_ID) MATCH PARTIAL ,C_D_ID INTEGER NOT NULL,C_W_ID BIGINT NOT NULL,C_DOUBLE DOUBLE NOT NULL,C_DECIMAL DECIMAL NOT NULL,C_FIRST VARCHAR(64) NOT NULL,C_MIDDLE CHAR(2),C_LAST VARCHAR(64) NOT NULL,C_STREET_1 VARCHAR(20) NOT NULL,C_STREET_2 VARCHAR(20),C_CITY VARCHAR(64) NOT NULL,C_STATE CHAR(2) NOT NULL,C_ZIP CHAR(9) NOT NULL,C_PHONE CHAR(16) NOT NULL,C_SINCE TIMESTAMP,C_CREDIT CHAR(2) NOT NULL,C_CREDIT_LIM NUMERIC(12,2),C_DISCOUNT NUMERIC(4,4),C_BALANCE NUMERIC(12,2),C_YTD_PAYMENT REAL NOT NULL,C_PAYMENT_CNT FLOAT NOT NULL,C_DELIVERY_CNT BOOLEAN NOT NULL,C_END DATE NOT NULL,C_VCHAR VARCHAR(1000),C_DATA TEXT,C_TEXT BLOB,C_TINYTEXT TINYTEXT,C_MEDIUMBLOB MEDIUMBLOB,C_LONGBLOB LONGBLOB, CONSTRAINT pk_CACHE_INDEX_100 PRIMARY KEY USING BTREE (C_ID DESC) USING HASH, UNIQUE INDEX UNIQUE_index_CACHE_INDEX_100 (C_D_ID,C_ID,C_W_ID DESC) USING BTREE, KEY (C_FIRST,C_MIDDLE,C_LAST (20),C_TINYTEXT (2) ASC) COMMENT 'string', CHECK ('agdj56!#54'IS UNKNOWN)) AUTO_INCREMENT 9, AVG_ROW_LENGTH = 8, CHARACTER SET = utf8, CHECKSUM 1, DEFAULT COLLATE utf8_general_ci, COMMENT 'string', CONNECTION 'connect_string', DELAY_KEY_WRITE 0, ENGINE = MyISAM, INSERT_METHOD = LAST, MAX_ROWS 99, MIN_ROWS 99, ROW_FORMAT = DYNAMIC, STATS_PERSISTENT DEFAULT, STATS_SAMPLE_PAGES 9, TABLESPACE MYISAM_tablespace_name_000 PARTITION BY HASH (C_ID) (PARTITION partition_CACHE_INDEX_100 STORAGE ENGINE = MyISAM COMMENT = 'string' MAX_ROWS = 100 MIN_ROWS = 20 TABLESPACE MYISAM_tablespace_name_000 ,PARTITION partition_CACHE_INDEX_1001 COMMENT = 'string' MAX_ROWS 100 MIN_ROWS 20 ) ;

CACHE INDEX Part_CACHE_INDEX_100 INDEX(UNIQUE_index_CACHE_INDEX_100) PARTITION (ALL) IN keycache1_CACHE_INDEX_100;
CACHE INDEX Part_CACHE_INDEX_100 PARTITION (ALL) IN keycache1_CACHE_INDEX_100;
CACHE INDEX Part_CACHE_INDEX_100 INDEX(UNIQUE_index_CACHE_INDEX_100) IN keycache1_CACHE_INDEX_100;
[31 Jan 2019 6:12] JianJun Shi
Change the category to "MySQL Server: Documentation", not cluster
[31 Jan 2019 9:07] MySQL Verification Team
Hello JianJun,

Thank you for the report and feedback!

regards,
Umesh
[25 Apr 2019 14:41] Paul DuBois
Posted by developer:
 
You're correct, the syntax is either a list of one or more tables OR a PARTITION clause. In addition, PARTITION accepts only a single table name.

Updated syntax:

CACHE INDEX {
      tbl_index_list [, tbl_index_list] ...
    | tbl_name PARTITION (partition_list | ALL)
  }
  IN key_cache_name

tbl_index_list:
  tbl_name [{INDEX|KEY} (index_name[, index_name] ...)]

partition_list:
  partition_name[, partition_name] ...

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.040 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.