From 4eb8e1a88a584da5b84176d106191065bfbcf24e Mon Sep 17 00:00:00 2001 From: GoGoWen2021 Date: Fri, 19 Jan 2024 21:26:54 +0800 Subject: [PATCH] fix iceberg table get split fail when with date type conjuct --- .../main/java/org/apache/doris/analysis/DateLiteral.java | 4 ++++ .../apache/doris/external/iceberg/util/IcebergUtils.java | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java index 29db8d13e904b9..7d924b0e68c92d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java @@ -611,6 +611,10 @@ private void fillPaddedValue(char[] buffer, int start, long value, int length) { } } + public boolean isDateType() { + return this.type.isDate() || this.type.isDateV2(); + } + @Override public String getStringValue() { char[] dateTimeChars = new char[26]; // Enough to hold "YYYY-MM-DD HH:MM:SS.mmmmmm" diff --git a/fe/fe-core/src/main/java/org/apache/doris/external/iceberg/util/IcebergUtils.java b/fe/fe-core/src/main/java/org/apache/doris/external/iceberg/util/IcebergUtils.java index 6b26616b90b19f..45deff98225a6b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/external/iceberg/util/IcebergUtils.java +++ b/fe/fe-core/src/main/java/org/apache/doris/external/iceberg/util/IcebergUtils.java @@ -369,7 +369,11 @@ private static Object extractDorisLiteral(Expr expr) { return boolLiteral.getValue(); } else if (expr instanceof DateLiteral) { DateLiteral dateLiteral = (DateLiteral) expr; - return dateLiteral.unixTimestamp(TimeUtils.getTimeZone()) * MILLIS_TO_NANO_TIME; + if (dateLiteral.isDateType()) { + return dateLiteral.getStringValue(); + } else { + return dateLiteral.unixTimestamp(TimeUtils.getTimeZone()) * MILLIS_TO_NANO_TIME; + } } else if (expr instanceof DecimalLiteral) { DecimalLiteral decimalLiteral = (DecimalLiteral) expr; return decimalLiteral.getValue();