@@ -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
695677template <typename Node>
696678std::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 ();
0 commit comments