Bug #119904 In MySQL 9.6.0, Reserved is set 0 for SETS
Submitted: 11 Feb 19:27 Modified: 23 Apr 10:34
Reporter: Sabalesh Mahajan Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Parser Severity:S3 (Non-critical)
Version:9.6.0 OS:Any
Assigned to: CPU Architecture:Any

[11 Feb 19:27] Sabalesh Mahajan
Description:
In MySQL 9.6.0, 2 new reserved keywords were added and one of them is set to 0 in information_schema.keywords

SETS
VALIDATE

Reserved is set to 0 for SETS instead of 1.

How to repeat:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 9.6.0

Copyright (c) 2000, 2026, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SELECT * FROM information_schema.keywords where word IN ('SETS');
+------+----------+
| WORD | RESERVED |
+------+----------+
| SETS |        0 |
+------+----------+
1 row in set (0.003 sec)

Test
----------
mysql> create table sets (col1 int);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sets (col1 int)' at line 1

Suggested fix:
Fix
-------------------
Set reserved = 1 in the Information_schema.keywords
[11 Feb 19:29] Sabalesh Mahajan
Small correction, 1 Reserve instead of 2 reserve.
1 Reserve and 1 Keyword is added.
[17 Feb 7:49] Roy Lyseng
Thank you for the bug report.
According to the SQL standard, SETS should be a non-reserved word.
[23 Apr 10:34] Edward Gilmore
Posted by developer:
 
Added the following note to the MySQL Server 9.7.0 release notes:
		
The SETS keyword was not included in the parser's identifier keyword lists, 
preventing its use as an unquoted identifier.
[23 Apr 20:06] Evan Elias
There are at least six other mistakes in information_schema.keywords.reserved in recent MySQL releases; see https://bugs.mysql.com/bug.php?id=114874 from a year ago.

As of 9.7.0 these keywords are still treated as reserved by the server's grammar, but they are incorrectly listed as non-reserved in information_schema.keywords:

CUBE (8.0+)
MANUAL (8.4+)
PARALLEL (8.4+)
QUALIFY (8.4+)
TABLESAMPLE (8.4+)
EXTERNAL (9.4+)