Class PgAbstractExprWithNmspc<T extends org.antlr.v4.runtime.ParserRuleContext>
java.lang.Object
org.pgcodekeeper.core.database.base.parser.antlr.AbstractExpr
org.pgcodekeeper.core.database.pg.parser.expr.PgAbstractExpr
org.pgcodekeeper.core.database.pg.parser.expr.PgAbstractExprWithNmspc<T>
- Direct Known Subclasses:
PgAbstractStatements,PgDelete,PgFunctionExp,PgInsert,PgMerge,PgSelect,PgUpdate,PgValueExprWithNmspc
public abstract class PgAbstractExprWithNmspc<T extends org.antlr.v4.runtime.ParserRuleContext>
extends PgAbstractExpr
Abstract expression parser with namespace support for tracking variables, references, and CTEs.
-
Method Summary
Modifier and TypeMethodDescriptionvoidaddNamespaceVariable(Pair<String, String> variable) Adds a "freestanding" variable (e.g. a non-table function parameter) into a special complexNamespace container.voidaddRawTableReference(ObjectReference qualifiedTable) booleanaddReference(String alias, ObjectReference object) Clients may use this to set up pseudo-variable names before expression analysis.Analyzes the given rule context.voiddeclareNamespaceVar(String alias, String name, ObjectReference argType) Declares a variable in the current namespace.findReference(String schema, String name, String column) Methods inherited from class org.pgcodekeeper.core.database.pg.parser.expr.PgAbstractExpr
setFullAnalyzeMethods inherited from class org.pgcodekeeper.core.database.base.parser.antlr.AbstractExpr
addDependency, addDependency, addDependency, addReference, addVariable, getDependencies
-
Method Details
-
findReference
- Overrides:
findReferencein classAbstractExpr- Parameters:
schema- optional schema qualification of name, may be nullname- alias of the referenced objectcolumn- optional referenced column alias, may be null- Returns:
- a pair of (Alias, Dealiased name) where Alias is the given name.
Dealiased name can be null if the name is internal to the query
and is not a reference to external table.
null if the name is not found
-
declareNamespaceVar
Declares a variable in the current namespace. Variables of relation types are declared as references, rest are treated as primitives.- Parameters:
alias- var alias (required)name- var name (optional, may be null)argType- var type
-
addNamespaceVariable
Adds a "freestanding" variable (e.g. a non-table function parameter) into a special complexNamespace container. -
addReference
Clients may use this to set up pseudo-variable names before expression analysis. -
addRawTableReference
-
analyze
Analyzes the given rule context.- Parameters:
ruleCtx- the parser rule context to analyze- Returns:
- list of modifiable pairs containing analyzed results
-