| GenerationContext @visibility root | SqlFaker\MySql\Generation | Binds the MySql grammar and lexical declarations to the common SQL generation engine. |
| GenerationPlans @visibility root | SqlFaker\MySql\Generation | Names the generation plans this dialect's provider is built from. |
| LexicalGrammar @visibility root | SqlFaker\MySql\Generation | MySQL lexical generation using source-based candidate and boundary definitions.
Tokenization is exposed separately for diagnostics and does not decide generation success. |
| StartRuleResolver @visibility root | SqlFaker\MySql\Generation | Resolves MySQL rule names across grammar releases. |
| BoundedIntegerLexemeGenerator | SqlFaker\MySql\Generation\Lexeme | Restricts MySQL decimal and hexadecimal forms to a source-defined nonnegative 31-bit interval. |
| CharsetLexemeGenerator | SqlFaker\MySql\Generation\Lexeme | sql_yacc.yy literal actions require introduced bytes to be well formed in the selected character set. |
| CharsetValueLexemeGenerator | SqlFaker\MySql\Generation\Lexeme | sql_yacc.yy literal actions impose charset validity on introduced string, hex and bit values. |
| DefinitionFactory | SqlFaker\MySql\Generation\Lexeme | Declares scanner values, fixed spellings, contextual domains and spacing for each exact release.
Source tags match every MySQL release in resources/version.php; lex.h links accompany the keyword declarations.
Create_field::init is in field.cc for MySQL 5.6/5.7 and create_field.cc for MySQL 8.x/9.x. |
| FactorLexemeGenerator | SqlFaker\MySql\Generation\Lexeme | sql_yacc.yy/factor accepts exactly 2 or 3; paired ALTER USER factors differ and ADD factors ascend. |
| KeywordLexemeGenerator | SqlFaker\MySql\Generation\Lexeme | Implements lex.h registration classes and sql_lex.cc find_keyword/function lookahead.
A SYM_FN spelling needs an opening parenthesis when used as a function. |
| LexicalDefinition | SqlFaker\MySql\Generation\Lexeme | Carries one lexical composition and its tokenizer and token-budget metadata. |
| PrecisionLexemeGenerator | SqlFaker\MySql\Generation\Lexeme | Create_field::init requires M >= D; my_decimal_trim gives (0,0) its default precision. |
| ReplicationTablePatternLexemeGenerator | SqlFaker\MySql\Generation\Lexeme | sql_yacc.yy:filter_wild_db_table_string requires a dot and forbids line feeds after get_text decoding. |
| SizeNumberLexemeGenerator | SqlFaker\MySql\Generation\Lexeme | Supplies identifier-form sizes accepted by sql_yacc.yy:size_number, with a 31-bit magnitude prefix. |
| AlterDatabaseRule | SqlFaker\MySql\Generation\Rewrite | sql/sql_yacc.yy ident_or_empty and alter_database_options compete for an initial option keyword that is also allowed as an identifier. |
| AlterEventRule | SqlFaker\MySql\Generation\Rewrite | sql_yacc.yy/alter_event_stmt requires at least one event alteration after its name. |
| ConstraintEnforcementRule | SqlFaker\MySql\Generation\Rewrite | sql/sql_yacc.yy column_attribute_list allows enforcement only immediately after a CHECK attribute. |
| FlushExportRule | SqlFaker\MySql\Generation\Rewrite | sql_yacc.yy/opt_flush_lock requires a table list for FOR EXPORT, but not for WITH READ LOCK. |
| GeneratedColumnRule | SqlFaker\MySql\Generation\Rewrite | parse_tree_column_attrs.h rejects SERIAL and storage/default attributes on generated fields. |
| InstanceActionRule | SqlFaker\MySql\Generation\Rewrite | Implements the contextual identifier checks in sql_yacc.yy/alter_instance_action and opt_source_count. |
| IntegerContextRule | SqlFaker\MySql\Generation\Rewrite | Completes source-defined integer contexts in sql_yacc.yy, including diagnostic decimal alternatives. |
| IntoClauseRule | SqlFaker\MySql\Generation\Rewrite | PT_subquery rejects INTO in subqueries; sql_lex.cc/new_set_operation_query allows it only in the final SELECT.
sql_yacc.yy/view_query_block disables SELECT destinations throughout a view definition. |
| LoadSourceCountRule | SqlFaker\MySql\Generation\Rewrite | sql_yacc.yy/opt_source_count requires the identifier COUNT and a nonzero NUM value. |
| RequiredAliasRule | SqlFaker\MySql\Generation\Rewrite | sql_yacc.yy marks derived-table and JSON_TABLE aliases optional solely to provide a targeted diagnostic. |
| RewriteDefinitions | SqlFaker\MySql\Generation\Rewrite | Declares structural repairs of MySQL parser diagnostic alternatives and ambiguity. |
| RoleGrantRule | SqlFaker\MySql\Generation\Rewrite | sql_yacc.yy/grant and revoke share privilege syntax, but PT_grant_roles requires role identifiers without ON. |
| SetNamesRule | SqlFaker\MySql\Generation\Rewrite | sql/sql_yacc.yy option_value_no_option_type declares NAMES equal expr solely to reject it. |
| SubqueryContextRule | SqlFaker\MySql\Generation\Rewrite | PT_subquery and partition contextualization forbid subqueries in these statement expressions. |
| TransactionCompletionRule | SqlFaker\MySql\Generation\Rewrite | sql_yacc.yy commit/rollback reject simultaneous affirmative CHAIN and RELEASE. |
| OrderByRule | SqlFaker\MySql\Generation\Rewrite\Alter | sql_yacc.yy alter_order_list shifts comma plus identifier before reducing alter_list.
Keeping ORDER BY last prevents a following nonreserved action from becoming an order item. |
| AutoIncrementRule | SqlFaker\MySql\Generation\Rewrite\Column | create_field.cc/Create_field::init permits AUTO_INCREMENT only for integer storage types. |
| FieldLengthRule | SqlFaker\MySql\Generation\Rewrite\Column | create_field.cc/Create_field::init checks display widths after the scanner accepts field_length. |
| ConcatenationRule | SqlFaker\MySql\Generation\Rewrite\Expression | Default SQL mode scans || as OR2_SYM; the OR_OR_SYM production constructs Item_func_concat.
Preserve its operands and precedence by expressing that production as a native function call. |
| ExpressionGroupingRule | SqlFaker\MySql\Generation\Rewrite\Expression | Preserves derived operand grouping where the source grammar permits parenthesized expressions.
This also prevents non-associative operators from being serialized as forbidden flat chains. |
| QuantifiedComparisonRule | SqlFaker\MySql\Generation\Rewrite\Expression | sql_yacc.yy:bool_pri explicitly rejects null-safe equality before ALL or ANY. |
| TableValueConstructorRule | SqlFaker\MySql\Generation\Rewrite\Expression | sql_resolver.cc disallows empty rows and DEFAULT outside an INSERT table value constructor. |
| HostNameRule | SqlFaker\MySql\Generation\Rewrite\Name | sql_lex.cc enters MY_LEX_HOSTNAME only after a single at sign, including account and user-variable names. |
| SystemVariableRule | SqlFaker\MySql\Generation\Rewrite\Name | sql_lex.cc/MY_LEX_SYSTEM_VAR accepts an identifier or backtick immediately after the second at-sign. |
| UniqueOptionRule | SqlFaker\MySql\Generation\Rewrite\Option | Applies a source-defined uniqueness condition within one grammar scope. |
| DefinitionRule | SqlFaker\MySql\Generation\Rewrite\Partition | PT_part_definition requires one partition kind for the list; PT_partition checks its declared count. |
| FieldListRule | SqlFaker\MySql\Generation\Rewrite\Partition | sql_const.h:MAX_REF_PARTS limits partition and subpartition field lists to sixteen names. |
| ListValueRule | SqlFaker\MySql\Generation\Rewrite\Partition | parse_tree_partitions.cc/PT_part_value_item_max forbids MAXVALUE in a VALUES IN list. |
| ValueArityRule | SqlFaker\MySql\Generation\Rewrite\Partition | parse_tree_partitions.cc requires a common value width, and two or more fields for LIST rows.
Runs after kind selection, expression grouping and scalar-list disambiguation. |
| ValueShape | SqlFaker\MySql\Generation\Rewrite\Partition | Models the scalar and row value lists of sql_yacc.yy:part_values_in and part_func_max. |
| JoinGroupingRule | SqlFaker\MySql\Generation\Rewrite\Query | sql_yacc.yy:joined_table defers conditionless joins; joined_table_parens preserves each derived join operand. |
| QueryContextRule | SqlFaker\MySql\Generation\Rewrite\Query | sql_lex.cc restricts query options; sql_yacc.yy provides AS to disambiguate CREATE query sources. |
| WindowFrameRule | SqlFaker\MySql\Generation\Rewrite\Query | Preserves the frame boundary ordering and interval units required by window.cc. |
| StartRule | SqlFaker\MySql\Generation\Rewrite\Replication | sql_yacc.yy requires the IO thread when START REPLICA/SLAVE supplies authentication options. |
| TablePatternRule | SqlFaker\MySql\Generation\Rewrite\Replication | Maps replication table filters to the string domain checked by sql_yacc.yy. |
| LanguageRule | SqlFaker\MySql\Generation\Rewrite\Routine | sql_yacc.yy/stored_routine_body requires a non-SQL language for AS strings and SQL for statement bodies. |
| ReturnRule | SqlFaker\MySql\Generation\Rewrite\Routine | sql_yacc.yy/sp_proc_stmt_return permits RETURN only in stored functions. |
| CloneAddressSpacingRule | SqlFaker\MySql\Generation\Spacing | sql/sql_yacc.yy clone_stmt checks the raw token positions on both sides of the port colon. |
| FunctionSpacingRule | SqlFaker\MySql\Generation\Spacing | sql/sql_lex.cc MY_LEX_IDENT: SYM_FN lookup requires a directly following parenthesis. |
| KeywordPhraseSpacingRule | SqlFaker\MySql\Generation\Spacing | Preserves word boundaries inside explicitly declared compound keyword candidates. |
| QualifiedNameSpacingRule | SqlFaker\MySql\Generation\Spacing | sql/sql_lex.cc MY_LEX_IDENT_SEP / MY_LEX_IDENT_START: preserves qualified-name adjacency. |
| VariableSpacingRule | SqlFaker\MySql\Generation\Spacing | sql/sql_lex.cc MY_LEX_USER_END, MY_LEX_HOSTNAME and MY_LEX_SYSTEM_VAR consume adjacent input. |
| KeywordIndex @visibility root | SqlFaker\MySql\Generation\Tokenization | Turns a terminal's spellings into a lookup from spelling to terminal. |
| MySqlQuoting @visibility root | SqlFaker\MySql\Generation\Tokenization | Encodes chosen text using MySQL quoting rules, independently of generation. |
| MySqlTokenizer @visibility root | SqlFaker\MySql\Generation\Tokenization | Reads MySQL text back into the parser tokens the server would produce. |
| DollarQuotedDomain | SqlFaker\MySql\Generation\Value | Reuses one chosen tag at both boundaries; the declared body alphabet excludes dollars. |
| IdentifierDomain | SqlFaker\MySql\Generation\Value | Scanner start/continuation alphabets with a safe sampling prefix for generated names. |
| LiteralGenerator @visibility root | SqlFaker\MySql\Generation\Value | Generates MySql literal bodies for the bounded lexical API. |
| QuotedDomain | SqlFaker\MySql\Generation\Value | One quoted scanner state: delimiter, optional prefix, doubling and optional backslash escapes. |
| RadixDomain | SqlFaker\MySql\Generation\Value | Prefixed and quoted radix literals. Whole-byte sampling is a charset constraint;
the same lexical declaration reads ordinary and explicitly requested bytes. |