This is an automated email from the ASF dual-hosted git repository.
lidavidm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 43e66a928e ARROW-17659: [Java] Populate JDBC schema name metadata when
config.shouldIncludeMetadata provided (#14196)
43e66a928e is described below
commit 43e66a928e29a811b0e14f2a2d7ffa9f8290ccbe
Author: Igor Suhorukov <[email protected]>
AuthorDate: Wed Sep 21 23:44:41 2022 +0300
ARROW-17659: [Java] Populate JDBC schema name metadata when
config.shouldIncludeMetadata provided (#14196)
Current implementation include
[catalog,table,column,type](https://github.com/apache/arrow/blob/master/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java#L248)
metadata, but schema metadata field is missing. In terms of PostgreSQL catalog
- is database, schema - namespace inside database, so catalog name is
insufficient for table addressing without schema.
Proposed changes is + metadata.put(Constants.SQL_SCHEMA_KEY,
rsmd.getSchemaName(i));
Authored-by: igor.suhorukov <[email protected]>
Signed-off-by: David Li <[email protected]>
---
.../org/apache/arrow/adapter/jdbc/Constants.java | 1 +
.../arrow/adapter/jdbc/JdbcToArrowUtils.java | 1 +
.../arrow/adapter/jdbc/JdbcToArrowTestHelper.java | 3 +-
.../h2/expectedSchemaWithCommentsAndJdbcMeta.json | 42 ++++++++++++++--------
4 files changed, 31 insertions(+), 16 deletions(-)
diff --git
a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/Constants.java
b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/Constants.java
index aaadacb543..5b01077b17 100644
---
a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/Constants.java
+++
b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/Constants.java
@@ -24,6 +24,7 @@ public class Constants {
private Constants() {}
public static final String SQL_CATALOG_NAME_KEY = "SQL_CATALOG_NAME";
+ public static final String SQL_SCHEMA_NAME_KEY = "SQL_SCHEMA_NAME";
public static final String SQL_TABLE_NAME_KEY = "SQL_TABLE_NAME";
public static final String SQL_COLUMN_NAME_KEY = "SQL_COLUMN_NAME";
public static final String SQL_TYPE_KEY = "SQL_TYPE";
diff --git
a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java
b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java
index 93c6a80c10..dc79f6efff 100644
---
a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java
+++
b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java
@@ -253,6 +253,7 @@ public class JdbcToArrowUtils {
if (config.shouldIncludeMetadata()) {
metadata = new HashMap<>();
metadata.put(Constants.SQL_CATALOG_NAME_KEY, rsmd.getCatalogName(i));
+ metadata.put(Constants.SQL_SCHEMA_NAME_KEY, rsmd.getSchemaName(i));
metadata.put(Constants.SQL_TABLE_NAME_KEY, rsmd.getTableName(i));
metadata.put(Constants.SQL_COLUMN_NAME_KEY, columnName);
metadata.put(Constants.SQL_TYPE_KEY, rsmd.getColumnTypeName(i));
diff --git
a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/JdbcToArrowTestHelper.java
b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/JdbcToArrowTestHelper.java
index 5d1fb2276c..d5f896ba7d 100644
---
a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/JdbcToArrowTestHelper.java
+++
b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/JdbcToArrowTestHelper.java
@@ -324,9 +324,10 @@ public class JdbcToArrowTestHelper {
Map<String, String> metadata = fields.get(i - 1).getMetadata();
assertNotNull(metadata);
- assertEquals(4, metadata.size());
+ assertEquals(5, metadata.size());
assertEquals(rsmd.getCatalogName(i),
metadata.get(Constants.SQL_CATALOG_NAME_KEY));
+ assertEquals(rsmd.getSchemaName(i),
metadata.get(Constants.SQL_SCHEMA_NAME_KEY));
assertEquals(rsmd.getTableName(i),
metadata.get(Constants.SQL_TABLE_NAME_KEY));
assertEquals(rsmd.getColumnLabel(i),
metadata.get(Constants.SQL_COLUMN_NAME_KEY));
assertEquals(rsmd.getColumnTypeName(i),
metadata.get(Constants.SQL_TYPE_KEY));
diff --git
a/java/adapter/jdbc/src/test/resources/h2/expectedSchemaWithCommentsAndJdbcMeta.json
b/java/adapter/jdbc/src/test/resources/h2/expectedSchemaWithCommentsAndJdbcMeta.json
index 967ce0a08e..9b25d635d4 100644
---
a/java/adapter/jdbc/src/test/resources/h2/expectedSchemaWithCommentsAndJdbcMeta.json
+++
b/java/adapter/jdbc/src/test/resources/h2/expectedSchemaWithCommentsAndJdbcMeta.json
@@ -9,11 +9,8 @@
},
"children" : [ ],
"metadata" : [ {
- "value" : "Record identifier",
- "key" : "comment"
- }, {
- "value" : "TABLE1",
- "key" : "SQL_TABLE_NAME"
+ "value" : "PUBLIC",
+ "key" : "SQL_SCHEMA_NAME"
}, {
"value" : "JDBCTOARROWTEST?CHARACTERENCODING=UTF-8",
"key" : "SQL_CATALOG_NAME"
@@ -23,6 +20,12 @@
}, {
"value" : "BIGINT",
"key" : "SQL_TYPE"
+ }, {
+ "value" : "Record identifier",
+ "key" : "comment"
+ }, {
+ "value" : "TABLE1",
+ "key" : "SQL_TABLE_NAME"
} ]
}, {
"name" : "NAME",
@@ -32,11 +35,8 @@
},
"children" : [ ],
"metadata" : [ {
- "value" : "Name of record",
- "key" : "comment"
- }, {
- "value" : "TABLE1",
- "key" : "SQL_TABLE_NAME"
+ "value" : "PUBLIC",
+ "key" : "SQL_SCHEMA_NAME"
}, {
"value" : "JDBCTOARROWTEST?CHARACTERENCODING=UTF-8",
"key" : "SQL_CATALOG_NAME"
@@ -46,6 +46,12 @@
}, {
"value" : "VARCHAR",
"key" : "SQL_TYPE"
+ }, {
+ "value" : "Name of record",
+ "key" : "comment"
+ }, {
+ "value" : "TABLE1",
+ "key" : "SQL_TABLE_NAME"
} ]
}, {
"name" : "COLUMN1",
@@ -55,6 +61,9 @@
},
"children" : [ ],
"metadata" : [ {
+ "value" : "PUBLIC",
+ "key" : "SQL_SCHEMA_NAME"
+ }, {
"value" : "TABLE1",
"key" : "SQL_TABLE_NAME"
}, {
@@ -77,11 +86,8 @@
},
"children" : [ ],
"metadata" : [ {
- "value" : "Informative description of columnN",
- "key" : "comment"
- }, {
- "value" : "TABLE1",
- "key" : "SQL_TABLE_NAME"
+ "value" : "PUBLIC",
+ "key" : "SQL_SCHEMA_NAME"
}, {
"value" : "JDBCTOARROWTEST?CHARACTERENCODING=UTF-8",
"key" : "SQL_CATALOG_NAME"
@@ -91,6 +97,12 @@
}, {
"value" : "INTEGER",
"key" : "SQL_TYPE"
+ }, {
+ "value" : "Informative description of columnN",
+ "key" : "comment"
+ }, {
+ "value" : "TABLE1",
+ "key" : "SQL_TABLE_NAME"
} ]
} ],
"metadata" : [ {