Skip to content

Commit cc77d16

Browse files
author
Bora
committed
Addressed review comments and refactored
1 parent 9937c0d commit cc77d16

File tree

5 files changed

+48
-15
lines changed

5 files changed

+48
-15
lines changed

flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/converter/impl/DateAvaticaParameterConverter.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,14 @@ public boolean bindParameter(FieldVector vector, TypedValue typedValue, int inde
3737
if (value instanceof String) {
3838
LocalDate localDate = LocalDate.parse((String) value);
3939
days = (int) localDate.toEpochDay();
40+
} else if (value instanceof Integer) {
41+
days = (Integer) value;
4042
} else {
41-
days = (int) typedValue.toLocal();
43+
return false;
4244
}
45+
4346
if (vector instanceof DateMilliVector) {
44-
((DateMilliVector) vector).setSafe(index, days);
47+
((DateMilliVector) vector).setSafe(index, days * 24 * 60 * 60 * 1000);
4548
return true;
4649
} else if (vector instanceof DateDayVector) {
4750
((DateDayVector) vector).setSafe(index, days);

flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/converter/impl/TimeAvaticaParameterConverter.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,13 @@ public TimeAvaticaParameterConverter(ArrowType.Time type) {}
3333

3434
@Override
3535
public boolean bindParameter(FieldVector vector, TypedValue typedValue, int index) {
36-
if (typedValue.value instanceof String) {
37-
return bindTimeAsString(vector, (String) typedValue.value, index);
36+
Object value = typedValue.value;
37+
if (value instanceof String) {
38+
return bindTimeAsString(vector, (String) value, index);
39+
} else if (value instanceof Integer) {
40+
return bindTimeAsInt(vector, (int) value, index);
3841
} else {
39-
return bindTimeAsInt(vector, (int) typedValue.toLocal(), index);
42+
return false;
4043
}
4144
}
4245

flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/converter/impl/DateAvaticaParameterConverterTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ void testBindParameterWithStringDateMilliVector() {
5353
TypedValue typedValue = TypedValue.create(ColumnMetaData.Rep.STRING.toString(), dateStr);
5454
boolean result = converter.bindParameter(vector, typedValue, 0);
5555
assertTrue(result);
56-
assertEquals((int) LocalDate.parse(dateStr).toEpochDay(), vector.get(0));
56+
assertEquals(
57+
(int) (LocalDate.parse(dateStr).toEpochDay() * 24 * 60 * 60 * 1000), vector.get(0));
5758
}
5859
}
5960

flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/converter/impl/TimeAvaticaParameterConverterTest.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,25 @@
2828
import org.apache.arrow.vector.types.pojo.ArrowType;
2929
import org.apache.calcite.avatica.ColumnMetaData;
3030
import org.apache.calcite.avatica.remote.TypedValue;
31+
import org.junit.jupiter.api.AfterEach;
32+
import org.junit.jupiter.api.BeforeEach;
3133
import org.junit.jupiter.api.Test;
3234

3335
public class TimeAvaticaParameterConverterTest {
36+
private BufferAllocator allocator;
37+
38+
@BeforeEach
39+
void setUp() {
40+
allocator = new RootAllocator(Long.MAX_VALUE);
41+
}
42+
43+
@AfterEach
44+
void tearDown() {
45+
allocator.close();
46+
}
3447

3548
@Test
3649
void testBindParameterWithIsoStringMilli() {
37-
BufferAllocator allocator = new RootAllocator(Long.MAX_VALUE);
3850
TimeMilliVector vector = new TimeMilliVector("t", allocator);
3951
vector.allocateNew(1);
4052
TimeAvaticaParameterConverter converter =
@@ -44,11 +56,11 @@ void testBindParameterWithIsoStringMilli() {
4456
vector, TypedValue.create(ColumnMetaData.Rep.STRING.toString(), "21:39:50"), 0);
4557
assertTrue(result);
4658
assertEquals(77990000, vector.get(0));
59+
vector.close();
4760
}
4861

4962
@Test
5063
void testBindParameterWithIsoStringMicro() {
51-
BufferAllocator allocator = new RootAllocator(Long.MAX_VALUE);
5264
TimeMicroVector vector = new TimeMicroVector("t", allocator);
5365
vector.allocateNew(1);
5466
TimeAvaticaParameterConverter converter =
@@ -58,11 +70,11 @@ void testBindParameterWithIsoStringMicro() {
5870
vector, TypedValue.create(ColumnMetaData.Rep.STRING.toString(), "21:39:50.123456"), 0);
5971
assertTrue(result);
6072
assertEquals(77990123456L, (long) vector.get(0));
73+
vector.close();
6174
}
6275

6376
@Test
6477
void testBindParameterWithIsoStringNano() {
65-
BufferAllocator allocator = new RootAllocator(Long.MAX_VALUE);
6678
TimeNanoVector vector = new TimeNanoVector("t", allocator);
6779
vector.allocateNew(1);
6880
TimeAvaticaParameterConverter converter =
@@ -74,11 +86,11 @@ void testBindParameterWithIsoStringNano() {
7486
0);
7587
assertTrue(result);
7688
assertEquals(77990123456789L, (long) vector.get(0));
89+
vector.close();
7790
}
7891

7992
@Test
8093
void testBindParameterWithIsoStringSec() {
81-
BufferAllocator allocator = new RootAllocator(Long.MAX_VALUE);
8294
TimeSecVector vector = new TimeSecVector("t", allocator);
8395
vector.allocateNew(1);
8496
TimeAvaticaParameterConverter converter =
@@ -88,11 +100,11 @@ void testBindParameterWithIsoStringSec() {
88100
vector, TypedValue.create(ColumnMetaData.Rep.STRING.toString(), "21:39:50"), 0);
89101
assertTrue(result);
90102
assertEquals(77990, vector.get(0));
103+
vector.close();
91104
}
92105

93106
@Test
94107
void testBindParameterWithIntValueMilli() {
95-
BufferAllocator allocator = new RootAllocator(Long.MAX_VALUE);
96108
TimeMilliVector vector = new TimeMilliVector("t", allocator);
97109
vector.allocateNew(1);
98110
TimeAvaticaParameterConverter converter =
@@ -102,11 +114,11 @@ void testBindParameterWithIntValueMilli() {
102114
vector, TypedValue.create(ColumnMetaData.Rep.INTEGER.toString(), 123456), 0);
103115
assertTrue(result);
104116
assertEquals(123456, vector.get(0));
117+
vector.close();
105118
}
106119

107120
@Test
108121
void testBindParameterWithIntValueSec() {
109-
BufferAllocator allocator = new RootAllocator(Long.MAX_VALUE);
110122
TimeSecVector vector = new TimeSecVector("t", allocator);
111123
vector.allocateNew(1);
112124
TimeAvaticaParameterConverter converter =
@@ -116,5 +128,6 @@ void testBindParameterWithIntValueSec() {
116128
vector, TypedValue.create(ColumnMetaData.Rep.INTEGER.toString(), 42), 0);
117129
assertTrue(result);
118130
assertEquals(42, vector.get(0));
131+
vector.close();
119132
}
120133
}

flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/converter/impl/TimestampAvaticaParameterConverterTest.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,25 @@
2626
import org.apache.arrow.vector.types.pojo.ArrowType;
2727
import org.apache.calcite.avatica.ColumnMetaData;
2828
import org.apache.calcite.avatica.remote.TypedValue;
29+
import org.junit.jupiter.api.AfterEach;
30+
import org.junit.jupiter.api.BeforeEach;
2931
import org.junit.jupiter.api.Test;
3032

3133
public class TimestampAvaticaParameterConverterTest {
34+
private BufferAllocator allocator;
35+
36+
@BeforeEach
37+
void setUp() {
38+
allocator = new RootAllocator(Long.MAX_VALUE);
39+
}
40+
41+
@AfterEach
42+
void tearDown() {
43+
allocator.close();
44+
}
3245

3346
@Test
3447
void testBindIsoStringToMilliVector() {
35-
BufferAllocator allocator = new RootAllocator(Long.MAX_VALUE);
3648
TimeStampMilliVector vector = new TimeStampMilliVector("ts", allocator);
3749
vector.allocateNew();
3850
TimestampAvaticaParameterConverter converter =
@@ -41,11 +53,11 @@ void testBindIsoStringToMilliVector() {
4153
TypedValue typedValue = TypedValue.create(ColumnMetaData.Rep.STRING.toString(), isoString);
4254
assertTrue(converter.bindParameter(vector, typedValue, 0));
4355
assertEquals(Instant.parse(isoString).toEpochMilli(), vector.get(0));
56+
vector.close();
4457
}
4558

4659
@Test
4760
void testBindLongToMilliVector() {
48-
BufferAllocator allocator = new RootAllocator(Long.MAX_VALUE);
4961
TimeStampMilliVector vector = new TimeStampMilliVector("ts", allocator);
5062
vector.allocateNew();
5163
TimestampAvaticaParameterConverter converter =
@@ -54,16 +66,17 @@ void testBindLongToMilliVector() {
5466
TypedValue typedValue = TypedValue.create(ColumnMetaData.Rep.LONG.toString(), millis);
5567
assertTrue(converter.bindParameter(vector, typedValue, 0));
5668
assertEquals(millis, vector.get(0));
69+
vector.close();
5770
}
5871

5972
@Test
6073
void testUnsupportedValueType() {
61-
BufferAllocator allocator = new RootAllocator(Long.MAX_VALUE);
6274
TimeStampMilliVector vector = new TimeStampMilliVector("ts", allocator);
6375
vector.allocateNew();
6476
TimestampAvaticaParameterConverter converter =
6577
new TimestampAvaticaParameterConverter(new ArrowType.Timestamp(TimeUnit.MILLISECOND, null));
6678
TypedValue typedValue = TypedValue.create(ColumnMetaData.Rep.DOUBLE.toString(), 3.14);
6779
assertFalse(converter.bindParameter(vector, typedValue, 0));
80+
vector.close();
6881
}
6982
}

0 commit comments

Comments
 (0)