public class SplitUpdateSemanticAnalyzer extends RewriteSemanticAnalyzer
SemanticAnalyzer that just handles
update statements. It works by rewriting the updates into multi-insert
statements (since they are actually inserts).
One insert branch for inserting the new values of the updated records.
And another insert branch for inserting delete delta records of the updated records.
From
UPDATE acidtlb SET b=350
WHERE a = 30
To
FROM
(SELECT ROW__ID,`a` AS `a`,350 AS `b` FROM `default`.`acidtlb` WHERE a = 30) s
INSERT INTO `default`.`acidtlb` -- insert delta
SELECT s.`a`,s.`b`
INSERT INTO `default`.`acidtlb` -- delete delta
SELECT s.ROW__ID
SORT BY s.ROW__IDRewriteSemanticAnalyzer.ColumnAppender, RewriteSemanticAnalyzer.NativeAcidColumnAppender, RewriteSemanticAnalyzer.NonNativeAcidColumnAppender, RewriteSemanticAnalyzer.ReparseResultCalcitePlanner.ASTSearcher, CalcitePlanner.CalcitePlannerAction, CalcitePlanner.InputContext, CalcitePlanner.PreCboCtxSemanticAnalyzer.GenericUDAFInfo, SemanticAnalyzer.MaterializationRebuildModeBaseSemanticAnalyzer.AnalyzeRewriteContext, BaseSemanticAnalyzer.TableSpecDELETE_PREFIX, INDENT, LOG, SUB_QUERY_ALIAS, useSuperaliasToCTEs, analyzeRewrite, ast, autogenColAliasPrfxLbl, createVwDesc, defaultJoinMerge, disableJoinMerge, DUMMY_DATABASE, DUMMY_TABLE, forViewCreation, mvRebuildDbName, mvRebuildMode, mvRebuildName, opParseCtx, originalResultSchema, prunedPartitions, resultSchema, SUBQUERY_TAG_1, SUBQUERY_TAG_2, topOps, topOpsCopy, unparseTranslator, VALUES_TMP_TABLE_NAME_PREFIX, viewSelectacidFileSinks, cacheUsage, cContext, columnAccessInfo, conf, console, ctx, db, fetchTask, idToTableNameMap, inputs, linfo, outputs, prepareQuery, queryProperties, queryState, rootTasks, STATIC_LOG, tableAccessInfo, transactionalInQuery, txnManager, updateColumnAccessInfo| Modifier and Type | Method and Description |
|---|---|
protected boolean |
allowOutputMultipleTimes() |
protected void |
analyze(ASTNode tree,
Table table,
ASTNode tabNameNode) |
protected boolean |
enableColumnStatsCollecting() |
protected ASTNode |
getTargetTableNode(ASTNode tree) |
addColsToSelect, addColsToSelect, addColsToSelect, addPartitionColsAsValues, analyzeInternal, analyzeRewrittenTree, appendInsertBranch, appendSortBy, appendTarget, checkValidSetClauseTarget, collectSetColumnsAndExpressions, createRewrittenQueryStrBuilder, findLHSofAssignment, getColumnAppender, getMatchedText, getSimpleTableName, getTable, isAliased, markReadEntityForUpdate, parseRewrittenQuery, patchProjectionForUpdate, setUpAccessControlInfoForUpdate, updateOutputs, validateTargetTablecreatePlanner, createPlannerAction, fixUpAfterCbo, genLogicalPlan, getOptimizedSql, getTableObjectByName, resetCalciteConfiguration, warmupaddPartitionColsToInsert, addPartitionColsToInsert, analyzeCreateView, compilePlan, executeUnparseTranlations, forViewCreation, generateErrorMessage, genExprNodeDesc, genFileSinkPlan, getAcidAnalyzeTable, getAliasId, getAllInputs, getAllOutputs, getAllRootTasks, getColNameToDefaultValueMap, getColumnInternalName, getDefaultConstraints, getDummyTable, getFullTableNameForSQL, getGenericUDAFEvaluator, getGenericUDAFEvaluator2, getGenericUDAFInfo, getGenericUDAFInfo2, getInvalidAutomaticRewritingMaterializationReason, getInvalidResultCacheReason, getLoadFileWork, getLoadTableWork, getOpContext, getOriginalResultSchema, getParseContext, getQB, getResultSchema, getSinkOp, getTableObjectByName, getTargetTable, getTopOps, getViewAliasToInput, groupByDescModeToUDAFMode, hasGroupBySibling, init, isConstantParameterInAggregationParameters, isInsertInto, isSelectDistinct, isValidAutomaticRewritingMaterialization, isValidQueryCaching, parseSelect, processNoScanCommand, processTableColumnNames, reset, rewriteGroupingFunctionAST, saveViewDefinition, setAST, setBit, setInvalidAutomaticRewritingMaterializationReason, setInvalidResultCacheReason, setLoadFileWork, setLoadTableWork, startAnalysis, translateFieldDesc, updating, validateaddPropertyReadEntry, analyze, analyzeStoredAdDirs, charSetString, checkColumnName, constructListBucketingCtx, createFetchTask, createHiveDB, endAnalysis, escapeSQLString, findTabRefIdxs, getAcidDdlDesc, getAcidFileSinks, getAutoCommitValue, getCacheUsage, getCboInfo, getColumnAccessInfo, getColumnNames, getColumnNamesOrder, getColumns, getColumns, getColumns, getCtx, getDatabase, getDatabase, getDataConnector, getDataConnector, getDb, getDbTableNamePair, getFetchTask, getIdToTableNameMap, getInputs, getLineageInfo, getOutputs, getPartitionSpecs, getPartSpec, getProps, getQualifiedTableName, getQualifiedTableName, getQueryProperties, getQueryState, getRootTasks, getSimpleTableNameBase, getTable, getTable, getTable, getTable, getTable, getTable, getTableAccessInfo, getTableAlias, getTxnMgr, getTypeStringFromAST, getUnescapedName, getUnescapedName, getUnescapedUnqualifiedTableName, getUpdateColumnAccessInfo, getValidatedPartSpec, hasTransactionalInQuery, initCtx, isPrepareQuery, isValidPrefixSpec, raiseWrongType, readProps, setAutoCommitValue, setCacheUsage, setColumnAccessInfo, setFetchTask, setLineageInfo, setTableAccessInfo, setUpdateColumnAccessInfo, skipAuthorization, stripQuotes, toReadEntity, toReadEntity, toReadEntity, toWriteEntity, toWriteEntity, toWriteEntity, tryQualifyPath, unescapeIdentifier, unescapeSQLString, validatePartColumnType, validatePartSpec, validateUnsupportedPartitionClauseprotected ASTNode getTargetTableNode(ASTNode tree)
getTargetTableNode in class RewriteSemanticAnalyzerprotected void analyze(ASTNode tree, Table table, ASTNode tabNameNode) throws SemanticException
analyze in class RewriteSemanticAnalyzerSemanticExceptionprotected boolean allowOutputMultipleTimes()
allowOutputMultipleTimes in class SemanticAnalyzerprotected boolean enableColumnStatsCollecting()
enableColumnStatsCollecting in class SemanticAnalyzerCopyright © 2022 The Apache Software Foundation. All rights reserved.