From b0b2da77681efe601e323c831a51a12f3a1e23a8 Mon Sep 17 00:00:00 2001 From: 924060929 <924060929@qq.com> Date: Wed, 25 Sep 2024 21:34:13 +0800 Subject: [PATCH] [fix](meta) fix Unknown column 'mva_SUM__CAST` (#41283) fix insert into select statement failed when upgrade doris, introduced by #38012 ```sql ERROR 1054 (42S22): errCode = 2, detailMessage = Unknown column 'mva_SUM__CAST(`goods_number` AS BIGINT)' in 'dm_sales_settlement_day_goods' ``` --- .../doris/catalog/MaterializedIndexMeta.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java index 2f5ce914a83667..6125e0334003c5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java @@ -18,6 +18,7 @@ package org.apache.doris.catalog; import org.apache.doris.analysis.Analyzer; +import org.apache.doris.analysis.CastExpr; import org.apache.doris.analysis.CreateMaterializedViewStmt; import org.apache.doris.analysis.Expr; import org.apache.doris.analysis.SlotRef; @@ -214,6 +215,24 @@ private void setColumnsDefineExpr(Map columnNameToDefineExpr) thro } } + boolean isCastSlot = + entry.getValue() instanceof CastExpr && entry.getValue().getChild(0) instanceof SlotRef; + + // Compatibility code for older versions of mv + // old version: + // goods_number -> mva_SUM__CAST(`goods_number` AS BIGINT) + // new version: + // goods_number -> mva_SUM__CAST(`goods_number` AS bigint) + if (isCastSlot && !match) { + for (Column column : schema) { + if (column.getName().equalsIgnoreCase(entry.getKey())) { + column.setDefineExpr(entry.getValue()); + match = true; + break; + } + } + } + if (!match) { // Compatibility code for older versions of mv // store_id -> mv_store_id