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]