From 294f273c5407ae5462a27e43bc6ac9df0769c096 Mon Sep 17 00:00:00 2001 From: suixiaoyu Date: Mon, 29 Apr 2024 20:36:07 +0800 Subject: [PATCH 1/2] fix sort-by --- .../com/huawei/boostkit/hive/expression/TypeUtils.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/expression/TypeUtils.java b/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/expression/TypeUtils.java index 1d051df96..9af78ebf4 100644 --- a/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/expression/TypeUtils.java +++ b/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/expression/TypeUtils.java @@ -403,19 +403,27 @@ public class TypeUtils { public static boolean isValidFilterExpression(ExprNodeDesc node) { boolean hasDateColumn = false; boolean hasStringConst = false; + boolean hasDecimalColumn = false; + boolean hasIntConst = false; if (node.getChildren() != null) { List children = node.getChildren(); for (int i = 0; i < children.size(); i++) { ExprNodeDesc childNode = children.get(i); if (childNode instanceof ExprNodeColumnDesc && childNode.getTypeString().equals("date")) { hasDateColumn = true; + } else if(childNode instanceof ExprNodeColumnDesc && childNode.getTypeString().equals("decimal")) { + hasDecimalColumn = true; } else if(childNode instanceof ExprNodeConstantDesc && childNode.getTypeString().equals("string")) { hasStringConst = true; + } else if(childNode instanceof ExprNodeConstantDesc && childNode.getTypeString().equals("int")) { + hasIntConst = true; } } } if (hasDateColumn && hasStringConst) { return false; + } else if (hasDecimalColumn && (hasIntConst || hasStringConst)) { + return false; } return true; } -- Gitee From c5202461cc6c05a1774cb4b15ef42172ddfcf2df Mon Sep 17 00:00:00 2001 From: suixiaoyu Date: Mon, 29 Apr 2024 20:37:46 +0800 Subject: [PATCH 2/2] fix sort-by --- .../com/huawei/boostkit/hive/expression/TypeUtils.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/expression/TypeUtils.java b/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/expression/TypeUtils.java index 9af78ebf4..928ed1b04 100644 --- a/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/expression/TypeUtils.java +++ b/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/expression/TypeUtils.java @@ -409,13 +409,13 @@ public class TypeUtils { List children = node.getChildren(); for (int i = 0; i < children.size(); i++) { ExprNodeDesc childNode = children.get(i); - if (childNode instanceof ExprNodeColumnDesc && childNode.getTypeString().equals("date")) { + if (childNode instanceof ExprNodeColumnDesc && childNode.getTypeString().contains("date")) { hasDateColumn = true; - } else if(childNode instanceof ExprNodeColumnDesc && childNode.getTypeString().equals("decimal")) { + } else if(childNode instanceof ExprNodeColumnDesc && childNode.getTypeString().contains("decimal")) { hasDecimalColumn = true; - } else if(childNode instanceof ExprNodeConstantDesc && childNode.getTypeString().equals("string")) { + } else if(childNode instanceof ExprNodeConstantDesc && childNode.getTypeString().contains("string")) { hasStringConst = true; - } else if(childNode instanceof ExprNodeConstantDesc && childNode.getTypeString().equals("int")) { + } else if(childNode instanceof ExprNodeConstantDesc && childNode.getTypeString().contains("int")) { hasIntConst = true; } } -- Gitee