| GenerationContext @visibility root | SqlFaker\PostgreSql\Generation | Binds the PostgreSql grammar and lexical declarations to the common SQL generation engine. |
| GenerationPlans @visibility root | SqlFaker\PostgreSql\Generation | Names the generation plans this dialect's provider is built from. |
| LexicalGrammar @visibility root | SqlFaker\PostgreSql\Generation | PostgreSQL lexical generation using source-based candidate and boundary definitions.
Tokenization is exposed separately for diagnostics and does not decide generation success. |
| DefinitionFactory | SqlFaker\PostgreSql\Generation\Lexeme | Declares scanner values, fixed spellings, contextual domains and spacing for PostgreSQL 17.2.
Source tag REL_17_2 matches pg-17.2 in resources/version.php. |
| HashBoundLexemeGenerator | SqlFaker\PostgreSql\Generation\Lexeme | Implements the modulus/remainder name checks in PostgreSQL 17.2 gram.y/PartitionBoundSpec. |
| KeywordLexemeGenerator | SqlFaker\PostgreSql\Generation\Lexeme | Combines kwlist.h registrations with parser.c/base_yylex's required followers for lookahead tokens. |
| LexicalDefinition | SqlFaker\PostgreSql\Generation\Lexeme | Carries one lexical composition and its tokenizer and token-budget metadata. |
| PgLookahead @visibility root | SqlFaker\PostgreSql\Generation\Lookahead | The token substitutions PostgreSQL's parser frontend makes by looking ahead. |
| ConstraintAttributesRule | SqlFaker\PostgreSql\Generation\Rewrite | gram.y/ConstraintAttributeSpec rejects three conflicting pairs of accumulated option bits. |
| CopySourceRule | SqlFaker\PostgreSql\Generation\Rewrite | Implements gram.y/CopyStmt: PROGRAM needs a filename and COPY TO cannot carry a WHERE clause. |
| FetchWithTiesRule | SqlFaker\PostgreSql\Generation\Rewrite | Completes FETCH WITH TIES ordering in gram.y/insertSelectOptions and PLpgSQL_Expr. |
| GeneratedColumnRule | SqlFaker\PostgreSql\Generation\Rewrite | gram.y ColConstraintElem requires GENERATED ALWAYS for expressions; IDENTITY also permits BY DEFAULT. |
| HashPartitionBoundRule | SqlFaker\PostgreSql\Generation\Rewrite | Supplies exactly the two named bounds required by gram.y/PartitionBoundSpec. |
| LimitOffsetRule | SqlFaker\PostgreSql\Generation\Rewrite | Replaces gram.y's always-error LIMIT value,value diagnostic alternative with LIMIT/OFFSET. |
| LookaheadRule | SqlFaker\PostgreSql\Generation\Rewrite | Settles parser.c/base_yylex aliases after the grammar's otherwise ambiguous followers have been selected. |
| OperatorArgumentsRule | SqlFaker\PostgreSql\Generation\Rewrite | REL_17_2 gram.y oper_argtypes rejects a lone type and prescribes NONE for a missing unary argument. |
| OverlapsArgumentsRule | SqlFaker\PostgreSql\Generation\Rewrite | Implements gram.y's two-argument row requirement for each side of OVERLAPS. |
| PublicationObjectRule | SqlFaker\PostgreSql\Generation\Rewrite | Resolves the table/schema continuation state checked by gram.y/preprocess_pubobj_list. |
| RewriteDefinitions | SqlFaker\PostgreSql\Generation\Rewrite | Declares PostgreSQL structural rules by their original grammar scope. |
| TimeZoneIntervalRule | SqlFaker\PostgreSql\Generation\Rewrite | Implements gram.y/zone_value's HOUR and MINUTE interval-mask restriction. |
| WindowFrameRule | SqlFaker\PostgreSql\Generation\Rewrite | Implements the frame_extent rejection conditions in PostgreSQL 17.2 gram.y. |
| ConstraintCapabilitiesRule | SqlFaker\PostgreSql\Generation\Rewrite\Column | processCASbits permits attributes according to the non-null output pointers at each call site. |
| ForeignKeyActionRule | SqlFaker\PostgreSql\Generation\Rewrite\Column | key_update rejects SET NULL/DEFAULT column lists; key_delete permits them. |
| IdentityOptionRule | SqlFaker\PostgreSql\Generation\Rewrite\Column | gram.y:alter_identity_column_option excludes AS, RESTART and OWNED BY after SET. |
| NumericContextRule | SqlFaker\PostgreSql\Generation\Rewrite\Column | gram.y bounds FLOAT precision and ALTER COLUMN's positional form before parse analysis. |
| ExpressionGroupingRule | SqlFaker\PostgreSql\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. |
| AliasRule | SqlFaker\PostgreSql\Generation\Rewrite\Name | gram.y/relation_expr_opt_alias reduces before SET unless the alias has an explicit AS. |
| AnyRelationNameRule | SqlFaker\PostgreSql\Generation\Rewrite\Name | gram.y/makeRangeVarFromAnyName limits composite type relation names to three components. |
| ColumnNameRule | SqlFaker\PostgreSql\Generation\Rewrite\Name | parse_expr.c and parse_target.c allow up to four ColumnRef fields before subscripting. |
| FunctionNameRule | SqlFaker\PostgreSql\Generation\Rewrite\Name | gram.y/check_func_name accepts String name components, excluding A_Star and A_Indices.
catalog/namespace.c DeconstructQualifiedName limits function lookup to three components. |
| IndirectionStarRule | SqlFaker\PostgreSql\Generation\Rewrite\Name | gram.y/makeColumnRef and check_indirection allow a star only at the end of its own chain. |
| ParserNameRule | SqlFaker\PostgreSql\Generation\Rewrite\Name | gram.y restricts partition strategies, JSON encodings, and literal role names beyond their grammar productions. |
| RelationNameRule | SqlFaker\PostgreSql\Generation\Rewrite\Name | gram.y/makeRangeVarFromQualifiedName accepts at most three String components, without star or subscripts. |
| UniqueOptionRule | SqlFaker\PostgreSql\Generation\Rewrite\Option | Applies a source-defined uniqueness condition within one grammar scope. |
| IntoClauseRule | SqlFaker\PostgreSql\Generation\Rewrite\Query | analyze.c:transformOptionalSelectInto accepts INTO only on a top-level query's leftmost SELECT. |
| ParserOptionsRule | SqlFaker\PostgreSql\Generation\Rewrite\Query | Removes options forbidden by the trigger/view grammar actions, scoped to their direct owner. |
| SchemaElementsRule | SqlFaker\PostgreSql\Generation\Rewrite\Query | CREATE SCHEMA with IF NOT EXISTS cannot contain schema elements. |
| SelectOptionsRule | SqlFaker\PostgreSql\Generation\Rewrite\Query | gram.y:insertSelectOptions merges parenthesized query options into the same SelectStmt. |
| AggregateArgumentRule | SqlFaker\PostgreSql\Generation\Rewrite\Routine | Aggregate arguments cannot have output modes; ordered-set direct VARIADIC types need coordinated lists. |
| JsonOptionsRule | SqlFaker\PostgreSql\Generation\Rewrite\Routine | Applies syntax-level SQL/JSON option restrictions from parse_expr.c/transformJsonFuncExpr. |
| JsonTablePathRule | SqlFaker\PostgreSql\Generation\Rewrite\Routine | json_table requires an A_Const containing a string, even though its RHS accepts a_expr. |
| RangeFunctionOrdinalityRule | SqlFaker\PostgreSql\Generation\Rewrite\Routine | parse_clause.c:transformRangeFunction disallows ordinality beside a top-level column definition list. |
| SubstringRule | SqlFaker\PostgreSql\Generation\Rewrite\Routine | gram.y:substr_list uses SIMILAR/ESCAPE as argument separators, also accepted inside a_expr. |
| TableFunctionRule | SqlFaker\PostgreSql\Generation\Rewrite\Routine | gram.y:mergeTableFuncParameters permits only default, IN or VARIADIC input modes. |
| TypeModifierRule | SqlFaker\PostgreSql\Generation\Rewrite\Routine | gram.y:AexprConst reuses function arguments for type modifiers but rejects names and ordering. |
| WithinGroupRule | SqlFaker\PostgreSql\Generation\Rewrite\Routine | gram.y:func_expr forbids inner ordering, DISTINCT and VARIADIC with WITHIN GROUP. |
| KeywordIndex @visibility root | SqlFaker\PostgreSql\Generation\Tokenization | Turns a terminal's spellings into a lookup from spelling to terminal. |
| PgQuoting @visibility root | SqlFaker\PostgreSql\Generation\Tokenization | Encodes chosen text using PostgreSQL quoting rules, independently of generation. |
| PgTokenizer @visibility root | SqlFaker\PostgreSql\Generation\Tokenization | Reads PostgreSQL text back into the parser tokens the server would produce. |
| DollarQuotedDomain | SqlFaker\PostgreSql\Generation\Value | Reuses one chosen tag at both boundaries; the declared body alphabet excludes dollars. |
| IdentifierDomain | SqlFaker\PostgreSql\Generation\Value | Scanner start/continuation alphabets with a safe sampling prefix for generated names. |
| LiteralGenerator @visibility root | SqlFaker\PostgreSql\Generation\Value | Generates PostgreSql literal bodies for the bounded lexical API. |
| OperatorDomain | SqlFaker\PostgreSql\Generation\Value | Scanner operator runs with explicit fixed-token and comment boundaries. |
| QuotedDomain | SqlFaker\PostgreSql\Generation\Value | One quoted scanner state: delimiter, optional prefix, doubling and optional backslash escapes. |