getTables() for existing connectors (Dantong Dong reviewed Naveen Gangam)This is an automated email from the ASF dual-hosted git repository.
ngangam pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 2639508 HIVE-25213: Implement List<Table> getTables() for existing connectors (Dantong Dong reviewed Naveen Gangam)
2639508 is described below
commit 26395083bfd3516678719eeea25ba82647d71e01
Author: Dantong Dong <da...@cloudera.com>
AuthorDate: Tue Jun 8 18:33:44 2021 -0700
HIVE-25213: Implement List<Table> getTables() for existing connectors (Dantong Dong reviewed Naveen Gangam)
---
.../README_DO_NOT_TOUCH_FILES.txt | 9 ++
.../log/README_DO_NOT_TOUCH_FILES.txt | 8 ++
.../db_for_connectortest.db/log/log.ctrl | Bin 0 -> 48 bytes
.../db_for_connectortest.db/log/log1.dat | Bin 0 -> 1048576 bytes
.../db_for_connectortest.db/log/log2.dat | Bin 0 -> 1048576 bytes
.../db_for_connectortest.db/log/logmirror.ctrl | Bin 0 -> 48 bytes
.../seg0/README_DO_NOT_TOUCH_FILES.txt | 8 ++
.../db_for_connectortest.db/seg0/c10.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c101.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c111.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c121.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c130.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c141.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c150.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c161.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c171.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c180.dat | Bin 0 -> 36864 bytes
.../db_for_connectortest.db/seg0/c191.dat | Bin 0 -> 16384 bytes
.../db_for_connectortest.db/seg0/c1a1.dat | Bin 0 -> 16384 bytes
.../db_for_connectortest.db/seg0/c1b1.dat | Bin 0 -> 16384 bytes
.../db_for_connectortest.db/seg0/c1c0.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c1d1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c1e0.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c1f1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c20.dat | Bin 0 -> 28672 bytes
.../db_for_connectortest.db/seg0/c200.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c211.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c221.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c230.dat | Bin 0 -> 147456 bytes
.../db_for_connectortest.db/seg0/c241.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c251.dat | Bin 0 -> 20480 bytes
.../db_for_connectortest.db/seg0/c260.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c271.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c281.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c290.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c2a1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c2b1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c2c1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c2d0.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c2e1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c2f0.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c300.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c31.dat | Bin 0 -> 16384 bytes
.../db_for_connectortest.db/seg0/c311.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c321.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c331.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c340.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c351.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c361.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c371.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c380.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c391.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c3a1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c3b1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c3c0.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c3d1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c3e1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c3f1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c400.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c41.dat | Bin 0 -> 16384 bytes
.../db_for_connectortest.db/seg0/c411.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c421.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c430.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c441.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c451.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c461.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c470.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c481.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c490.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c4a0.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c51.dat | Bin 0 -> 16384 bytes
.../db_for_connectortest.db/seg0/c60.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c71.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c81.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/c90.dat | Bin 0 -> 24576 bytes
.../db_for_connectortest.db/seg0/ca1.dat | Bin 0 -> 28672 bytes
.../db_for_connectortest.db/seg0/cb1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/cc0.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/cd1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/ce1.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/seg0/cf0.dat | Bin 0 -> 8192 bytes
.../db_for_connectortest.db/service.properties | 23 +++
itests/pom.xml | 15 ++
ql/src/test/queries/clientpositive/dataconnector.q | 3 +-
.../clientpositive/llap/dataconnector.q.out | 6 +-
.../apache/hadoop/hive/metastore/HMSHandler.java | 37 +++++
.../jdbc/AbstractJDBCConnectorProvider.java | 160 +++++++++++++--------
.../jdbc/DerbySQLConnectorProvider.java | 11 --
.../dataconnector/jdbc/MySQLConnectorProvider.java | 11 --
.../jdbc/PostgreSQLConnectorProvider.java | 10 --
90 files changed, 203 insertions(+), 98 deletions(-)
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/README_DO_NOT_TOUCH_FILES.txt b/data/files/dataconnector_derbydb/db_for_connectortest.db/README_DO_NOT_TOUCH_FILES.txt
new file mode 100644
index 0000000..a4bc145
--- /dev/null
+++ b/data/files/dataconnector_derbydb/db_for_connectortest.db/README_DO_NOT_TOUCH_FILES.txt
@@ -0,0 +1,9 @@
+
+# *************************************************************************
+# *** DO NOT TOUCH FILES IN THIS DIRECTORY! ***
+# *** FILES IN THIS DIRECTORY AND SUBDIRECTORIES CONSTITUTE A DERBY ***
+# *** DATABASE, WHICH INCLUDES THE DATA (USER AND SYSTEM) AND THE ***
+# *** FILES NECESSARY FOR DATABASE RECOVERY. ***
+# *** EDITING, ADDING, OR DELETING ANY OF THESE FILES MAY CAUSE DATA ***
+# *** CORRUPTION AND LEAVE THE DATABASE IN A NON-RECOVERABLE STATE. ***
+# *************************************************************************
\ No newline at end of file
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/log/README_DO_NOT_TOUCH_FILES.txt b/data/files/dataconnector_derbydb/db_for_connectortest.db/log/README_DO_NOT_TOUCH_FILES.txt
new file mode 100644
index 0000000..56df292
--- /dev/null
+++ b/data/files/dataconnector_derbydb/db_for_connectortest.db/log/README_DO_NOT_TOUCH_FILES.txt
@@ -0,0 +1,8 @@
+
+# *************************************************************************
+# *** DO NOT TOUCH FILES IN THIS DIRECTORY! ***
+# *** FILES IN THIS DIRECTORY ARE USED BY THE DERBY DATABASE RECOVERY ***
+# *** SYSTEM. EDITING, ADDING, OR DELETING FILES IN THIS DIRECTORY ***
+# *** WILL CAUSE THE DERBY RECOVERY SYSTEM TO FAIL, LEADING TO ***
+# *** NON-RECOVERABLE CORRUPT DATABASES. ***
+# *************************************************************************
\ No newline at end of file
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/log/log.ctrl b/data/files/dataconnector_derbydb/db_for_connectortest.db/log/log.ctrl
new file mode 100644
index 0000000..7297085
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/log/log.ctrl differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/log/log1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/log/log1.dat
new file mode 100644
index 0000000..90e9f35
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/log/log1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/log/log2.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/log/log2.dat
new file mode 100644
index 0000000..5b71eab
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/log/log2.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/log/logmirror.ctrl b/data/files/dataconnector_derbydb/db_for_connectortest.db/log/logmirror.ctrl
new file mode 100644
index 0000000..7297085
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/log/logmirror.ctrl differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/README_DO_NOT_TOUCH_FILES.txt b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/README_DO_NOT_TOUCH_FILES.txt
new file mode 100644
index 0000000..2bdad06
--- /dev/null
+++ b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/README_DO_NOT_TOUCH_FILES.txt
@@ -0,0 +1,8 @@
+
+# *************************************************************************
+# *** DO NOT TOUCH FILES IN THIS DIRECTORY! ***
+# *** FILES IN THIS DIRECTORY ARE USED BY THE DERBY DATABASE TO STORE ***
+# *** USER AND SYSTEM DATA. EDITING, ADDING, OR DELETING FILES IN THIS ***
+# *** DIRECTORY WILL CORRUPT THE ASSOCIATED DERBY DATABASE AND MAKE ***
+# *** IT NON-RECOVERABLE. ***
+# *************************************************************************
\ No newline at end of file
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c10.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c10.dat
new file mode 100644
index 0000000..58fdae2
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c10.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c101.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c101.dat
new file mode 100644
index 0000000..1118178
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c101.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c111.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c111.dat
new file mode 100644
index 0000000..71b1f8d
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c111.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c121.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c121.dat
new file mode 100644
index 0000000..fbf18b9
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c121.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c130.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c130.dat
new file mode 100644
index 0000000..7b2a654
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c130.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c141.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c141.dat
new file mode 100644
index 0000000..3d983c2
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c141.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c150.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c150.dat
new file mode 100644
index 0000000..e2ea576
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c150.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c161.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c161.dat
new file mode 100644
index 0000000..90960e6
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c161.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c171.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c171.dat
new file mode 100644
index 0000000..55d4095
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c171.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c180.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c180.dat
new file mode 100644
index 0000000..53bd1eb
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c180.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c191.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c191.dat
new file mode 100644
index 0000000..aa25052
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c191.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1a1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1a1.dat
new file mode 100644
index 0000000..9d14471
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1a1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1b1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1b1.dat
new file mode 100644
index 0000000..ae562fb
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1b1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1c0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1c0.dat
new file mode 100644
index 0000000..c5b91e2
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1c0.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1d1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1d1.dat
new file mode 100644
index 0000000..451f02f
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1d1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1e0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1e0.dat
new file mode 100644
index 0000000..761408d
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1e0.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1f1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1f1.dat
new file mode 100644
index 0000000..78d701f
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c1f1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c20.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c20.dat
new file mode 100644
index 0000000..ae1bbe94
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c20.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c200.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c200.dat
new file mode 100644
index 0000000..c3a7808
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c200.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c211.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c211.dat
new file mode 100644
index 0000000..54e1586
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c211.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c221.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c221.dat
new file mode 100644
index 0000000..59900bc
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c221.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c230.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c230.dat
new file mode 100644
index 0000000..16b2db8
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c230.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c241.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c241.dat
new file mode 100644
index 0000000..3d5e31d
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c241.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c251.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c251.dat
new file mode 100644
index 0000000..4b963f1
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c251.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c260.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c260.dat
new file mode 100644
index 0000000..25f81fd
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c260.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c271.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c271.dat
new file mode 100644
index 0000000..51cde57
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c271.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c281.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c281.dat
new file mode 100644
index 0000000..cfed875
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c281.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c290.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c290.dat
new file mode 100644
index 0000000..4d10db4
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c290.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2a1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2a1.dat
new file mode 100644
index 0000000..8e2ed6a
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2a1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2b1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2b1.dat
new file mode 100644
index 0000000..2a29692
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2b1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2c1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2c1.dat
new file mode 100644
index 0000000..5511575
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2c1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2d0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2d0.dat
new file mode 100644
index 0000000..4adc6e4
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2d0.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2e1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2e1.dat
new file mode 100644
index 0000000..b37b9b2
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2e1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2f0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2f0.dat
new file mode 100644
index 0000000..d854b4b
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c2f0.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c300.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c300.dat
new file mode 100644
index 0000000..2053e01
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c300.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c31.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c31.dat
new file mode 100644
index 0000000..f8c4ecf
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c31.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c311.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c311.dat
new file mode 100644
index 0000000..f60c260
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c311.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c321.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c321.dat
new file mode 100644
index 0000000..a9d7453
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c321.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c331.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c331.dat
new file mode 100644
index 0000000..85ee72b
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c331.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c340.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c340.dat
new file mode 100644
index 0000000..d99b11a
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c340.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c351.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c351.dat
new file mode 100644
index 0000000..f822f4c
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c351.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c361.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c361.dat
new file mode 100644
index 0000000..b5c8f25
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c361.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c371.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c371.dat
new file mode 100644
index 0000000..ad11f01
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c371.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c380.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c380.dat
new file mode 100644
index 0000000..3f593e1
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c380.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c391.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c391.dat
new file mode 100644
index 0000000..dee460e
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c391.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3a1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3a1.dat
new file mode 100644
index 0000000..3790bd8
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3a1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3b1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3b1.dat
new file mode 100644
index 0000000..2ce6c70
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3b1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3c0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3c0.dat
new file mode 100644
index 0000000..4d061cf
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3c0.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3d1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3d1.dat
new file mode 100644
index 0000000..45c9fa2
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3d1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3e1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3e1.dat
new file mode 100644
index 0000000..48f53e6
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3e1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3f1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3f1.dat
new file mode 100644
index 0000000..08acdce
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c3f1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c400.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c400.dat
new file mode 100644
index 0000000..1e8976f
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c400.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c41.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c41.dat
new file mode 100644
index 0000000..e1d102a
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c41.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c411.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c411.dat
new file mode 100644
index 0000000..8aba2fb
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c411.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c421.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c421.dat
new file mode 100644
index 0000000..65775ee
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c421.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c430.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c430.dat
new file mode 100644
index 0000000..55c948d
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c430.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c441.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c441.dat
new file mode 100644
index 0000000..3948b2a
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c441.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c451.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c451.dat
new file mode 100644
index 0000000..fe1ab73
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c451.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c461.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c461.dat
new file mode 100644
index 0000000..e6d9854
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c461.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c470.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c470.dat
new file mode 100644
index 0000000..c9f2eb1
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c470.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c481.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c481.dat
new file mode 100644
index 0000000..397b291
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c481.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c490.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c490.dat
new file mode 100644
index 0000000..6b1f5d8
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c490.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c4a0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c4a0.dat
new file mode 100644
index 0000000..6b1f5d8
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c4a0.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c51.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c51.dat
new file mode 100644
index 0000000..0c8c56c
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c51.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c60.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c60.dat
new file mode 100644
index 0000000..7efed3a
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c60.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c71.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c71.dat
new file mode 100644
index 0000000..c0b1303
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c71.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c81.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c81.dat
new file mode 100644
index 0000000..799f896
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c81.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c90.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c90.dat
new file mode 100644
index 0000000..a49c8a0
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/c90.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/ca1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/ca1.dat
new file mode 100644
index 0000000..07f4c4c
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/ca1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cb1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cb1.dat
new file mode 100644
index 0000000..e26dcac
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cb1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cc0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cc0.dat
new file mode 100644
index 0000000..2268720
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cc0.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cd1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cd1.dat
new file mode 100644
index 0000000..d919a1b
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cd1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/ce1.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/ce1.dat
new file mode 100644
index 0000000..299e0c4
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/ce1.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cf0.dat b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cf0.dat
new file mode 100644
index 0000000..fb40ee4
Binary files /dev/null and b/data/files/dataconnector_derbydb/db_for_connectortest.db/seg0/cf0.dat differ
diff --git a/data/files/dataconnector_derbydb/db_for_connectortest.db/service.properties b/data/files/dataconnector_derbydb/db_for_connectortest.db/service.properties
new file mode 100644
index 0000000..16ecc5e
--- /dev/null
+++ b/data/files/dataconnector_derbydb/db_for_connectortest.db/service.properties
@@ -0,0 +1,23 @@
+#/private/tmp/db_for_connectortest.db
+# ********************************************************************
+# *** Please do NOT edit this file. ***
+# *** CHANGING THE CONTENT OF THIS FILE MAY CAUSE DATA CORRUPTION. ***
+# ********************************************************************
+#Tue Jun 08 12:05:32 PDT 2021
+SysschemasIndex2Identifier=225
+SyscolumnsIdentifier=144
+SysconglomeratesIndex1Identifier=49
+SysconglomeratesIdentifier=32
+SyscolumnsIndex2Identifier=177
+SysschemasIndex1Identifier=209
+SysconglomeratesIndex3Identifier=81
+SystablesIndex2Identifier=129
+SyscolumnsIndex1Identifier=161
+derby.serviceProtocol=org.apache.derby.database.Database
+SysschemasIdentifier=192
+derby.storage.propertiesId=16
+SysconglomeratesIndex2Identifier=65
+derby.serviceLocale=en_US
+SystablesIdentifier=96
+SystablesIndex1Identifier=113
+#--- last line, don't put anything after this line ---
diff --git a/itests/pom.xml b/itests/pom.xml
index 8dad7a3..6d4584a 100644
--- a/itests/pom.xml
+++ b/itests/pom.xml
@@ -511,6 +511,7 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
+
<execution>
<id>validate testconfiguration.properties</id>
<phase>generate-sources</phase>
@@ -526,6 +527,20 @@
</target>
</configuration>
</execution>
+ <execution>
+ <id>copy-database</id>
+ <phase>install</phase>
+ <configuration>
+ <tasks>
+ <copy todir="${hive.path.to.root}/itests/qtest/target/db_for_connectortest.db">
+ <fileset dir="${hive.path.to.root}/data/files/dataconnector_derbydb/db_for_connectortest.db" />
+ </copy>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
</executions>
</plugin>
</plugins>
diff --git a/ql/src/test/queries/clientpositive/dataconnector.q b/ql/src/test/queries/clientpositive/dataconnector.q
index a89c7db..9a23cf4 100644
--- a/ql/src/test/queries/clientpositive/dataconnector.q
+++ b/ql/src/test/queries/clientpositive/dataconnector.q
@@ -24,7 +24,7 @@ SHOW CONNECTORS;
-- CREATE IF NOT EXISTS already
CREATE CONNECTOR IF NOT EXISTS derby_test
TYPE 'derby'
-URL 'jdbc:derby:./target/tmp/junit_metastore_db;create=true'
+URL 'jdbc:derby:./target/db_for_connectortest.db;create=true'
COMMENT 'test derby connector'
WITH DCPROPERTIES (
"hive.sql.dbcp.username"="APP",
@@ -65,6 +65,7 @@ DESCRIBE CONNECTOR extended mysql_test;
alter connector mysql_test set OWNER USER newuser;
DESCRIBE CONNECTOR extended mysql_test;
+-- drop remote database and connector
DROP DATABASE db_derby;
SHOW DATABASES;
DROP CONNECTOR mysql_test;
diff --git a/ql/src/test/results/clientpositive/llap/dataconnector.q.out b/ql/src/test/results/clientpositive/llap/dataconnector.q.out
index 8b678c2..f37935d 100644
--- a/ql/src/test/results/clientpositive/llap/dataconnector.q.out
+++ b/ql/src/test/results/clientpositive/llap/dataconnector.q.out
@@ -50,7 +50,7 @@ POSTHOOK: type: SHOWDATACONNECTORS
mysql_test
PREHOOK: query: CREATE CONNECTOR IF NOT EXISTS derby_test
TYPE 'derby'
-#### A masked pattern was here ####
+URL 'jdbc:derby:./target/db_for_connectortest.db;create=true'
COMMENT 'test derby connector'
WITH DCPROPERTIES (
"hive.sql.dbcp.username"="APP",
@@ -59,7 +59,7 @@ PREHOOK: type: CREATEDATACONNECTOR
PREHOOK: Output: connector:derby_test
POSTHOOK: query: CREATE CONNECTOR IF NOT EXISTS derby_test
TYPE 'derby'
-#### A masked pattern was here ####
+URL 'jdbc:derby:./target/db_for_connectortest.db;create=true'
COMMENT 'test derby connector'
WITH DCPROPERTIES (
"hive.sql.dbcp.username"="APP",
@@ -138,6 +138,8 @@ PREHOOK: Input: database:db_derby
POSTHOOK: query: SHOW TABLES
POSTHOOK: type: SHOWTABLES
POSTHOOK: Input: database:db_derby
+TESTTABLE1
+TESTTABLE2
PREHOOK: query: alter connector mysql_test set URL 'jdbc:mysql://nightly1.apache.org:3306/hive2'
PREHOOK: type: ALTERDATACONNECTOR_
PREHOOK: Output: connector:mysql_test
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java
index 88d34e5..81e6e9e 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java
@@ -3719,10 +3719,47 @@ public class HMSHandler extends FacebookBase implements IHMSHandler {
@Override
public GetTablesResult get_table_objects_by_name_req(GetTablesRequest req) throws TException {
String catName = req.isSetCatName() ? req.getCatName() : getDefaultCatalog(conf);
+ if (isDatabaseRemote(req.getDbName())) {
+ return new GetTablesResult(getRemoteTableObjectsInternal(req.getDbName(), req.getTblNames(), req.getTablesPattern()));
+ }
return new GetTablesResult(getTableObjectsInternal(catName, req.getDbName(),
req.getTblNames(), req.getCapabilities(), req.getProjectionSpec(), req.getTablesPattern()));
}
+ private List<Table> filterTablesByName(List<Table> tables, List<String> tableNames) {
+ List<Table> filteredTables = new ArrayList<>();
+ for (Table table : tables) {
+ if (tableNames.contains(table.getTableName())) {
+ filteredTables.add(table);
+ }
+ }
+ return filteredTables;
+ }
+
+ private List<Table> getRemoteTableObjectsInternal(String dbname, List<String> tableNames, String pattern) throws MetaException {
+ String[] parsedDbName = parseDbName(dbname, conf);
+ try {
+ // retrieve tables from remote database
+ Database db = get_database_core(parsedDbName[CAT_NAME], parsedDbName[DB_NAME]);
+ List<Table> tables = DataConnectorProviderFactory.getDataConnectorProvider(db).getTables(null);
+
+ // filtered out undesired tables
+ if (tableNames != null) {
+ tables = filterTablesByName(tables, tableNames);
+ }
+
+ // set remote tables' local hive database reference
+ for (Table table : tables) {
+ table.setDbName(dbname);
+ }
+
+ return FilterUtils.filterTablesIfEnabled(isServerFilterEnabled, filterHook, tables);
+ } catch (Exception e) {
+ LOG.warn("Unexpected exception while getting table(s) in remote database " + dbname , e);
+ return new ArrayList<Table>();
+ }
+ }
+
private List<Table> getTableObjectsInternal(String catName, String dbName,
List<String> tableNames,
ClientCapabilities capabilities,
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/AbstractJDBCConnectorProvider.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/AbstractJDBCConnectorProvider.java
index 35fda41..c06365e 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/AbstractJDBCConnectorProvider.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/AbstractJDBCConnectorProvider.java
@@ -53,7 +53,6 @@ public abstract class AbstractJDBCConnectorProvider extends AbstractDataConnecto
private static final String JDBC_OUTPUTFORMAT_CLASS = "org.apache.hive.storage.jdbc.JdbcOutputFormat".intern();
String type = null; // MYSQL, POSTGRES, ORACLE, DERBY, MSSQL, DB2 etc.
- String driverClassName = null;
String jdbcUrl = null;
String username = null;
String password = null; // TODO convert to byte array
@@ -129,7 +128,32 @@ public abstract class AbstractJDBCConnectorProvider extends AbstractDataConnecto
* @throws MetaException To indicate any failures with executing this API
* @param regex
*/
- @Override public abstract List<Table> getTables(String regex) throws MetaException;
+ @Override public List<Table> getTables(String regex) throws MetaException {
+ ResultSet rs = null;
+ try {
+ rs = fetchTablesViaDBMetaData(regex);
+ if (rs != null) {
+ List<Table> tables = new ArrayList<Table>();
+ while(rs.next()) {
+ try {
+ tables.add(getTable(rs.getString(3)));
+ } catch (MetaException e) { /* IGNORE */ }
+ }
+ return tables;
+ }
+ } catch (SQLException sqle) {
+ LOG.warn("Could not retrieve tables from remote datasource, cause:" + sqle.getMessage());
+ throw new MetaException("Error retrieving remote table:" + sqle);
+ } finally {
+ try {
+ if (rs != null) {
+ rs.close();
+ rs = null;
+ }
+ } catch(Exception e) { /* ignore */}
+ }
+ return null;
+ }
/**
* Returns a list of all table names from the remote database.
@@ -139,7 +163,7 @@ public abstract class AbstractJDBCConnectorProvider extends AbstractDataConnecto
@Override public List<String> getTableNames() throws MetaException {
ResultSet rs = null;
try {
- rs = getConnection().getMetaData().getTables(scoped_db, null, null, new String[] { "TABLE" });
+ rs = fetchTablesViaDBMetaData(null);
if (rs != null) {
List<String> tables = new ArrayList<String>();
while(rs.next()) {
@@ -175,8 +199,7 @@ public abstract class AbstractJDBCConnectorProvider extends AbstractDataConnecto
ResultSet rs = null;
Table table = null;
try {
- // rs = fetchTableMetadata(tableName);
- rs = fetchTableViaDBMetaData(tableName);
+ rs = fetchColumnsViaDBMetaData(tableName);
List<FieldSchema> cols = new ArrayList<>();
while (rs.next()) {
FieldSchema fs = new FieldSchema();
@@ -219,12 +242,23 @@ public abstract class AbstractJDBCConnectorProvider extends AbstractDataConnecto
}
}
- private ResultSet fetchTableViaDBMetaData(String tableName) throws SQLException {
+ private ResultSet fetchTablesViaDBMetaData(String regex) throws SQLException {
+ ResultSet rs = null;
+ try {
+ rs = getConnection().getMetaData().getTables(scoped_db, null, regex, new String[] { "TABLE" });
+ } catch (SQLException sqle) {
+ LOG.warn("Could not retrieve tables from JDBC table, cause:" + sqle.getMessage());
+ throw sqle;
+ }
+ return rs;
+ }
+
+ private ResultSet fetchColumnsViaDBMetaData(String tableName) throws SQLException {
ResultSet rs = null;
try {
rs = getConnection().getMetaData().getColumns(scoped_db, null, tableName, null);
} catch (SQLException sqle) {
- LOG.warn("Could not retrieve column names from JDBC table, cause:" + sqle.getMessage());
+ LOG.warn("Could not retrieve columns from JDBC table, cause:" + sqle.getMessage());
throw sqle;
}
return rs;
@@ -238,62 +272,62 @@ public abstract class AbstractJDBCConnectorProvider extends AbstractDataConnecto
protected String getDataType(String mySqlType, int size) {
switch(mySqlType.toLowerCase())
{
- case "char":
- return ColumnType.CHAR_TYPE_NAME + wrapSize(size);
- case "varchar":
- case "tinytext":
- return ColumnType.VARCHAR_TYPE_NAME + wrapSize(size);
- case "text":
- case "mediumtext":
- case "enum":
- case "set":
- case "tsvector":
- case "tsquery":
- case "uuid":
- case "json":
- return ColumnType.STRING_TYPE_NAME;
- case "blob":
- case "mediumblob":
- case "longblob":
- case "bytea":
- return ColumnType.BINARY_TYPE_NAME;
- case "tinyint":
- return ColumnType.TINYINT_TYPE_NAME;
- case "smallint":
- case "smallserial":
- return ColumnType.SMALLINT_TYPE_NAME;
- case "mediumint":
- case "int":
- case "serial":
- return ColumnType.INT_TYPE_NAME;
- case "bigint":
- case "bigserial":
- case "money":
- return ColumnType.BIGINT_TYPE_NAME;
- case "float":
- case "real":
- return ColumnType.FLOAT_TYPE_NAME;
- case "double":
- case "double precision":
- return ColumnType.DOUBLE_TYPE_NAME;
- case "decimal":
- case "numeric":
- return ColumnType.DECIMAL_TYPE_NAME;
- case "date":
- return ColumnType.DATE_TYPE_NAME;
- case "datetime":
- return ColumnType.DATETIME_TYPE_NAME;
- case "timestamp":
- case "time":
- case "interval":
- return ColumnType.TIMESTAMP_TYPE_NAME;
- case "timestampz":
- case "timez":
- return ColumnType.TIMESTAMPTZ_TYPE_NAME;
- case "boolean":
- return ColumnType.BOOLEAN_TYPE_NAME;
- default:
- return ColumnType.VOID_TYPE_NAME;
+ case "char":
+ return ColumnType.CHAR_TYPE_NAME + wrapSize(size);
+ case "varchar":
+ case "tinytext":
+ return ColumnType.VARCHAR_TYPE_NAME + wrapSize(size);
+ case "text":
+ case "mediumtext":
+ case "enum":
+ case "set":
+ case "tsvector":
+ case "tsquery":
+ case "uuid":
+ case "json":
+ return ColumnType.STRING_TYPE_NAME;
+ case "blob":
+ case "mediumblob":
+ case "longblob":
+ case "bytea":
+ return ColumnType.BINARY_TYPE_NAME;
+ case "tinyint":
+ return ColumnType.TINYINT_TYPE_NAME;
+ case "smallint":
+ case "smallserial":
+ return ColumnType.SMALLINT_TYPE_NAME;
+ case "mediumint":
+ case "int":
+ case "serial":
+ return ColumnType.INT_TYPE_NAME;
+ case "bigint":
+ case "bigserial":
+ case "money":
+ return ColumnType.BIGINT_TYPE_NAME;
+ case "float":
+ case "real":
+ return ColumnType.FLOAT_TYPE_NAME;
+ case "double":
+ case "double precision":
+ return ColumnType.DOUBLE_TYPE_NAME;
+ case "decimal":
+ case "numeric":
+ return ColumnType.DECIMAL_TYPE_NAME;
+ case "date":
+ return ColumnType.DATE_TYPE_NAME;
+ case "datetime":
+ return ColumnType.DATETIME_TYPE_NAME;
+ case "timestamp":
+ case "time":
+ case "interval":
+ return ColumnType.TIMESTAMP_TYPE_NAME;
+ case "timestampz":
+ case "timez":
+ return ColumnType.TIMESTAMPTZ_TYPE_NAME;
+ case "boolean":
+ return ColumnType.BOOLEAN_TYPE_NAME;
+ default:
+ return ColumnType.VOID_TYPE_NAME;
}
}
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/DerbySQLConnectorProvider.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/DerbySQLConnectorProvider.java
index 21c2887..c44bd89 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/DerbySQLConnectorProvider.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/DerbySQLConnectorProvider.java
@@ -50,17 +50,6 @@ public class DerbySQLConnectorProvider extends AbstractJDBCConnectorProvider {
return null;
}
- /**
- * Returns Hive Table objects from the remote database for tables that match a name pattern.
- * @return List A collection of objects that match the name pattern, null otherwise.
- * @throws MetaException To indicate any failures with executing this API
- * @param regex
- */
- @Override
- public List<Table> getTables(String regex) throws MetaException {
- return null;
- }
-
protected String getDataType(String dbDataType, int size) {
String mappedType = super.getDataType(dbDataType, size);
if (!mappedType.equalsIgnoreCase(ColumnType.VOID_TYPE_NAME)) {
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/MySQLConnectorProvider.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/MySQLConnectorProvider.java
index da89116..15516b8 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/MySQLConnectorProvider.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/MySQLConnectorProvider.java
@@ -38,17 +38,6 @@ public class MySQLConnectorProvider extends AbstractJDBCConnectorProvider {
}
/**
- * Returns Hive Table objects from the remote database for tables that match a name pattern.
- * @return List A collection of objects that match the name pattern, null otherwise.
- * @throws MetaException To indicate any failures with executing this API
- * @param regex
- */
- @Override public List<Table> getTables(String regex) throws MetaException {
- LOG.info("getTables() not implemented yet");
- return null;
- }
-
- /**
* Fetch a single table with the given name, returns a Hive Table object from the remote database
* @return Table A Table object for the matching table, null otherwise.
* @throws MetaException To indicate any failures with executing this API
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/PostgreSQLConnectorProvider.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/PostgreSQLConnectorProvider.java
index 736de46..033ca55 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/PostgreSQLConnectorProvider.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/PostgreSQLConnectorProvider.java
@@ -19,16 +19,6 @@ public class PostgreSQLConnectorProvider extends AbstractJDBCConnectorProvider {
super(dbName, dataConn, DRIVER_CLASS);
}
- /**
- * Returns Hive Table objects from the remote database for tables that match a name pattern.
- * @return List A collection of objects that match the name pattern, null otherwise.
- * @throws MetaException To indicate any failures with executing this API
- * @param regex
- */
- @Override public List<Table> getTables(String regex) throws MetaException {
- return null;
- }
-
@Override protected ResultSet fetchTableMetadata(String tableName) throws MetaException {
ResultSet rs = null;
try {