Skip to content

Commit 2439197

Browse files
committed
Fix tests
1 parent 26e64c6 commit 2439197

File tree

4 files changed

+48
-16
lines changed

4 files changed

+48
-16
lines changed

flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/SqlTypes.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import org.apache.arrow.vector.types.FloatingPointPrecision;
2323
import org.apache.arrow.vector.types.pojo.ArrowType;
2424

25+
import com.google.common.base.Strings;
26+
2527
/** SQL Types utility functions. */
2628
public class SqlTypes {
2729
private static final Map<Integer, String> typeIdToName = new HashMap<>();
@@ -121,10 +123,10 @@ public static int getSqlTypeIdFromArrowType(ArrowType arrowType) {
121123
return Types.TIME;
122124
case Timestamp:
123125
String tz = ((ArrowType.Timestamp) arrowType).getTimezone();
124-
if (tz != null) {
125-
return Types.TIMESTAMP_WITH_TIMEZONE;
126-
} else {
126+
if (Strings.isNullOrEmpty(tz)) {
127127
return Types.TIMESTAMP;
128+
} else {
129+
return Types.TIMESTAMP_WITH_TIMEZONE;
128130
}
129131
case Bool:
130132
return Types.BOOLEAN;

flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/ArrowDatabaseMetadataTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,8 +299,9 @@ public class ArrowDatabaseMetadataTest {
299299
private static Connection connection;
300300

301301
static {
302-
List<Integer> expectedGetColumnsDataTypes = Arrays.asList(3, 93, 4);
303-
List<String> expectedGetColumnsTypeName = Arrays.asList("DECIMAL", "TIMESTAMP", "INTEGER");
302+
List<Integer> expectedGetColumnsDataTypes = Arrays.asList(3, 2014, 4);
303+
List<String> expectedGetColumnsTypeName =
304+
Arrays.asList("DECIMAL", "TIMESTAMP_WITH_TIMEZONE", "INTEGER");
304305
List<Integer> expectedGetColumnsRadix = Arrays.asList(10, null, 10);
305306
List<Integer> expectedGetColumnsColumnSize = Arrays.asList(5, 29, 10);
306307
List<Integer> expectedGetColumnsDecimalDigits = Arrays.asList(2, 9, 0);

flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/accessor/impl/calendar/ArrowFlightJdbcTimeStampVectorAccessorTest.java

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
*/
1717
package org.apache.arrow.driver.jdbc.accessor.impl.calendar;
1818

19-
import static org.apache.arrow.driver.jdbc.accessor.impl.calendar.ArrowFlightJdbcTimeStampVectorAccessor.getTimeUnitForVector;
20-
import static org.apache.arrow.driver.jdbc.accessor.impl.calendar.ArrowFlightJdbcTimeStampVectorAccessor.getTimeZoneForVector;
19+
import static org.apache.arrow.driver.jdbc.accessor.impl.calendar.ArrowFlightJdbcTimeStampVectorAccessor.*;
2120
import static org.hamcrest.CoreMatchers.equalTo;
2221
import static org.hamcrest.CoreMatchers.is;
2322
import static org.hamcrest.MatcherAssert.assertThat;
@@ -183,16 +182,22 @@ public void testShouldGetTimestampReturnValidTimestampWithCalendar(
183182
Calendar calendar = Calendar.getInstance(timeZone);
184183

185184
TimeZone timeZoneForVector = getTimeZoneForVector(vector);
185+
boolean hasTz = getVectorIsZoned(vector);
186186

187187
accessorIterator.iterate(
188188
vector,
189189
(accessor, currentRow) -> {
190190
final Timestamp resultWithoutCalendar = accessor.getTimestamp(null);
191191
final Timestamp result = accessor.getTimestamp(calendar);
192192

193-
long offset =
194-
(long) timeZone.getOffset(resultWithoutCalendar.getTime())
195-
- timeZoneForVector.getOffset(resultWithoutCalendar.getTime());
193+
long offset;
194+
if (hasTz) {
195+
offset =
196+
(long) timeZone.getOffset(resultWithoutCalendar.getTime())
197+
- timeZoneForVector.getOffset(resultWithoutCalendar.getTime());
198+
} else {
199+
offset = 0;
200+
}
196201

197202
assertThat(resultWithoutCalendar.getTime() - result.getTime(), is(offset));
198203
assertThat(accessor.wasNull(), is(false));
@@ -231,16 +236,22 @@ public void testShouldGetDateReturnValidDateWithCalendar(Supplier<TimeStampVecto
231236
Calendar calendar = Calendar.getInstance(timeZone);
232237

233238
TimeZone timeZoneForVector = getTimeZoneForVector(vector);
239+
boolean hasTz = getVectorIsZoned(vector);
234240

235241
accessorIterator.iterate(
236242
vector,
237243
(accessor, currentRow) -> {
238244
final Date resultWithoutCalendar = accessor.getDate(null);
239245
final Date result = accessor.getDate(calendar);
240246

241-
long offset =
242-
(long) timeZone.getOffset(resultWithoutCalendar.getTime())
243-
- timeZoneForVector.getOffset(resultWithoutCalendar.getTime());
247+
long offset;
248+
if (hasTz) {
249+
offset =
250+
(long) timeZone.getOffset(resultWithoutCalendar.getTime())
251+
- timeZoneForVector.getOffset(resultWithoutCalendar.getTime());
252+
} else {
253+
offset = 0;
254+
}
244255

245256
assertThat(resultWithoutCalendar.getTime() - result.getTime(), is(offset));
246257
assertThat(accessor.wasNull(), is(false));
@@ -279,16 +290,22 @@ public void testShouldGetTimeReturnValidTimeWithCalendar(Supplier<TimeStampVecto
279290
Calendar calendar = Calendar.getInstance(timeZone);
280291

281292
TimeZone timeZoneForVector = getTimeZoneForVector(vector);
293+
boolean hasTz = getVectorIsZoned(vector);
282294

283295
accessorIterator.iterate(
284296
vector,
285297
(accessor, currentRow) -> {
286298
final Time resultWithoutCalendar = accessor.getTime(null);
287299
final Time result = accessor.getTime(calendar);
288300

289-
long offset =
290-
(long) timeZone.getOffset(resultWithoutCalendar.getTime())
291-
- timeZoneForVector.getOffset(resultWithoutCalendar.getTime());
301+
long offset;
302+
if (hasTz) {
303+
offset =
304+
(long) timeZone.getOffset(resultWithoutCalendar.getTime())
305+
- timeZoneForVector.getOffset(resultWithoutCalendar.getTime());
306+
} else {
307+
offset = 0;
308+
}
292309

293310
assertThat(resultWithoutCalendar.getTime() - result.getTime(), is(offset));
294311
assertThat(accessor.wasNull(), is(false));

flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/utils/SqlTypesTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,15 @@ public void testGetSqlTypeIdFromArrowType() {
4848
assertEquals(Types.DATE, getSqlTypeIdFromArrowType(new ArrowType.Date(DateUnit.MILLISECOND)));
4949
assertEquals(
5050
Types.TIME, getSqlTypeIdFromArrowType(new ArrowType.Time(TimeUnit.MILLISECOND, 32)));
51+
assertEquals(
52+
Types.TIMESTAMP,
53+
getSqlTypeIdFromArrowType(new ArrowType.Timestamp(TimeUnit.MILLISECOND, null)));
5154
assertEquals(
5255
Types.TIMESTAMP,
5356
getSqlTypeIdFromArrowType(new ArrowType.Timestamp(TimeUnit.MILLISECOND, "")));
57+
assertEquals(
58+
Types.TIMESTAMP_WITH_TIMEZONE,
59+
getSqlTypeIdFromArrowType(new ArrowType.Timestamp(TimeUnit.MILLISECOND, "UTC")));
5460

5561
assertEquals(Types.BOOLEAN, getSqlTypeIdFromArrowType(new ArrowType.Bool()));
5662

@@ -95,9 +101,15 @@ public void testGetSqlTypeNameFromArrowType() {
95101

96102
assertEquals("DATE", getSqlTypeNameFromArrowType(new ArrowType.Date(DateUnit.MILLISECOND)));
97103
assertEquals("TIME", getSqlTypeNameFromArrowType(new ArrowType.Time(TimeUnit.MILLISECOND, 32)));
104+
assertEquals(
105+
"TIMESTAMP",
106+
getSqlTypeNameFromArrowType(new ArrowType.Timestamp(TimeUnit.MILLISECOND, null)));
98107
assertEquals(
99108
"TIMESTAMP",
100109
getSqlTypeNameFromArrowType(new ArrowType.Timestamp(TimeUnit.MILLISECOND, "")));
110+
assertEquals(
111+
"TIMESTAMP_WITH_TIMEZONE",
112+
getSqlTypeNameFromArrowType(new ArrowType.Timestamp(TimeUnit.MILLISECOND, "UTC")));
101113

102114
assertEquals("BOOLEAN", getSqlTypeNameFromArrowType(new ArrowType.Bool()));
103115

0 commit comments

Comments
 (0)