Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.1.24
-
None
-
centOS7 on Google Compute Engine
Description
When using CONNECT engine with table_type=JDBC and CATFUNC=TABLES and the official Microsoft JDBC driver (latest v6 for jre 8 environment) the list of tables comes back (there are multiple rows) but all the table names are blank.
The test case:
CREATE OR REPLACE TABLE parasql_connect_tables
|
ENGINE=CONNECT
|
TABLE_TYPE=JDBC
|
CATFUNC=TABLES
|
CONNECTION='jdbc:sqlserver://parasqleu.database.windows.net:1433;databaseName=ParaSQL;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=15;' |
OPTION_LIST='USER=parasqleu,PASSWORD=WillProvidePassInPrivateMessage,MEMORY=3,DRIVER=com.microsoft.sqlserver.jdbc.SQLServerDriver' |
QUOTED=1 |
|
select * from parasql_connect_tables
|
|
[results below are tab separated, only Table_Type is not blank]
|
|
Table_Cat Table_Schema Table_Name Table_Type Remark
|
TABLE
|
TABLE
|
TABLE
|
VIEW
|
VIEW
|
And similar for CATFUNC=COLUMNS if I manually specify a valid table on the remote server:
CREATE OR REPLACE TABLE parasql_connect_columns
|
ENGINE=CONNECT
|
TABLE_TYPE=JDBC
|
CATFUNC=COLUMNS
|
TABNAME='customerNew' |
CONNECTION='jdbc:sqlserver://parasqleu.database.windows.net:1433;databaseName=ParaSQL;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=15;' |
OPTION_LIST='USER=parasqleu,PASSWORD=WillProvidePassInPrivateMessage,MEMORY=3' |
QUOTED=1 |
select * from parasql_connect_columns
|
|
[results below, Data_Type etc are filled in but the first 4 columns are not]
|
|
Table_Cat Table_Schema Table_Name Column_Name Data_Type Type_Name Column_Size Buffer_Length Decimal_Digits Radix Nullable Remarks
|
4 10 4 0 10 1
|
12 30 30 0 0 1
|
91 10 6 0 0 1
|
93 23 16 3 0 1
|
|
The latest Microsoft JDBC driver can be downloaded here:
https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774
NOTE: To ease testing, I can provide the password for the above Microsoft server in a private message so you don't have to set up an environment to test.
Thank you.
I've created a simple java command line program that you can compile and test - it produces the CORRECT output, so something must be strange with how CONNECT is doing it.
DatabaseMetaData meta = con.getMetaData();
System.out.println(
}
res.close();
con.close();
e.printStackTrace();
}
}
}
complile:
javac ListTables.java
run:
java -cp .:/path/to/sqljdbc42.jar ListTables
produces out like this (CORRECT):
List of tables:
test6, dbo, rob_test, TABLE, null
test6, dbo, rob_test_vendor, TABLE, null
test6, sys, trace_xe_action_map, TABLE, null
test6, sys, trace_xe_event_map, TABLE, null
test6, INFORMATION_SCHEMA, CHECK_CONSTRAINTS, VIEW, null
For some reason in CONNECT, the first 3 columns are blank.