diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLVariantRefExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLVariantRefExpr.java index d1c5e4d275..1e6928b022 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLVariantRefExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLVariantRefExpr.java @@ -20,7 +20,9 @@ import com.alibaba.druid.sql.ast.SQLObject; import com.alibaba.druid.sql.visitor.SQLASTVisitor; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class SQLVariantRefExpr extends SQLExprImpl { @@ -128,6 +130,21 @@ public class SQLVariantRefExpr extends SQLExprImpl { public SQLVariantRefExpr clone() { SQLVariantRefExpr var = new SQLVariantRefExpr(name, global); var.index = index; + + if (attributes != null) { + var.attributes = new HashMap(attributes.size()); + for (Map.Entry entry : attributes.entrySet()) { + String k = entry.getKey(); + Object v = entry.getValue(); + + if (v instanceof SQLObject) { + var.attributes.put(k, ((SQLObject) v).clone()); + } else { + var.attributes.put(k, v); + } + } + } + return var; }