From ad3fd477e86f71ba0cd9857544e2a2a7ec007df2 Mon Sep 17 00:00:00 2001 From: Mehant Baid Date: Tue, 1 Apr 2014 17:25:00 -0700 Subject: [PATCH] Fix https://github.com/julianhyde/optiq/pull/227, "Extend extract function to support DateTime data types". --- src/main/java/org/eigenbase/sql/fun/SqlExtractFunction.java | 2 +- src/main/java/org/eigenbase/sql/type/OperandTypes.java | 4 ++++ src/test/java/org/eigenbase/test/SqlValidatorTest.java | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/eigenbase/sql/fun/SqlExtractFunction.java b/src/main/java/org/eigenbase/sql/fun/SqlExtractFunction.java index ca48ed0b..6e7cc179 100644 --- a/src/main/java/org/eigenbase/sql/fun/SqlExtractFunction.java +++ b/src/main/java/org/eigenbase/sql/fun/SqlExtractFunction.java @@ -38,7 +38,7 @@ public SqlExtractFunction() { SqlKind.OTHER_FUNCTION, ReturnTypes.BIGINT_NULLABLE, null, - OperandTypes.INTERVAL_SAME_SAME, + OperandTypes.INTERVALINTERVAL_INTERVALDATETIME, SqlFunctionCategory.SYSTEM); } diff --git a/src/main/java/org/eigenbase/sql/type/OperandTypes.java b/src/main/java/org/eigenbase/sql/type/OperandTypes.java index 922821f7..13211750 100644 --- a/src/main/java/org/eigenbase/sql/type/OperandTypes.java +++ b/src/main/java/org/eigenbase/sql/type/OperandTypes.java @@ -310,6 +310,10 @@ public boolean checkSingleOperandType( public static final SqlSingleOperandTypeChecker INTERVAL_DATETIME = family(SqlTypeFamily.DATETIME_INTERVAL, SqlTypeFamily.DATETIME); + public static final SqlSingleOperandTypeChecker + INTERVALINTERVAL_INTERVALDATETIME = + OperandTypes.or(INTERVAL_SAME_SAME, INTERVAL_DATETIME); + // TODO: datetime+interval checking missing // TODO: interval+datetime checking missing public static final SqlSingleOperandTypeChecker PLUS_OPERATOR = diff --git a/src/test/java/org/eigenbase/test/SqlValidatorTest.java b/src/test/java/org/eigenbase/test/SqlValidatorTest.java index d082a3b2..e60f0e47 100644 --- a/src/test/java/org/eigenbase/test/SqlValidatorTest.java +++ b/src/test/java/org/eigenbase/test/SqlValidatorTest.java @@ -5800,6 +5800,7 @@ public void _testGroupExpressionEquivalenceParams() { "extract(year from interval '1-2' year to month)", "BIGINT NOT NULL"); checkExp("extract(minute from interval '1.1' second)"); + checkExp("extract(year from DATE '2008-2-2')"); checkWholeExpFails( "extract(minute from interval '11' month)",