diff --git a/plugin/trino-accumulo/pom.xml b/plugin/trino-accumulo/pom.xml
index 9e7f0718010c..bbbdbec2db47 100644
--- a/plugin/trino-accumulo/pom.xml
+++ b/plugin/trino-accumulo/pom.xml
@@ -114,11 +114,6 @@
validation-api
-
- joda-time
- joda-time
-
-
log4j
log4j
diff --git a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/io/AccumuloRecordCursor.java b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/io/AccumuloRecordCursor.java
index 5cd74a29dcfd..f66caab82a1b 100644
--- a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/io/AccumuloRecordCursor.java
+++ b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/io/AccumuloRecordCursor.java
@@ -54,7 +54,6 @@
import static io.trino.spi.type.TinyintType.TINYINT;
import static java.lang.String.format;
import static java.util.Objects.requireNonNull;
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
/**
* Implementation of Trino RecordCursor, responsible for iterating over a Trino split,
@@ -203,7 +202,7 @@ public long getLong(int field)
return serializer.getLong(fieldToColumnName[field]);
}
if (type.equals(DATE)) {
- return MILLISECONDS.toDays(serializer.getDate(fieldToColumnName[field]).getTime());
+ return serializer.getDate(fieldToColumnName[field]);
}
if (type.equals(INTEGER)) {
return serializer.getInt(fieldToColumnName[field]);
diff --git a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/model/Field.java b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/model/Field.java
index 3ae8f47c923e..c6d2f39c9fd1 100644
--- a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/model/Field.java
+++ b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/model/Field.java
@@ -24,10 +24,8 @@
import io.trino.spi.type.Type;
import io.trino.spi.type.VarcharType;
-import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
-import java.time.LocalDate;
import java.util.Arrays;
import java.util.Objects;
@@ -87,7 +85,7 @@ else if (type.equals(BOOLEAN)) {
this.value = field.getBoolean();
}
else if (type.equals(DATE)) {
- this.value = new Date(field.getDate().getTime());
+ this.value = field.getDate();
}
else if (type.equals(DOUBLE)) {
this.value = field.getDouble();
@@ -146,9 +144,9 @@ public Byte getByte()
return (Byte) value;
}
- public Date getDate()
+ public long getDate()
{
- return (Date) value;
+ return (Long) value;
}
public Double getDouble()
@@ -316,7 +314,8 @@ private static Object convert(Object value, Type type)
}
if (type.equals(DATE)) {
- return Date.valueOf(LocalDate.ofEpochDay((long) value));
+ // long
+ return value;
}
if (type.equals(DOUBLE)) {
diff --git a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/serializers/AccumuloRowSerializer.java b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/serializers/AccumuloRowSerializer.java
index 12c9be39d74c..ec170e37f00e 100644
--- a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/serializers/AccumuloRowSerializer.java
+++ b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/serializers/AccumuloRowSerializer.java
@@ -25,7 +25,6 @@
import org.apache.accumulo.core.data.Value;
import org.apache.hadoop.io.Text;
-import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.HashMap;
@@ -168,7 +167,7 @@ static AccumuloRowSerializer getDefault()
* @param name Column name
* @return Date value
*/
- Date getDate(String name);
+ long getDate(String name);
/**
* Encode the given Date value into the given Text object.
@@ -176,7 +175,7 @@ static AccumuloRowSerializer getDefault()
* @param text Text object to set
* @param value Value to encode
*/
- void setDate(Text text, Date value);
+ void setDate(Text text, long value);
/**
* Gets the Double value of the given Trino column.
@@ -366,7 +365,7 @@ static AccumuloRowSerializer getDefault()
*
*
* DATE |
- * java.sql.Date, Long |
+ * long |
*
*
* DOUBLE |
diff --git a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/serializers/LexicoderRowSerializer.java b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/serializers/LexicoderRowSerializer.java
index 5b5e3545a3cb..d4d8613d0434 100644
--- a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/serializers/LexicoderRowSerializer.java
+++ b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/serializers/LexicoderRowSerializer.java
@@ -50,7 +50,6 @@
import static io.trino.spi.type.TinyintType.TINYINT;
import static io.trino.spi.type.VarbinaryType.VARBINARY;
import static io.trino.spi.type.VarcharType.VARCHAR;
-import static java.util.concurrent.TimeUnit.DAYS;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
/**
@@ -189,13 +188,13 @@ public void setByte(Text text, Byte value)
}
@Override
- public Date getDate(String name)
+ public long getDate(String name)
{
- return new Date(DAYS.toMillis(decode(BIGINT, getFieldValue(name))));
+ return decode(BIGINT, getFieldValue(name));
}
@Override
- public void setDate(Text text, Date value)
+ public void setDate(Text text, long value)
{
text.set(encode(DATE, value));
}
diff --git a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/serializers/StringRowSerializer.java b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/serializers/StringRowSerializer.java
index 12a1fdfe6f37..c9afee9d8135 100644
--- a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/serializers/StringRowSerializer.java
+++ b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/serializers/StringRowSerializer.java
@@ -22,7 +22,6 @@
import org.apache.accumulo.core.data.Value;
import org.apache.hadoop.io.Text;
-import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.HashMap;
@@ -45,8 +44,6 @@
import static io.trino.spi.type.VarcharType.VARCHAR;
import static java.lang.String.format;
import static java.nio.charset.StandardCharsets.UTF_8;
-import static java.util.concurrent.TimeUnit.DAYS;
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
/**
* Implementation of {@link StringRowSerializer} that encodes and decodes Trino column values as human-readable String objects.
@@ -161,15 +158,15 @@ public void setByte(Text text, Byte value)
}
@Override
- public Date getDate(String name)
+ public long getDate(String name)
{
- return new Date(DAYS.toMillis(Long.parseLong(getFieldValue(name))));
+ return Long.parseLong(getFieldValue(name));
}
@Override
- public void setDate(Text text, Date value)
+ public void setDate(Text text, long value)
{
- text.set(Long.toString(MILLISECONDS.toDays(value.getTime())).getBytes(UTF_8));
+ text.set(Long.toString(value).getBytes(UTF_8));
}
@Override
@@ -317,7 +314,7 @@ else if (type.equals(BOOLEAN)) {
setBoolean(text, value.equals(Boolean.TRUE));
}
else if (type.equals(DATE)) {
- setDate(text, (Date) value);
+ setDate(text, (long) value);
}
else if (type.equals(DOUBLE)) {
setDouble(text, (Double) value);
diff --git a/plugin/trino-accumulo/src/test/java/io/trino/plugin/accumulo/TestAccumuloConnectorTest.java b/plugin/trino-accumulo/src/test/java/io/trino/plugin/accumulo/TestAccumuloConnectorTest.java
index 0c9350bd3476..bcebbe2da7fe 100644
--- a/plugin/trino-accumulo/src/test/java/io/trino/plugin/accumulo/TestAccumuloConnectorTest.java
+++ b/plugin/trino-accumulo/src/test/java/io/trino/plugin/accumulo/TestAccumuloConnectorTest.java
@@ -193,30 +193,6 @@ public void testInsertDuplicateRows()
}
}
- @Test
- @Override
- public void testCreateTableAsSelectNegativeDate()
- {
- // TODO (https://github.com/trinodb/trino/issues/10208) Fix negative date handling.
- assertThatThrownBy(super::testCreateTableAsSelectNegativeDate)
- .isInstanceOf(AssertionError.class)
- .hasMessageContaining("" +
- "Actual rows (up to 100 of 1 extra rows shown, 1 rows in total):\n" +
- " [-0002-12-31]");
- }
-
- @Test
- @Override
- public void testInsertNegativeDate()
- {
- // TODO (https://github.com/trinodb/trino/issues/10208) Fix negative date handling.
- assertThatThrownBy(super::testInsertNegativeDate)
- .isInstanceOf(AssertionError.class)
- .hasMessageContaining("" +
- "Actual rows (up to 100 of 1 extra rows shown, 1 rows in total):\n" +
- " [-0002-12-31]");
- }
-
@Override
public void testShowColumns()
{
@@ -321,15 +297,6 @@ public void testShowCreateTable()
protected Optional filterDataMappingSmokeTestData(DataMappingTestSetup dataMappingTestSetup)
{
String typeName = dataMappingTestSetup.getTrinoTypeName();
- if (typeName.equals("date")) {
- // TODO (https://github.com/trinodb/trino/issues/10074) Investigate why this test case fails
- if (dataMappingTestSetup.getSampleValueLiteral().equals("DATE '0001-01-01'")
- || dataMappingTestSetup.getSampleValueLiteral().equals("DATE '1582-10-04'")
- || dataMappingTestSetup.getSampleValueLiteral().equals("DATE '1582-10-05'")
- || dataMappingTestSetup.getSampleValueLiteral().equals("DATE '1582-10-14'")) {
- return Optional.empty();
- }
- }
if (typeName.startsWith("decimal(")
|| typeName.equals("timestamp(3) with time zone")
|| typeName.startsWith("char(")) {
diff --git a/plugin/trino-accumulo/src/test/java/io/trino/plugin/accumulo/model/TestField.java b/plugin/trino-accumulo/src/test/java/io/trino/plugin/accumulo/model/TestField.java
index 699f10707460..43b3c0f02432 100644
--- a/plugin/trino-accumulo/src/test/java/io/trino/plugin/accumulo/model/TestField.java
+++ b/plugin/trino-accumulo/src/test/java/io/trino/plugin/accumulo/model/TestField.java
@@ -24,9 +24,9 @@
import io.trino.spi.type.TypeSignatureParameter;
import org.testng.annotations.Test;
-import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
+import java.time.LocalDate;
import java.util.GregorianCalendar;
import static io.airlift.slice.Slices.utf8Slice;
@@ -91,7 +91,7 @@ public void testBoolean()
public void testDate()
{
Type type = DATE;
- Date expected = new Date(new GregorianCalendar(1999, 0, 1).getTime().getTime());
+ long expected = LocalDate.parse("1999-01-01").toEpochDay();
Field f1 = new Field(10592L, type);
assertEquals(f1.getDate(), expected);
assertEquals(f1.getObject(), expected);
diff --git a/plugin/trino-accumulo/src/test/java/io/trino/plugin/accumulo/serializers/AbstractTestAccumuloRowSerializer.java b/plugin/trino-accumulo/src/test/java/io/trino/plugin/accumulo/serializers/AbstractTestAccumuloRowSerializer.java
index fa5ef0ce920e..6fe660dd44a1 100644
--- a/plugin/trino-accumulo/src/test/java/io/trino/plugin/accumulo/serializers/AbstractTestAccumuloRowSerializer.java
+++ b/plugin/trino-accumulo/src/test/java/io/trino/plugin/accumulo/serializers/AbstractTestAccumuloRowSerializer.java
@@ -22,13 +22,11 @@
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Mutation;
import org.apache.accumulo.core.data.Value;
-import org.joda.time.DateTime;
-import org.joda.time.DateTimeZone;
import org.testng.annotations.Test;
-import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
+import java.time.LocalDate;
import java.util.AbstractMap.SimpleImmutableEntry;
import java.util.List;
import java.util.Map;
@@ -48,7 +46,6 @@
import static io.trino.spi.type.VarcharType.VARCHAR;
import static io.trino.type.InternalTypeManager.TESTING_TYPE_MANAGER;
import static java.nio.charset.StandardCharsets.UTF_8;
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static org.testng.Assert.assertEquals;
public abstract class AbstractTestAccumuloRowSerializer
@@ -104,15 +101,14 @@ public void testBoolean()
public void testDate()
throws Exception
{
- Date expected = new Date(new DateTime(2001, 2, 3, 4, 5, 6, DateTimeZone.UTC).getMillis());
+ long expected = LocalDate.parse("2001-02-03").toEpochDay();
AccumuloRowSerializer serializer = serializerClass.getConstructor().newInstance();
byte[] data = serializer.encode(DATE, expected);
deserializeData(serializer, data);
- Date actual = serializer.getDate(COLUMN_NAME);
+ long actual = serializer.getDate(COLUMN_NAME);
- // Convert milliseconds to days so they can be compared regardless of the time of day
- assertEquals(MILLISECONDS.toDays(actual.getTime()), MILLISECONDS.toDays(expected.getTime()));
+ assertEquals(actual, expected);
}
@Test