This is an automated email from the ASF dual-hosted git repository.
stoty pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite-avatica.git
The following commit(s) were added to refs/heads/main by this push:
new f106ce2f0 [CALCITE-5536] Clean up some of the magic numbers in
AvaticaResultSetConversionsTest and AbstractCursor
f106ce2f0 is described below
commit f106ce2f08900b04759585eaca0a0919a157640b
Author: Will Noble <[email protected]>
AuthorDate: Wed Feb 15 15:26:58 2023 -0800
[CALCITE-5536] Clean up some of the magic numbers in
AvaticaResultSetConversionsTest and AbstractCursor
---
.../calcite/avatica/util/AbstractCursor.java | 4 +-
.../avatica/AvaticaResultSetConversionsTest.java | 75 ++++++++++++++--------
.../avatica/util/TimestampAccessorTest.java | 16 +++--
.../util/TimestampFromNumberAccessorTest.java | 19 ++++--
.../util/TimestampFromUtilDateAccessorTest.java | 16 +++--
5 files changed, 88 insertions(+), 42 deletions(-)
diff --git
a/core/src/main/java/org/apache/calcite/avatica/util/AbstractCursor.java
b/core/src/main/java/org/apache/calcite/avatica/util/AbstractCursor.java
index 7fbe13a7b..2a4cd64ce 100644
--- a/core/src/main/java/org/apache/calcite/avatica/util/AbstractCursor.java
+++ b/core/src/main/java/org/apache/calcite/avatica/util/AbstractCursor.java
@@ -173,14 +173,14 @@ public abstract class AbstractCursor implements Cursor {
default:
throw new AssertionError("bad " + columnMetaData.type.rep);
}
- case 2013: // TIME_WITH_TIMEZONE
+ case Types.TIME_WITH_TIMEZONE:
switch (columnMetaData.type.rep) {
case STRING:
return new StringAccessor(getter);
default:
throw new AssertionError("bad " + columnMetaData.type.rep);
}
- case 2014: // TIMESTAMP_WITH_TIMEZONE
+ case Types.TIMESTAMP_WITH_TIMEZONE:
switch (columnMetaData.type.rep) {
case STRING:
return new StringAccessor(getter);
diff --git
a/core/src/test/java/org/apache/calcite/avatica/AvaticaResultSetConversionsTest.java
b/core/src/test/java/org/apache/calcite/avatica/AvaticaResultSetConversionsTest.java
index b7645b74d..edc6ad514 100644
---
a/core/src/test/java/org/apache/calcite/avatica/AvaticaResultSetConversionsTest.java
+++
b/core/src/test/java/org/apache/calcite/avatica/AvaticaResultSetConversionsTest.java
@@ -71,6 +71,29 @@ import static org.junit.Assert.fail;
*/
@RunWith(Parameterized.class)
public class AvaticaResultSetConversionsTest {
+
+ // UTC: 2016-10-10 20:18:38.123
+ // October 10 is considered DST in all time zones that observe DST (both
hemispheres), so tests
+ // using this value will cover daylight time zone conversion when run in a
location that observes
+ // DST. This is just a matter of coverage; all tests must succeed no matter
where the host is.
+ private static final long DST_INSTANT = 1476130718123L;
+ private static final String DST_DATE_STRING = "2016-10-10";
+ private static final String DST_TIME_STRING = "20:18:38";
+ private static final String DST_TIMESTAMP_STRING = "2016-10-10 20:18:38";
+
+ // UTC: 2016-11-14 11:32:03.242
+ // There is no date where all time zones (both hemispheres) are on standard
time, but all northern
+ // time zones observe standard time by mid-November. Tests using this value
may or may not
+ // exercise standard time zone conversion, but this is just a matter of
coverage; all tests must
+ // succeed no matter where the host is.
+ private static final long STANDARD_INSTANT = 1479123123242L;
+
+ // UTC: 00:24:36.123
+ private static final long VALID_TIME = 1476123L;
+
+ // UTC: 41:05:12.242
+ private static final long OVERFLOW_TIME = 147912242L;
+
/**
* A fake test driver for test.
*/
@@ -215,15 +238,15 @@ public class AvaticaResultSetConversionsTest {
List<Object> row = Collections.<Object>singletonList(
new Object[] {
true, (byte) 1, (short) 2, 3, 4L, 5.0f, 6.0d, "testvalue",
- new Date(1476130718123L), new Time(1476130718123L),
- new Timestamp(1476130718123L),
+ new Date(DST_INSTANT), new Time(DST_INSTANT),
+ new Timestamp(DST_INSTANT),
Arrays.asList(1, 2, 3),
new StructImpl(Arrays.asList(42, false)),
true,
null,
Arrays.asList(123, 18234),
- Arrays.asList(1476130718123L, 1479123123242L),
- Arrays.asList(1476123L, 147912242L),
+ Arrays.asList(DST_INSTANT, STANDARD_INSTANT),
+ Arrays.asList(VALID_TIME, OVERFLOW_TIME),
Arrays.asList(1, 1.1)
});
@@ -653,7 +676,7 @@ public class AvaticaResultSetConversionsTest {
ColumnMetaData.scalar(Types.TIME, "TIME", ColumnMetaData.Rep.NUMBER);
Array expectedArray =
new ArrayFactoryImpl(TimeZone.getTimeZone("UTC")).createArray(
- intType, Arrays.asList(1476123L, 147912242L));
+ intType, Arrays.asList(VALID_TIME, OVERFLOW_TIME));
assertTrue(ArrayImpl.equalContents(expectedArray,
g.getArray(resultSet)));
}
}
@@ -671,7 +694,7 @@ public class AvaticaResultSetConversionsTest {
ColumnMetaData.scalar(Types.TIMESTAMP, "TIMESTAMP",
ColumnMetaData.Rep.PRIMITIVE_LONG);
Array expectedArray =
new ArrayFactoryImpl(TimeZone.getTimeZone("UTC")).createArray(
- intType, Arrays.asList(1476130718123L, 1479123123242L));
+ intType, Arrays.asList(DST_INSTANT, STANDARD_INSTANT));
assertTrue(ArrayImpl.equalContents(expectedArray,
g.getArray(resultSet)));
}
}
@@ -986,7 +1009,7 @@ public class AvaticaResultSetConversionsTest {
}
@Override public void testGetString(ResultSet resultSet) throws
SQLException {
- assertEquals("2016-10-10", g.getString(resultSet));
+ assertEquals(DST_DATE_STRING, g.getString(resultSet));
}
@Override public void testGetBoolean(ResultSet resultSet) throws
SQLException {
@@ -1010,7 +1033,7 @@ public class AvaticaResultSetConversionsTest {
}
@Override public void testGetDate(ResultSet resultSet, Calendar calendar)
throws SQLException {
- assertEquals(new Date(1476130718123L), g.getDate(resultSet, calendar));
+ assertEquals(new Date(DST_INSTANT), g.getDate(resultSet, calendar));
}
}
@@ -1023,7 +1046,7 @@ public class AvaticaResultSetConversionsTest {
}
@Override public void testGetString(ResultSet resultSet) throws
SQLException {
- assertEquals("20:18:38", g.getString(resultSet));
+ assertEquals(DST_TIME_STRING, g.getString(resultSet));
}
@Override public void testGetBoolean(ResultSet resultSet) throws
SQLException {
@@ -1031,23 +1054,23 @@ public class AvaticaResultSetConversionsTest {
}
@Override public void testGetByte(ResultSet resultSet) throws SQLException
{
- assertEquals((byte) -85, g.getByte(resultSet));
+ assertEquals((byte) DST_INSTANT, g.getByte(resultSet));
}
@Override public void testGetShort(ResultSet resultSet) throws
SQLException {
- assertEquals((short) -20053, g.getShort(resultSet));
+ assertEquals((short) (DST_INSTANT % DateTimeUtils.MILLIS_PER_DAY),
g.getShort(resultSet));
}
@Override public void testGetInt(ResultSet resultSet) throws SQLException {
- assertEquals(73118123, g.getInt(resultSet));
+ assertEquals((int) (DST_INSTANT % DateTimeUtils.MILLIS_PER_DAY),
g.getInt(resultSet));
}
@Override public void testGetLong(ResultSet resultSet) throws SQLException
{
- assertEquals(73118123, g.getLong(resultSet));
+ assertEquals(DST_INSTANT % DateTimeUtils.MILLIS_PER_DAY,
g.getLong(resultSet));
}
@Override public void testGetTime(ResultSet resultSet, Calendar calendar)
throws SQLException {
- assertEquals(new Time(1476130718123L), g.getTime(resultSet, calendar));
+ assertEquals(new Time(DST_INSTANT), g.getTime(resultSet, calendar));
}
}
@@ -1060,7 +1083,7 @@ public class AvaticaResultSetConversionsTest {
}
@Override public void testGetString(ResultSet resultSet) throws
SQLException {
- assertEquals("2016-10-10 20:18:38", g.getString(resultSet));
+ assertEquals(DST_TIMESTAMP_STRING, g.getString(resultSet));
}
@Override public void testGetBoolean(ResultSet resultSet) throws
SQLException {
@@ -1068,32 +1091,32 @@ public class AvaticaResultSetConversionsTest {
}
@Override public void testGetByte(ResultSet resultSet) throws SQLException
{
- assertEquals((byte) -85, g.getByte(resultSet));
+ assertEquals((byte) DST_INSTANT, g.getByte(resultSet));
}
@Override public void testGetShort(ResultSet resultSet) throws
SQLException {
- assertEquals((short) 16811, g.getShort(resultSet));
+ assertEquals((short) DST_INSTANT, g.getShort(resultSet));
}
@Override public void testGetInt(ResultSet resultSet) throws SQLException {
- assertEquals(-1338031701, g.getInt(resultSet));
+ assertEquals((int) DST_INSTANT, g.getInt(resultSet));
}
@Override public void testGetLong(ResultSet resultSet) throws SQLException
{
- assertEquals(1476130718123L, g.getLong(resultSet));
+ assertEquals(DST_INSTANT, g.getLong(resultSet));
}
@Override public void testGetDate(ResultSet resultSet, Calendar calendar)
throws SQLException {
- assertEquals(new Date(1476130718123L), g.getDate(resultSet, calendar));
+ assertEquals(new Date(DST_INSTANT), g.getDate(resultSet, calendar));
}
@Override public void testGetTime(ResultSet resultSet, Calendar calendar)
throws SQLException {
- assertEquals(new Time(1476130718123L), g.getTime(resultSet, calendar));
+ assertEquals(new Time(DST_INSTANT), g.getTime(resultSet, calendar));
}
@Override public void testGetTimestamp(ResultSet resultSet, Calendar
calendar)
throws SQLException {
- assertEquals(new Timestamp(1476130718123L), g.getTimestamp(resultSet,
calendar));
+ assertEquals(new Timestamp(DST_INSTANT), g.getTimestamp(resultSet,
calendar));
}
}
@@ -1110,7 +1133,7 @@ public class AvaticaResultSetConversionsTest {
}
}
- private static final Calendar DEFAULT_CALENDAR = DateTimeUtils.calendar();
+ private static final Calendar UTC_CALENDAR = DateTimeUtils.calendar();
private static Connection connection = null;
private static ResultSet resultSet = null;
@@ -1282,17 +1305,17 @@ public class AvaticaResultSetConversionsTest {
@Test
public void testGetDate() throws SQLException {
- testHelper.testGetDate(resultSet, DEFAULT_CALENDAR);
+ testHelper.testGetDate(resultSet, UTC_CALENDAR);
}
@Test
public void testGetTime() throws SQLException {
- testHelper.testGetTime(resultSet, DEFAULT_CALENDAR);
+ testHelper.testGetTime(resultSet, UTC_CALENDAR);
}
@Test
public void testGetTimestamp() throws SQLException {
- testHelper.testGetTimestamp(resultSet, DEFAULT_CALENDAR);
+ testHelper.testGetTimestamp(resultSet, UTC_CALENDAR);
}
@Test
diff --git
a/core/src/test/java/org/apache/calcite/avatica/util/TimestampAccessorTest.java
b/core/src/test/java/org/apache/calcite/avatica/util/TimestampAccessorTest.java
index 94da748a7..98d20c00f 100644
---
a/core/src/test/java/org/apache/calcite/avatica/util/TimestampAccessorTest.java
+++
b/core/src/test/java/org/apache/calcite/avatica/util/TimestampAccessorTest.java
@@ -41,6 +41,14 @@ public class TimestampAccessorTest {
private static final Calendar UTC =
Calendar.getInstance(TimeZone.getTimeZone("UTC"), Locale.ROOT);
+ // UTC: 2014-09-30 15:28:27.356
+ private static final long DST_INSTANT = 1412090907356L;
+ private static final String DST_STRING = "2014-09-30 15:28:27";
+
+ // UTC: 1500-04-30 12:00:00.123 (PROLEPTIC GREGORIAN CALENDAR)
+ private static final long PRE_GREG_INSTANT = -14820580799877L;
+ private static final String PRE_GREG_STRING = "1500-04-30 12:00:00";
+
private Cursor.Accessor instance;
private Calendar localCalendar;
private Timestamp value;
@@ -191,11 +199,11 @@ public class TimestampAccessorTest {
value = new Timestamp(0L);
assertThat(instance.getString(), is("1970-01-01 00:00:00"));
- value = new Timestamp(1412090907356L /* 2014-09-30 15:28:27.356 UTC */);
- assertThat(instance.getString(), is("2014-09-30 15:28:27"));
+ value = new Timestamp(DST_INSTANT);
+ assertThat(instance.getString(), is(DST_STRING));
- value = new Timestamp(-14820580799877L /* 1500-04-30 12:00:00.123 */);
- assertThat(instance.getString(), is("1500-04-30 12:00:00"));
+ value = new Timestamp(PRE_GREG_INSTANT);
+ assertThat(instance.getString(), is(PRE_GREG_STRING));
}
/**
diff --git
a/core/src/test/java/org/apache/calcite/avatica/util/TimestampFromNumberAccessorTest.java
b/core/src/test/java/org/apache/calcite/avatica/util/TimestampFromNumberAccessorTest.java
index 0b548b940..d8fd819fb 100644
---
a/core/src/test/java/org/apache/calcite/avatica/util/TimestampFromNumberAccessorTest.java
+++
b/core/src/test/java/org/apache/calcite/avatica/util/TimestampFromNumberAccessorTest.java
@@ -37,6 +37,14 @@ import static org.hamcrest.MatcherAssert.assertThat;
*/
public class TimestampFromNumberAccessorTest {
+ // UTC: 2014-09-30 15:28:27.356
+ private static final long DST_INSTANT = 1412090907356L;
+ private static final String DST_STRING = "2014-09-30 15:28:27";
+
+ // UTC: 1500-04-30 12:00:00.123 (JULIAN CALENDAR)
+ private static final long PRE_GREG_INSTANT = -14821444799877L;
+ private static final String PRE_GREG_STRING = "1500-04-30 12:00:00";
+
private Cursor.Accessor instance;
private Calendar localCalendar;
private Object value;
@@ -48,8 +56,7 @@ public class TimestampFromNumberAccessorTest {
@Before public void before() {
final AbstractCursor.Getter getter = new LocalGetter();
localCalendar = Calendar.getInstance(TimeZone.getDefault(), Locale.ROOT);
- instance = new AbstractCursor.TimestampFromNumberAccessor(getter,
- localCalendar);
+ instance = new AbstractCursor.TimestampFromNumberAccessor(getter,
localCalendar);
}
/**
@@ -132,11 +139,11 @@ public class TimestampFromNumberAccessorTest {
value = 0L;
assertThat(instance.getString(), is("1970-01-01 00:00:00"));
- value = 1412090907356L; // 2014-09-30 15:28:27.356 UTC
- assertThat(instance.getString(), is("2014-09-30 15:28:27"));
+ value = DST_INSTANT;
+ assertThat(instance.getString(), is(DST_STRING));
- value = -14821444799877L; // 1500-04-30 12:00:00.123
- assertThat(instance.getString(), is("1500-04-30 12:00:00"));
+ value = PRE_GREG_INSTANT;
+ assertThat(instance.getString(), is(PRE_GREG_STRING));
}
/**
diff --git
a/core/src/test/java/org/apache/calcite/avatica/util/TimestampFromUtilDateAccessorTest.java
b/core/src/test/java/org/apache/calcite/avatica/util/TimestampFromUtilDateAccessorTest.java
index afdd37bc5..bdc7db1fa 100644
---
a/core/src/test/java/org/apache/calcite/avatica/util/TimestampFromUtilDateAccessorTest.java
+++
b/core/src/test/java/org/apache/calcite/avatica/util/TimestampFromUtilDateAccessorTest.java
@@ -42,6 +42,14 @@ public class TimestampFromUtilDateAccessorTest {
private static final Calendar UTC =
Calendar.getInstance(TimeZone.getTimeZone("UTC"), Locale.ROOT);
+ // UTC: 2014-09-30 15:28:27.356
+ private static final long DST_INSTANT = 1412090907356L;
+ private static final String DST_STRING = "2014-09-30 15:28:27";
+
+ // UTC: 1500-04-30 12:00:00.123 (PROLEPTIC GREGORIAN CALENDAR)
+ private static final long PRE_GREG_INSTANT = -14820580799877L;
+ private static final String PRE_GREG_STRING = "1500-04-30 12:00:00";
+
private Cursor.Accessor instance;
private Calendar localCalendar;
private Date value;
@@ -194,11 +202,11 @@ public class TimestampFromUtilDateAccessorTest {
value = new Timestamp(0L);
assertThat(instance.getString(), is("1970-01-01 00:00:00"));
- value = new Timestamp(1412090907356L /* 2014-09-30 15:28:27.356 UTC */);
- assertThat(instance.getString(), is("2014-09-30 15:28:27"));
+ value = new Timestamp(DST_INSTANT);
+ assertThat(instance.getString(), is(DST_STRING));
- value = new Timestamp(-14820580799877L /* 1500-04-30 12:00:00.123 UTC */);
- assertThat(instance.getString(), is("1500-04-30 12:00:00"));
+ value = new Timestamp(PRE_GREG_INSTANT);
+ assertThat(instance.getString(), is(PRE_GREG_STRING));
}
/**