Skip to content

Commit b6ec76e

Browse files
committed
Refactor as suggested by @Noremos
1 parent bcf1e7a commit b6ec76e

2 files changed

Lines changed: 24 additions & 42 deletions

File tree

src/isql/FrontendParser.cpp

Lines changed: 23 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -501,11 +501,11 @@ FrontendParser::AnyShowNode FrontendParser::parseShow()
501501
{
502502
const auto& text = showCommandToken.processedText;
503503

504-
if (const auto parsed = parseShowOptQualifiedName<ShowChecksNode>(text, TOKEN_CHECKS, 5))
504+
if (const auto parsed = parseShowOptQualifiedName<ShowChecksNode>(text, TOKEN_CHECKS, 5, false))
505505
return parsed.value();
506-
else if (const auto parsed = parseShowOptQualifiedName<ShowCollationsNode>(text, TOKEN_COLLATES, 7))
506+
else if (const auto parsed = parseShowOptQualifiedName<ShowCollationsNode>(text, TOKEN_COLLATES, 7, false))
507507
return parsed.value();
508-
else if (const auto parsed = parseShowOptQualifiedName<ShowCollationsNode>(text, TOKEN_COLLATIONS, 9))
508+
else if (const auto parsed = parseShowOptQualifiedName<ShowCollationsNode>(text, TOKEN_COLLATIONS, 9, false))
509509
return parsed.value();
510510
else if (text.length() >= 7 && TOKEN_COMMENTS.find(text) == 0)
511511
{
@@ -517,44 +517,32 @@ FrontendParser::AnyShowNode FrontendParser::parseShow()
517517
if (parseEof())
518518
return ShowDatabaseNode();
519519
}
520-
else if (const auto parsed = parseShowOptQualifiedName<ShowDependenciesNode>(text, TOKEN_DEPENDENCIES, 5))
520+
else if (const auto parsed = parseShowOptQualifiedName<ShowDependenciesNode>(text, TOKEN_DEPENDENCIES, 5, false))
521521
return parsed.value();
522-
else if (const auto parsed = parseShowOptQualifiedName<ShowDependenciesNode>(text, TOKEN_DEPENDENCY, 5))
522+
else if (const auto parsed = parseShowOptQualifiedName<ShowDependenciesNode>(text, TOKEN_DEPENDENCY, 5, false))
523523
return parsed.value();
524-
else if (const auto parsed = parseShowOptQualifiedName<ShowDomainsNode>(text, TOKEN_DOMAINS, 6))
524+
else if (const auto parsed = parseShowOptQualifiedName<ShowDomainsNode>(text, TOKEN_DOMAINS, 6, false))
525525
return parsed.value();
526-
else if (const auto parsed = parseShowOptQualifiedName<ShowExceptionsNode>(text, TOKEN_EXCEPTIONS, 5))
526+
else if (const auto parsed = parseShowOptQualifiedName<ShowExceptionsNode>(text, TOKEN_EXCEPTIONS, 5, false))
527527
return parsed.value();
528528
else if (const auto parsed = parseShowOptName<ShowFiltersNode>(text, TOKEN_FILTERS, 6))
529529
return parsed.value();
530-
else if (text.length() >= 4 && TOKEN_FUNCTIONS.find(text) == 0)
531-
{
532-
ShowFunctionsNode node;
533-
node.name = parseQualifiedName(true);
534-
535-
if (parseEof())
536-
return node;
537-
}
538-
else if (const auto parsed = parseShowOptQualifiedName<ShowIndexesNode>(text, TOKEN_INDEXES, 3))
530+
else if (const auto parsed = parseShowOptQualifiedName<ShowFunctionsNode>(text, TOKEN_FUNCTIONS, 4, true))
539531
return parsed.value();
540-
else if (const auto parsed = parseShowOptQualifiedName<ShowIndexesNode>(text, TOKEN_INDICES, 0))
532+
else if (const auto parsed = parseShowOptQualifiedName<ShowIndexesNode>(text, TOKEN_INDEXES, 3, false))
541533
return parsed.value();
542-
else if (const auto parsed = parseShowOptQualifiedName<ShowGeneratorsNode>(text, TOKEN_GENERATORS, 3))
534+
else if (const auto parsed = parseShowOptQualifiedName<ShowIndexesNode>(text, TOKEN_INDICES, 0, false))
543535
return parsed.value();
544-
else if (const auto parsed = parseShowOptQualifiedName<ShowGrantsNode>(text, TOKEN_GRANTS, 5))
536+
else if (const auto parsed = parseShowOptQualifiedName<ShowGeneratorsNode>(text, TOKEN_GENERATORS, 3, false))
537+
return parsed.value();
538+
else if (const auto parsed = parseShowOptQualifiedName<ShowGrantsNode>(text, TOKEN_GRANTS, 5, false))
545539
return parsed.value();
546540
else if (const auto parsed = parseShowOptName<ShowMappingsNode>(text, TOKEN_MAPPINGS, 3))
547541
return parsed.value();
548-
else if (const auto parsed = parseShowOptQualifiedName<ShowPackagesNode>(text, TOKEN_PACKAGES, 4))
542+
else if (const auto parsed = parseShowOptQualifiedName<ShowPackagesNode>(text, TOKEN_PACKAGES, 4, false))
543+
return parsed.value();
544+
else if (const auto parsed = parseShowOptQualifiedName<ShowProceduresNode>(text, TOKEN_PROCEDURES, 4, true))
549545
return parsed.value();
550-
else if (text.length() >= 4 && TOKEN_PROCEDURES.find(text) == 0)
551-
{
552-
ShowProceduresNode node;
553-
node.name = parseQualifiedName(true);
554-
555-
if (parseEof())
556-
return node;
557-
}
558546
else if (const auto parsed = parseShowOptName<ShowPublicationsNode>(text, TOKEN_PUBLICATIONS, 3))
559547
return parsed.value();
560548
else if (const auto parsed = parseShowOptName<ShowRolesNode>(text, TOKEN_ROLES, 4))
@@ -586,7 +574,7 @@ FrontendParser::AnyShowNode FrontendParser::parseShow()
586574
if (parseEof())
587575
return node;
588576
}
589-
else if (const auto parsed = parseShowOptQualifiedName<ShowGeneratorsNode>(text, TOKEN_SEQUENCES, 3))
577+
else if (const auto parsed = parseShowOptQualifiedName<ShowGeneratorsNode>(text, TOKEN_SEQUENCES, 3, false))
590578
return parsed.value();
591579
else if (text == TOKEN_SQL)
592580
{
@@ -633,15 +621,9 @@ FrontendParser::AnyShowNode FrontendParser::parseShow()
633621

634622
return node;
635623
}
636-
else if (text.length() >= 5 && TOKEN_TABLES.find(text) == 0)
637-
{
638-
ShowTablesNode node;
639-
node.name = parseQualifiedName(true);
640-
641-
if (parseEof())
642-
return node;
643-
}
644-
else if (const auto parsed = parseShowOptQualifiedName<ShowTriggersNode>(text, TOKEN_TRIGGERS, 4))
624+
else if (const auto parsed = parseShowOptQualifiedName<ShowTablesNode>(text, TOKEN_TABLES, 5, true))
625+
return parsed.value();
626+
else if (const auto parsed = parseShowOptQualifiedName<ShowTriggersNode>(text, TOKEN_TRIGGERS, 4, false))
645627
return parsed.value();
646628
else if (text == TOKEN_USERS)
647629
{
@@ -653,7 +635,7 @@ FrontendParser::AnyShowNode FrontendParser::parseShow()
653635
if (parseEof())
654636
return ShowVersionNode();
655637
}
656-
else if (const auto parsed = parseShowOptQualifiedName<ShowViewsNode>(text, TOKEN_VIEWS, 4))
638+
else if (const auto parsed = parseShowOptQualifiedName<ShowViewsNode>(text, TOKEN_VIEWS, 4, false))
657639
return parsed.value();
658640
else if (text.length() >= 9 && TOKEN_WIRE_STATISTICS.find(text) == 0 ||
659641
text == TOKEN_WIRE_STATS)
@@ -694,14 +676,14 @@ std::optional<FrontendParser::AnyShowNode> FrontendParser::parseShowOptName(std:
694676

695677
template <typename Node>
696678
std::optional<FrontendParser::AnyShowNode> FrontendParser::parseShowOptQualifiedName(std::string_view showCommand,
697-
std::string_view testCommand, unsigned testCommandMinLen)
679+
std::string_view testCommand, unsigned testCommandMinLen, bool allowPackage)
698680
{
699681
if (showCommand == testCommand ||
700682
(testCommandMinLen && showCommand.length() >= testCommandMinLen &&
701683
std::string(testCommand).find(showCommand) == 0))
702684
{
703685
Node node;
704-
node.name = parseQualifiedName();
686+
node.name = parseQualifiedName(allowPackage);
705687

706688
if (!parseEof())
707689
return InvalidNode();

src/isql/FrontendParser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ class FrontendParser
254254

255255
template <typename Node>
256256
std::optional<AnyShowNode> parseShowOptQualifiedName(std::string_view showCommand,
257-
std::string_view testCommand, unsigned testCommandMinLen = 0);
257+
std::string_view testCommand, unsigned testCommandMinLen, bool allowPackage);
258258

259259
bool parseEof()
260260
{

0 commit comments

Comments
 (0)