Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -732,14 +732,13 @@ private void generatedColumnCheck(Analyzer analyzer) throws AnalysisException {
ColumnDef columnDef = columnDefs.get(i);
nameToColumnDef.put(columnDef.getName(), Pair.of(columnDef, i));
}
SlotRefRewriteRule.initializeslotRefMap(nameToColumnDef);
List<GeneratedColumnUtil.ExprAndname> exprAndnames = Lists.newArrayList();
for (int i = 0; i < columnDefs.size(); i++) {
ColumnDef columnDef = columnDefs.get(i);
if (!columnDef.getGeneratedColumnInfo().isPresent()) {
continue;
}
SlotRefRewriteRule slotRefRewriteRule = new SlotRefRewriteRule(i);
SlotRefRewriteRule slotRefRewriteRule = new SlotRefRewriteRule(i, nameToColumnDef);
ExprRewriter rewriter = new ExprRewriter(slotRefRewriteRule);
GeneratedColumnInfo generatedColumnInfo = columnDef.getGeneratedColumnInfo().get();
Expr expr = rewriter.rewrite(generatedColumnInfo.getExpr(), analyzer);
Expand Down Expand Up @@ -830,15 +829,12 @@ private boolean checkFunctionInGeneratedColumn(FunctionCallExpr funcExpr) {
}

public static final class SlotRefRewriteRule implements ExprRewriteRule {
private static Map<String, Pair<ColumnDef, Integer>> nameToColumnDefMap = new HashMap<>();
private final Map<String, Pair<ColumnDef, Integer>> nameToColumnDefMap;
private final int index;

public SlotRefRewriteRule(int index) {
public SlotRefRewriteRule(int index, Map<String, Pair<ColumnDef, Integer>> nameToColumnDefMap) {
this.index = index;
}

public static void initializeslotRefMap(Map<String, Pair<ColumnDef, Integer>> map) {
nameToColumnDefMap = map;
this.nameToColumnDefMap = nameToColumnDefMap;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -874,7 +874,6 @@ private void generatedColumnCheck(ConnectContext ctx) {
slotRef.setType(column.getType().toCatalogDataType());
translateMap.put(slot, new SlotRefAndIdx(slotRef, i, column.getGeneratedColumnDesc().isPresent()));
}
ExpressionToExpr.initializeslotRefMap(translateMap);
PlanTranslatorContext planTranslatorContext = new PlanTranslatorContext(cascadesContext);
List<Slot> slots = Lists.newArrayList(columnToSlotReference.values());
List<GeneratedColumnUtil.ExprAndname> exprAndnames = Lists.newArrayList();
Expand All @@ -898,7 +897,7 @@ private void generatedColumnCheck(ConnectContext ctx) {
}
checkExpressionInGeneratedColumn(expr, column, nameToColumnDefinition);
TypeCoercionUtils.checkCanCastTo(expr.getDataType(), column.getType());
ExpressionToExpr translator = new ExpressionToExpr(i);
ExpressionToExpr translator = new ExpressionToExpr(i, translateMap);
Expr e = expr.accept(translator, planTranslatorContext);
info.get().setExpr(e);
exprAndnames.add(new GeneratedColumnUtil.ExprAndname(e.clone(), column.getName()));
Expand Down Expand Up @@ -998,15 +997,12 @@ boolean checkFunctionInGeneratedColumn(Expression expr) {
}

private static class ExpressionToExpr extends ExpressionTranslator {
private static Map<Slot, SlotRefAndIdx> slotRefMap;
private final Map<Slot, SlotRefAndIdx> slotRefMap;
private final int index;

public ExpressionToExpr(int index) {
public ExpressionToExpr(int index, Map<Slot, SlotRefAndIdx> slotRefMap) {
this.index = index;
}

public static void initializeslotRefMap(Map<Slot, SlotRefAndIdx> map) {
slotRefMap = map;
this.slotRefMap = slotRefMap;
}

@Override
Expand Down