Skip to content

Commit 05614fe

Browse files
Marek Młynarskirennox
authored andcommitted
BUG#35335813 checkForServerUpgrade doesn't catch "intersect" as reserved word
This commit modifies the check for reserved keywords to include 'intersect' - it became an reserved keyword by 8.0.31. Modified the unit test to include a test for it. Change-Id: I8c49143b2d81b7fad2f4f523cec13753fbc932df
1 parent c8fa7dc commit 05614fe

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

modules/util/upgrade_check.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ Sql_upgrade_check::get_reserved_keywords_check(const Upgrade_info &info) {
335335
"'RECURSIVE', 'ROW', 'ROWS', 'ROW_NUMBER', 'SYSTEM', 'WINDOW'");
336336
add_keywords("8.0.14", "'LATERAL'");
337337
add_keywords("8.0.17", "'ARRAY' ,'MEMBER'");
338-
add_keywords("8.0.31", "'FULL'");
338+
add_keywords("8.0.31", "'FULL', 'INTERSECT'");
339339

340340
keywords = "(" + keywords + ");";
341341
return std::make_unique<Sql_upgrade_check>(

mysqlshdk/libs/utils/utils_sqlstring.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
namespace {
3838

3939
// updated as of 8.0, 2022-02-11, this array MUST be sorted
40-
constexpr std::array<std::string_view, 269> reserved_keywords = {
40+
constexpr std::array<std::string_view, 271> reserved_keywords = {
4141
"ACCESSIBLE",
4242
"ADD",
4343
"ADMIN", // became nonreserved in 8.0.12
@@ -120,6 +120,7 @@ constexpr std::array<std::string_view, 269> reserved_keywords = {
120120
"FORCE",
121121
"FOREIGN",
122122
"FROM",
123+
"FULL",
123124
"FULLTEXT",
124125
"FUNCTION", // became reserved in 8.0.1
125126
"GENERATED",
@@ -151,6 +152,7 @@ constexpr std::array<std::string_view, 269> reserved_keywords = {
151152
"INT8",
152153
"INTEGER",
153154
"INTERVAL",
155+
"INTERSECT",
154156
"INTO",
155157
"IO_AFTER_GTIDS",
156158
"IO_BEFORE_GTIDS",

unittest/modules/upgrade_check_t.cc

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,11 +206,14 @@ TEST_F(MySQL_upgrade_check_test, reserved_keywords) {
206206
ASSERT_NO_THROW(
207207
session->execute("CREATE FUNCTION full (s CHAR(20)) RETURNS CHAR(50) "
208208
"DETERMINISTIC RETURN CONCAT('Hello, ',s,'!');"));
209+
ASSERT_NO_THROW(session->execute(
210+
"CREATE FUNCTION inteRsect (s CHAR(20)) RETURNS CHAR(50) "
211+
"DETERMINISTIC RETURN CONCAT('Hello, ',s,'!');"));
209212
ASSERT_NO_THROW(session->execute(
210213
"CREATE EVENT LEAD ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 "
211214
"HOUR DO UPDATE System SET JSON_TABLE = JSON_TABLE + 1;"));
212215

213-
EXPECT_ISSUES(check.get(), 13);
216+
EXPECT_ISSUES(check.get(), 14);
214217
EXPECT_ISSUE(issues[0], "grouping");
215218
EXPECT_ISSUE(issues[1], "grouping", "System");
216219
EXPECT_ISSUE(issues[2], "grouping", "NTile", "JSON_TABLE");
@@ -222,8 +225,9 @@ TEST_F(MySQL_upgrade_check_test, reserved_keywords) {
222225
EXPECT_ISSUE(issues[8], "grouping", "NTile");
223226
EXPECT_ISSUE(issues[9], "grouping", "Array");
224227
EXPECT_ISSUE(issues[10], "grouping", "full");
225-
EXPECT_ISSUE(issues[11], "grouping", "rows");
226-
EXPECT_ISSUE(issues[12], "grouping", "LEAD");
228+
EXPECT_ISSUE(issues[11], "grouping", "inteRsect");
229+
EXPECT_ISSUE(issues[12], "grouping", "rows");
230+
EXPECT_ISSUE(issues[13], "grouping", "LEAD");
227231

228232
check = Sql_upgrade_check::get_reserved_keywords_check(
229233
upgrade_info(Version(5, 7, 0), Version(8, 0, 30)));

0 commit comments

Comments
 (0)