diff --git a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowConfig.java b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowConfig.java
index 52834dd6379ed..5ee65a120b926 100644
--- a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowConfig.java
+++ b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowConfig.java
@@ -82,15 +82,4 @@ public BaseAllocator getAllocator() {
public boolean getIncludeMetadata() {
return includeMetadata;
}
-
- /**
- * Sets whether to include JDBC ResultSet field metadata in the Arrow Schema field metadata.
- *
- * @param includeMetadata Whether to include or exclude JDBC metadata in the Arrow Schema field metadata.
- * @return This instance of the JdbcToArrowConfig
, for chaining.
- */
- public JdbcToArrowConfig setIncludeMetadata(boolean includeMetadata) {
- this.includeMetadata = includeMetadata;
- return this;
- }
}
diff --git a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowConfigBuilder.java b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowConfigBuilder.java
index 8fabff14da7b6..37f23206da4d9 100644
--- a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowConfigBuilder.java
+++ b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowConfigBuilder.java
@@ -29,6 +29,7 @@
public class JdbcToArrowConfigBuilder {
private Calendar calendar;
private BaseAllocator allocator;
+ private boolean includeMetadata;
/**
* Default constructor for the JdbcToArrowConfigBuilder}
.
@@ -38,6 +39,7 @@ public class JdbcToArrowConfigBuilder {
public JdbcToArrowConfigBuilder() {
this.allocator = null;
this.calendar = null;
+ this.includeMetadata = false;
}
/**
@@ -63,6 +65,32 @@ public JdbcToArrowConfigBuilder(BaseAllocator allocator, Calendar calendar) {
this.allocator = allocator;
this.calendar = calendar;
+ this.includeMetadata = false;
+ }
+
+ /**
+ * Constructor for the JdbcToArrowConfigBuilder
. Both the
+ * allocator and calendar are required. A {@link NullPointerException}
+ * will be thrown if either of those arguments is null
.
+ *
+ * The allocator is used to construct Arrow vectors from the JDBC ResultSet. + * The calendar is used to determine the time zone of {@link java.sql.Timestamp} + * fields and convert {@link java.sql.Date}, {@link java.sql.Time}, and + * {@link java.sql.Timestamp} fields to a single, common time zone when reading + * from the result set. + *
+ *
+ * The includeMetadata
argument, if true
will cause
+ * various information about each database field to be added to the Vector
+ * Schema's field metadata.
+ *
JdbcToArrowConfig
, for chaining.
+ */
+ public JdbcToArrowConfigBuilder setIncludeMetadata(boolean includeMetadata) {
+ this.includeMetadata = includeMetadata;
+ return this;
+ }
+
/**
* This builds the {@link JdbcToArrowConfig} from the provided
* {@link BaseAllocator} and {@link Calendar}.
@@ -98,6 +137,6 @@ public JdbcToArrowConfigBuilder setCalendar(Calendar calendar) {
* @throws NullPointerException if either the allocator or calendar was not set.
*/
public JdbcToArrowConfig build() {
- return new JdbcToArrowConfig(allocator, calendar, false);
+ return new JdbcToArrowConfig(allocator, calendar, includeMetadata);
}
}
diff --git a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/JdbcToArrowConfigTest.java b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/JdbcToArrowConfigTest.java
index 89c1b8cd9d01e..a7a2596de01b0 100644
--- a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/JdbcToArrowConfigTest.java
+++ b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/JdbcToArrowConfigTest.java
@@ -93,14 +93,17 @@ public void testConfig() {
}
@Test public void testIncludeMetadata() {
- JdbcToArrowConfig config = new JdbcToArrowConfig(allocator, calendar, false);
+ JdbcToArrowConfigBuilder builder = new JdbcToArrowConfigBuilder(allocator, calendar, false);
+
+ JdbcToArrowConfig config = builder.build();
assertFalse(config.getIncludeMetadata());
- config.setIncludeMetadata(true);
+ builder.setIncludeMetadata(true);
+ config = builder.build();
assertTrue(config.getIncludeMetadata());
- config.setIncludeMetadata(false);
- assertFalse(config.getIncludeMetadata());
+ config = new JdbcToArrowConfigBuilder(allocator, calendar, true).build();
+ assertTrue(config.getIncludeMetadata());
config = new JdbcToArrowConfig(allocator, calendar, true);
assertTrue(config.getIncludeMetadata());
diff --git a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowCharSetTest.java b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowCharSetTest.java
index 30240ae105493..ff31da436792f 100644
--- a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowCharSetTest.java
+++ b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowCharSetTest.java
@@ -133,8 +133,7 @@ public void testJdbcToArroValues() throws SQLException, IOException {
@Test
public void testJdbcSchemaMetadata() throws SQLException {
- JdbcToArrowConfig config = new JdbcToArrowConfigBuilder(new RootAllocator(0), Calendar.getInstance()).build();
- config.setIncludeMetadata(true);
+ JdbcToArrowConfig config = new JdbcToArrowConfigBuilder(new RootAllocator(0), Calendar.getInstance(), true).build();
ResultSetMetaData rsmd = conn.createStatement().executeQuery(table.getQuery()).getMetaData();
Schema schema = JdbcToArrowUtils.jdbcToArrowSchema(rsmd, config);
JdbcToArrowTestHelper.assertFieldMetadataMatchesResultSetMetadata(rsmd, schema);
diff --git a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowDataTypesTest.java b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowDataTypesTest.java
index 1d49bb9eb3db2..a8a1a16dce0da 100644
--- a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowDataTypesTest.java
+++ b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowDataTypesTest.java
@@ -159,8 +159,7 @@ public void testJdbcToArroValues() throws SQLException, IOException {
@Test
public void testJdbcSchemaMetadata() throws SQLException {
- JdbcToArrowConfig config = new JdbcToArrowConfigBuilder(new RootAllocator(0), Calendar.getInstance()).build();
- config.setIncludeMetadata(true);
+ JdbcToArrowConfig config = new JdbcToArrowConfigBuilder(new RootAllocator(0), Calendar.getInstance(), true).build();
ResultSetMetaData rsmd = conn.createStatement().executeQuery(table.getQuery()).getMetaData();
Schema schema = JdbcToArrowUtils.jdbcToArrowSchema(rsmd, config);
JdbcToArrowTestHelper.assertFieldMetadataMatchesResultSetMetadata(rsmd, schema);
diff --git a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowNullTest.java b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowNullTest.java
index 8d99be85b21a4..7ef8c795fa1d9 100644
--- a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowNullTest.java
+++ b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowNullTest.java
@@ -116,8 +116,7 @@ public void testJdbcToArroValues() throws SQLException, IOException {
@Test
public void testJdbcSchemaMetadata() throws SQLException {
- JdbcToArrowConfig config = new JdbcToArrowConfigBuilder(new RootAllocator(0), Calendar.getInstance()).build();
- config.setIncludeMetadata(true);
+ JdbcToArrowConfig config = new JdbcToArrowConfigBuilder(new RootAllocator(0), Calendar.getInstance(), true).build();
ResultSetMetaData rsmd = conn.createStatement().executeQuery(table.getQuery()).getMetaData();
Schema schema = JdbcToArrowUtils.jdbcToArrowSchema(rsmd, config);
JdbcToArrowTestHelper.assertFieldMetadataMatchesResultSetMetadata(rsmd, schema);
diff --git a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTest.java b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTest.java
index 4eee440a9d477..e0011330089e6 100644
--- a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTest.java
+++ b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTest.java
@@ -150,8 +150,7 @@ public void testJdbcToArroValues() throws SQLException, IOException {
@Test
public void testJdbcSchemaMetadata() throws SQLException {
- JdbcToArrowConfig config = new JdbcToArrowConfigBuilder(new RootAllocator(0), Calendar.getInstance()).build();
- config.setIncludeMetadata(true);
+ JdbcToArrowConfig config = new JdbcToArrowConfigBuilder(new RootAllocator(0), Calendar.getInstance(), true).build();
ResultSetMetaData rsmd = conn.createStatement().executeQuery(table.getQuery()).getMetaData();
Schema schema = JdbcToArrowUtils.jdbcToArrowSchema(rsmd, config);
JdbcToArrowTestHelper.assertFieldMetadataMatchesResultSetMetadata(rsmd, schema);
diff --git a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTimeZoneTest.java b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTimeZoneTest.java
index 211aaa8b29aee..8e83d6f7a78e2 100644
--- a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTimeZoneTest.java
+++ b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTimeZoneTest.java
@@ -127,8 +127,7 @@ public void testJdbcToArroValues() throws SQLException, IOException {
@Test
public void testJdbcSchemaMetadata() throws SQLException {
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(table.getTimezone()));
- JdbcToArrowConfig config = new JdbcToArrowConfigBuilder(new RootAllocator(0), calendar).build();
- config.setIncludeMetadata(true);
+ JdbcToArrowConfig config = new JdbcToArrowConfigBuilder(new RootAllocator(0), calendar, true).build();
ResultSetMetaData rsmd = conn.createStatement().executeQuery(table.getQuery()).getMetaData();
Schema schema = JdbcToArrowUtils.jdbcToArrowSchema(rsmd, config);
JdbcToArrowTestHelper.assertFieldMetadataMatchesResultSetMetadata(rsmd, schema);