This is an automated email from the ASF dual-hosted git repository.

dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new e478570e0f4 [improvement](mv) Catch exception when init sync 
materialized view context (#37701)
e478570e0f4 is described below

commit e478570e0f4066d55ab350b949dd8e00cfe7b9ae
Author: seawinde <[email protected]>
AuthorDate: Tue Jul 16 11:12:26 2024 +0800

    [improvement](mv) Catch exception when init sync materialized view context 
(#37701)
    
    ## Proposed changes
    Init sync materialized view context happend after analyze, If fail would
    cause query or insert into fail.
    This is inacceptable, so catch the exception and recored the warn log.
---
 .../mv/InitMaterializationContextHook.java         | 65 ++++++++++++----------
 1 file changed, 35 insertions(+), 30 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/InitMaterializationContextHook.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/InitMaterializationContextHook.java
index b649d4cf276..53a352e2ef8 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/InitMaterializationContextHook.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/InitMaterializationContextHook.java
@@ -146,40 +146,45 @@ public class InitMaterializationContextHook implements 
PlannerHook {
         }
         for (Map.Entry<String, Long> entry : 
olapTable.getIndexNameToId().entrySet()) {
             long indexId = entry.getValue();
-            // when doing schema change, a shadow index would be created and 
put together with mv indexes
-            // we must roll out these unexpected shadow indexes here
-            if (indexId != baseIndexId && !olapTable.isShadowIndex(indexId)) {
-                MaterializedIndexMeta meta = 
olapTable.getIndexMetaByIndexId(entry.getValue());
-                String createMvSql;
-                if (meta.getDefineStmt() != null) {
-                    // get the original create mv sql
-                    createMvSql = meta.getDefineStmt().originStmt;
-                } else {
-                    // it's rollup, need assemble create mv sql manually
-                    if (olapTable.getKeysType() == KeysType.AGG_KEYS) {
-                        createMvSql = 
assembleCreateMvSqlForAggTable(olapTable.getQualifiedName(),
-                                entry.getKey(), meta.getSchema(false), 
keyCount);
+            try {
+                // when doing schema change, a shadow index would be created 
and put together with mv indexes
+                // we must roll out these unexpected shadow indexes here
+                if (indexId != baseIndexId && 
!olapTable.isShadowIndex(indexId)) {
+                    MaterializedIndexMeta meta = 
olapTable.getIndexMetaByIndexId(entry.getValue());
+                    String createMvSql;
+                    if (meta.getDefineStmt() != null) {
+                        // get the original create mv sql
+                        createMvSql = meta.getDefineStmt().originStmt;
                     } else {
-                        createMvSql =
-                                
assembleCreateMvSqlForDupOrUniqueTable(olapTable.getQualifiedName(),
-                                        entry.getKey(), meta.getSchema(false));
+                        // it's rollup, need assemble create mv sql manually
+                        if (olapTable.getKeysType() == KeysType.AGG_KEYS) {
+                            createMvSql = 
assembleCreateMvSqlForAggTable(olapTable.getQualifiedName(),
+                                    entry.getKey(), meta.getSchema(false), 
keyCount);
+                        } else {
+                            createMvSql =
+                                    
assembleCreateMvSqlForDupOrUniqueTable(olapTable.getQualifiedName(),
+                                            entry.getKey(), 
meta.getSchema(false));
+                        }
                     }
-                }
-                if (createMvSql != null) {
-                    Optional<String> querySql =
-                            new NereidsParser().parseForSyncMv(createMvSql);
-                    if (!querySql.isPresent()) {
-                        LOG.warn(String.format("can't parse %s ", 
createMvSql));
-                        continue;
+                    if (createMvSql != null) {
+                        Optional<String> querySql =
+                                new 
NereidsParser().parseForSyncMv(createMvSql);
+                        if (!querySql.isPresent()) {
+                            LOG.warn(String.format("can't parse %s ", 
createMvSql));
+                            continue;
+                        }
+                        MTMVCache mtmvCache = 
MaterializedViewUtils.createMTMVCache(querySql.get(),
+                                cascadesContext.getConnectContext());
+                        contexts.add(new 
SyncMaterializationContext(mtmvCache.getLogicalPlan(),
+                                mtmvCache.getOriginalPlan(), olapTable, 
meta.getIndexId(), entry.getKey(),
+                                cascadesContext, mtmvCache.getStatistics()));
+                    } else {
+                        LOG.warn(String.format("can't assemble create mv sql 
for index ", entry.getKey()));
                     }
-                    MTMVCache mtmvCache = 
MaterializedViewUtils.createMTMVCache(querySql.get(),
-                            cascadesContext.getConnectContext());
-                    contexts.add(new 
SyncMaterializationContext(mtmvCache.getLogicalPlan(),
-                            mtmvCache.getOriginalPlan(), olapTable, 
meta.getIndexId(), entry.getKey(),
-                            cascadesContext, mtmvCache.getStatistics()));
-                } else {
-                    LOG.warn(String.format("can't assemble create mv sql for 
index ", entry.getKey()));
                 }
+            } catch (Exception exception) {
+                LOG.warn(String.format("createSyncMvContexts exception, index 
id is %s, index name is %s",
+                        entry.getValue(), entry.getValue()), exception);
             }
         }
         return contexts;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to