public class MaterializedViewColumnMappingExtractor extends MaterializedViewPlanValidator
MaterializedViewPlanValidator.MaterializedViewPlanValidatorContext
Constructor and Description |
---|
MaterializedViewColumnMappingExtractor(Analysis analysis,
Session session) |
Modifier and Type | Method and Description |
---|---|
List<SchemaTableName> |
getBaseTablesOnOuterJoinSide() |
Map<String,Map<SchemaTableName,String>> |
getMaterializedViewColumnMappings()
Compute the 1-to-N column mapping from a materialized view to its base tables.
|
Map<String,Map<SchemaTableName,String>> |
getMaterializedViewDirectColumnMappings()
Similar to getMaterializedViewColumnMappings, but only includes direct column mappings.
|
protected Void |
visitComparisonExpression(ComparisonExpression node,
MaterializedViewPlanValidator.MaterializedViewPlanValidatorContext context) |
protected Void |
visitSetOperation(SetOperation node,
MaterializedViewPlanValidator.MaterializedViewPlanValidatorContext context) |
protected Void |
visitTable(Table node,
MaterializedViewPlanValidator.MaterializedViewPlanValidatorContext context) |
validate, visitJoin, visitLogicalBinaryExpression, visitOrderBy, visitQuery, visitQuerySpecification, visitSubqueryExpression
visitAddColumn, visitAliasedRelation, visitAnalyze, visitArithmeticBinary, visitArithmeticUnary, visitArrayConstructor, visitAtTimeZone, visitBetweenPredicate, visitBindExpression, visitCast, visitCoalesceExpression, visitCreateMaterializedView, visitCreateTable, visitCreateTableAsSelect, visitCreateView, visitCube, visitDelete, visitDereferenceExpression, visitExists, visitExplain, visitExtract, visitFrameBound, visitFunctionCall, visitGroupBy, visitGroupingOperation, visitGroupingSets, visitIfExpression, visitInListExpression, visitInPredicate, visitInsert, visitIsNotNullPredicate, visitIsNullPredicate, visitLateral, visitLikePredicate, visitNotExpression, visitNullIfExpression, visitProperty, visitQuantifiedComparisonExpression, visitRefreshMaterializedView, visitRollup, visitRow, visitSampledRelation, visitSearchedCaseExpression, visitSelect, visitSetSession, visitSimpleCaseExpression, visitSimpleGroupBy, visitSingleColumn, visitSortItem, visitStartTransaction, visitSubscriptExpression, visitTableSubquery, visitTryExpression, visitUnnest, visitValues, visitWhenClause, visitWindow, visitWindowFrame, visitWith, visitWithQuery
process, process, visitAllColumns, visitAlterFunction, visitBinaryLiteral, visitBooleanLiteral, visitCall, visitCallArgument, visitCharLiteral, visitColumnDefinition, visitCommit, visitCreateFunction, visitCreateRole, visitCreateSchema, visitCreateType, visitCurrentTime, visitCurrentUser, visitDeallocate, visitDecimalLiteral, visitDescribeInput, visitDescribeOutput, visitDoubleLiteral, visitDropColumn, visitDropFunction, visitDropFunction, visitDropMaterializedView, visitDropRole, visitDropSchema, visitDropTable, visitDropView, visitEnumLiteral, visitExcept, visitExecute, visitExplainOption, visitExpression, visitExternalBodyReference, visitFieldReference, visitGenericLiteral, visitGrant, visitGrantRoles, visitGroupingElement, visitIdentifier, visitIntersect, visitIntervalLiteral, visitIsolationLevel, visitLambdaArgumentDeclaration, visitLambdaExpression, visitLikeClause, visitLiteral, visitLongLiteral, visitNode, visitNullLiteral, visitOffset, visitParameter, visitPrepare, visitQueryBody, visitRelation, visitRenameColumn, visitRenameSchema, visitRenameTable, visitResetSession, visitReturn, visitRevoke, visitRevokeRoles, visitRollback, visitRoutineBody, visitSelectItem, visitSetRole, visitShowCatalogs, visitShowColumns, visitShowCreate, visitShowCreateFunction, visitShowFunctions, visitShowGrants, visitShowRoleGrants, visitShowRoles, visitShowSchemas, visitShowSession, visitShowStats, visitShowTables, visitStatement, visitStringLiteral, visitSymbolReference, visitTableElement, visitTimeLiteral, visitTimestampLiteral, visitTransactionAccessMode, visitTransactionMode, visitTruncateTable, visitUnion, visitUse
public Map<String,Map<SchemaTableName,String>> getMaterializedViewColumnMappings()
From analysis
, we could derive only one base table column that one materialized view column maps to.
In case of 1 materialized view defined on N base tables via join, union, etc, this method helps compute
all the N base table columns that one materialized view column maps to.
For example, given SELECT column_a AS column_x FROM table_a JOIN table_b ON (table_a.column_a = table_b.column_b),
the 1-to-1 column mapping from analysis
is column_x -> table_a.column_a. Mapped base table columns are
[table_a.column_a, table_b.column_b]. Then it will return a 1-to-N column mapping column_x -> {table_a -> column_a, table_b -> column_b}.
public Map<String,Map<SchemaTableName,String>> getMaterializedViewDirectColumnMappings()
For example, given SELECT t1_a as t1.a, t2_a as t2.a FROM t1 LEFT JOIN t2 ON t1.a = t2.a Column mappings are: t1_a -> {t1 -> t1.a} t2_a -> {t2 -> t2.a}
public List<SchemaTableName> getBaseTablesOnOuterJoinSide()
protected Void visitSetOperation(SetOperation node, MaterializedViewPlanValidator.MaterializedViewPlanValidatorContext context)
protected Void visitTable(Table node, MaterializedViewPlanValidator.MaterializedViewPlanValidatorContext context)
visitTable
in class MaterializedViewPlanValidator
protected Void visitComparisonExpression(ComparisonExpression node, MaterializedViewPlanValidator.MaterializedViewPlanValidatorContext context)
visitComparisonExpression
in class MaterializedViewPlanValidator
Copyright © 2012–2022. All rights reserved.