Skip to content

Commit e3d6459

Browse files
committed
Prioritize the signature using timestamp for unix_timestamp function
Signed-off-by: Yuanchun Shen <yuanchu@amazon.com>
1 parent cf24dab commit e3d6459

4 files changed

Lines changed: 34 additions & 1 deletion

File tree

core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunctions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -981,8 +981,8 @@ private FunctionResolver unix_timestamp() {
981981
functionProperties ->
982982
DateTimeFunctions.unixTimeStamp(functionProperties.getQueryStartClock()),
983983
LONG),
984-
impl(nullMissingHandling(DateTimeFunctions::unixTimeStampOf), DOUBLE, DATE),
985984
impl(nullMissingHandling(DateTimeFunctions::unixTimeStampOf), DOUBLE, TIMESTAMP),
985+
impl(nullMissingHandling(DateTimeFunctions::unixTimeStampOf), DOUBLE, DATE),
986986
impl(nullMissingHandling(DateTimeFunctions::unixTimeStampOf), DOUBLE, DOUBLE));
987987
}
988988

core/src/main/java/org/opensearch/sql/expression/function/PPLFuncImpTable.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public class PPLFuncImpTable {
3333
public interface FunctionImp {
3434
RelDataType ANY_TYPE = TYPE_FACTORY.createSqlType(SqlTypeName.ANY);
3535

36+
// TODO: Support argument coercion and casting
3637
RexNode resolve(RexBuilder builder, RexNode... args);
3738

3839
/**

integ-test/src/test/java/org/opensearch/sql/calcite/remote/CalciteDateTimeFunctionIT.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package org.opensearch.sql.calcite.remote;
77

8+
import java.io.IOException;
9+
import org.junit.Ignore;
810
import org.opensearch.sql.ppl.DateTimeFunctionIT;
911

1012
public class CalciteDateTimeFunctionIT extends DateTimeFunctionIT {
@@ -14,4 +16,9 @@ public void init() throws Exception {
1416
enableCalcite();
1517
disallowCalciteFallback();
1618
}
19+
20+
// TODO: Remove this when supporting type coercion and casting with Calcite
21+
@Ignore
22+
@Override
23+
public void testUnixTimestampWithTimestampString() throws IOException {}
1724
}

integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeFunctionIT.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.json.JSONObject;
2222
import org.junit.After;
2323
import org.junit.Before;
24+
import org.junit.Ignore;
2425
import org.junit.jupiter.api.Test;
2526
import org.opensearch.sql.common.utils.StringUtils;
2627

@@ -1354,6 +1355,30 @@ public void testUnixTimeStamp() throws IOException {
13541355
verifySome(result.getJSONArray("datarows"), rows(613094400d, 1072872000d, 3404817525d));
13551356
}
13561357

1358+
@Test
1359+
public void testUnixTimestampWithTimestampString() throws IOException {
1360+
var result =
1361+
executeQuery(
1362+
String.format(
1363+
"source=%s | eval f = UNIX_TIMESTAMP('1984-06-06 12:00:00.123456') | fields f",
1364+
TEST_INDEX_DATE));
1365+
verifySchema(result, schema("f", null, "double"));
1366+
verifySome(result.getJSONArray("datarows"), rows(4.55371200123456E8));
1367+
}
1368+
1369+
// TODO: Enable after fixing #3728
1370+
@Ignore
1371+
@Test
1372+
public void testUnixTimestampWithDateString() throws IOException {
1373+
var result =
1374+
executeQuery(
1375+
String.format(
1376+
"source=%s | eval f = UNIX_TIMESTAMP('1984-06-06 12:00:00.123456') | fields f",
1377+
TEST_INDEX_DATE));
1378+
verifySchema(result, schema("f", null, "double"));
1379+
verifySome(result.getJSONArray("datarows"), rows(4.55371200123456E8));
1380+
}
1381+
13571382
@Test
13581383
public void testPeriodAdd() throws IOException {
13591384
var result =

0 commit comments

Comments
 (0)