This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
commit 00adad8e2d8d3481c525e3539d67967686fe0b19 Author: Mingyu Chen <[email protected]> AuthorDate: Sat Apr 20 00:41:56 2024 +0800 [fix](variable) modify @@auto_commit column type to BIGINT in Nereids. #33887 --- .../main/java/org/apache/doris/qe/VariableMgr.java | 12 ++++++++++++ .../java/org/apache/doris/qe/VariableMgrTest.java | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java b/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java index 813301e3513..7ca1ad688c5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java @@ -601,6 +601,18 @@ public class VariableMgr { } private static Literal getLiteral(Object obj, Field field) { + VarAttr attr = field.getAnnotation(VarAttr.class); + if (!Strings.isNullOrEmpty(attr.convertBoolToLongMethod())) { + try { + Preconditions.checkArgument(obj instanceof SessionVariable); + long val = (Long) SessionVariable.class.getDeclaredMethod(attr.convertBoolToLongMethod(), Boolean.class) + .invoke(obj, field.getBoolean(obj)); + return Literal.of(Long.valueOf(val)); + } catch (Exception e) { + // should not happen + LOG.warn("failed to convert bool to long for var: {}", field.getName(), e); + } + } try { switch (field.getType().getSimpleName()) { case "boolean": diff --git a/fe/fe-core/src/test/java/org/apache/doris/qe/VariableMgrTest.java b/fe/fe-core/src/test/java/org/apache/doris/qe/VariableMgrTest.java index 43628cdd05d..b3e5f286108 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/qe/VariableMgrTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/qe/VariableMgrTest.java @@ -27,10 +27,13 @@ import org.apache.doris.analysis.StringLiteral; import org.apache.doris.analysis.VariableExpr; import org.apache.doris.catalog.Env; import org.apache.doris.catalog.Type; +import org.apache.doris.common.AnalysisException; import org.apache.doris.common.Config; import org.apache.doris.common.DdlException; import org.apache.doris.common.UserException; import org.apache.doris.common.jmockit.Deencapsulation; +import org.apache.doris.nereids.trees.expressions.literal.Literal; +import org.apache.doris.nereids.types.BigIntType; import org.apache.doris.utframe.UtFrameUtils; import org.apache.commons.io.FileUtils; @@ -273,4 +276,20 @@ public class VariableMgrTest { Assert.assertTrue(desc.getLiteralExpr() instanceof BoolLiteral); Assert.assertEquals(Type.BOOLEAN, desc.getType()); } + + // @@auto_commit's type should be BIGINT + @Test + public void testAutoCommitType() throws AnalysisException { + // Old planner + SessionVariable sv = new SessionVariable(); + VariableExpr desc = new VariableExpr(SessionVariable.AUTO_COMMIT); + VariableMgr.fillValue(sv, desc); + Assert.assertEquals(Type.BIGINT, desc.getType()); + // Nereids + sv = new SessionVariable(); + String name = SessionVariable.AUTO_COMMIT; + SetType setType = SetType.SESSION; + Literal l = VariableMgr.getLiteral(sv, name, setType); + Assert.assertEquals(BigIntType.INSTANCE, l.getDataType()); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
