[ 
https://issues.apache.org/jira/browse/IMPALA-12470?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17778004#comment-17778004
 ] 

Wenzhe Zhou edited comment on IMPALA-12470 at 10/21/23 5:35 PM:
----------------------------------------------------------------

For 
query_test.test_ext_data_sources.TestExtDataSources.test_verify_jdbc_table_properties,
 expected jdbc jar url on S3 is:
s3a://impala-test-uswest2-2/test-warehouse/data-sources/jdbc-data-source.jar
{code:java}
query_test/test_ext_data_sources.py:70: in test_verify_jdbc_table_properties
    assert properties['__IMPALA_DATA_SOURCE_LOCATION'] == \
E   assert 's3a://impala...ta-source.jar' == 'hdfs://localh...ta-source.jar'
E     - 
s3a://impala-test-uswest2-2/test-warehouse/data-sources/jdbc-data-source.jar
E     ?  --   ^^^  ^^^^  ^^^^^^^ ^^
E     + hdfs://localhost:20500/test-warehouse/data-sources/jdbc-data-source.jar
E     ? +++    ^^^  ^^  ^ ^^^^
{code}

Stack trace of the test failure of  
test_ext_data_sources.TestExtDataSources.test_jdbc_data_source
{code:java}
1012 05:26:05.270896  1181 GenericJdbcDatabaseAccessor.java:145] 
c64d3ba0d79d1aec:076d0d8f00000001] Caught exception while trying to execute 
query
Java exception follows:
java.sql.SQLException: Cannot create PoolableConnectionFactory (FATAL: database 
"functional" does not exist)
        at 
org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:669)
        at 
org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:544)
        at 
org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:753)
        at 
org.apache.impala.extdatasource.jdbc.dao.GenericJdbcDatabaseAccessor.getRecordIterator(GenericJdbcDatabaseAccessor.java:137)
        at 
org.apache.impala.extdatasource.jdbc.JdbcDataSource.buildQueryAndExecute(JdbcDataSource.java:306)
        at 
org.apache.impala.extdatasource.jdbc.JdbcDataSource.open(JdbcDataSource.java:158)
        at 
org.apache.impala.extdatasource.ExternalDataSourceExecutor.open(ExternalDataSourceExecutor.java:269)
        at 
org.apache.impala.extdatasource.ExternalDataSourceExecutor.open(ExternalDataSourceExecutor.java:212)
Caused by: org.postgresql.util.PSQLException: FATAL: database "functional" does 
not exist
        at 
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2676)
        at 
org.postgresql.core.v3.QueryExecutorImpl.readStartupMessages(QueryExecutorImpl.java:2788)
        at 
org.postgresql.core.v3.QueryExecutorImpl.<init>(QueryExecutorImpl.java:174)
        at 
org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:290)
        at 
org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
        at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:247)
        at org.postgresql.Driver.makeConnection(Driver.java:434)
        at org.postgresql.Driver.connect(Driver.java:291)
        at 
org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:55)
        at 
org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:355)
        at 
org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:115)
        at 
org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:665)
        ... 7 more
E1012 05:26:05.271389  1181 ExternalDataSourceExecutor.java:253] 
c64d3ba0d79d1aec:076d0d8f00000001] Error in data source 
(path=/tmp/jdbc-data-source.6397.13.jar, 
class=org.apache.impala.extdatasource.jdbc.JdbcDataSource, version=V1) close(): 
No error message returned by data source. Check the impalad log for more 
information.
Java exception follows:
java.lang.IllegalArgumentException
        at 
com.google.common.base.Preconditions.checkArgument(Preconditions.java:131)
        at 
org.apache.impala.extdatasource.jdbc.JdbcDataSource.close(JdbcDataSource.java:211)
        at 
org.apache.impala.extdatasource.ExternalDataSourceExecutor.close(ExternalDataSourceExecutor.java:289)
        at 
org.apache.impala.extdatasource.ExternalDataSourceExecutor.close(ExternalDataSourceExecutor.java:234)
{code}
It seems functional database is not created on Postgres server. That means 
testdata/bin/load-ext-data-sources.sh was not ran successfully on s3.


was (Author: wzhou):
For 
query_test.test_ext_data_sources.TestExtDataSources.test_verify_jdbc_table_properties,
 expected jdbc jar url on S3 is:
s3a://impala-test-uswest2-2/test-warehouse/data-sources/jdbc-data-source.jar
{code:java}
query_test/test_ext_data_sources.py:70: in test_verify_jdbc_table_properties
    assert properties['__IMPALA_DATA_SOURCE_LOCATION'] == \
E   assert 's3a://impala...ta-source.jar' == 'hdfs://localh...ta-source.jar'
E     - 
s3a://impala-test-uswest2-2/test-warehouse/data-sources/jdbc-data-source.jar
E     ?  --   ^^^  ^^^^  ^^^^^^^ ^^
E     + hdfs://localhost:20500/test-warehouse/data-sources/jdbc-data-source.jar
E     ? +++    ^^^  ^^  ^ ^^^^
{code}

Stack trace of the test failure of  
test_ext_data_sources.TestExtDataSources.test_jdbc_data_source
{code:java}
1012 05:26:05.270896  1181 GenericJdbcDatabaseAccessor.java:145] 
c64d3ba0d79d1aec:076d0d8f00000001] Caught exception while trying to execute 
query
Java exception follows:
java.sql.SQLException: Cannot create PoolableConnectionFactory (FATAL: database 
"functional" does not exist)
        at 
org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:669)
        at 
org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:544)
        at 
org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:753)
        at 
org.apache.impala.extdatasource.jdbc.dao.GenericJdbcDatabaseAccessor.getRecordIterator(GenericJdbcDatabaseAccessor.java:137)
        at 
org.apache.impala.extdatasource.jdbc.JdbcDataSource.buildQueryAndExecute(JdbcDataSource.java:306)
        at 
org.apache.impala.extdatasource.jdbc.JdbcDataSource.open(JdbcDataSource.java:158)
        at 
org.apache.impala.extdatasource.ExternalDataSourceExecutor.open(ExternalDataSourceExecutor.java:269)
        at 
org.apache.impala.extdatasource.ExternalDataSourceExecutor.open(ExternalDataSourceExecutor.java:212)
Caused by: org.postgresql.util.PSQLException: FATAL: database "functional" does 
not exist
        at 
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2676)
        at 
org.postgresql.core.v3.QueryExecutorImpl.readStartupMessages(QueryExecutorImpl.java:2788)
        at 
org.postgresql.core.v3.QueryExecutorImpl.<init>(QueryExecutorImpl.java:174)
        at 
org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:290)
        at 
org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
        at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:247)
        at org.postgresql.Driver.makeConnection(Driver.java:434)
        at org.postgresql.Driver.connect(Driver.java:291)
        at 
org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:55)
        at 
org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:355)
        at 
org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:115)
        at 
org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:665)
        ... 7 more
E1012 05:26:05.271389  1181 ExternalDataSourceExecutor.java:253] 
c64d3ba0d79d1aec:076d0d8f00000001] Error in data source 
(path=/tmp/jdbc-data-source.6397.13.jar, 
class=org.apache.impala.extdatasource.jdbc.JdbcDataSource, version=V1) close(): 
No error message returned by data source. Check the impalad log for more 
information.
Java exception follows:
java.lang.IllegalArgumentException
        at 
com.google.common.base.Preconditions.checkArgument(Preconditions.java:131)
        at 
org.apache.impala.extdatasource.jdbc.JdbcDataSource.close(JdbcDataSource.java:211)
        at 
org.apache.impala.extdatasource.ExternalDataSourceExecutor.close(ExternalDataSourceExecutor.java:289)
        at 
org.apache.impala.extdatasource.ExternalDataSourceExecutor.close(ExternalDataSourceExecutor.java:234)
{code}


> Support different schemes for jdbc driver url when creating external jdbc 
> table
> -------------------------------------------------------------------------------
>
>                 Key: IMPALA-12470
>                 URL: https://issues.apache.org/jira/browse/IMPALA-12470
>             Project: IMPALA
>          Issue Type: Sub-task
>          Components: Frontend
>            Reporter: Wenzhe Zhou
>            Priority: Major
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> jdbc driver url is specified as table property 'driver.url' when creating a 
> external jdbc table, like the sample below:
> {code:java}
> CREATE TABLE test_postgres (
>  id INT,
>  string_col STRING)
> PRODUCED BY DATA SOURCE JdbcDataSource(
> '{"database.type":"POSTGRES",
> "jdbc.url":"jdbc:postgresql://localhost:5432/functional",
> "jdbc.driver":"org.postgresql.Driver",
> "driver.url":"hdfs://localhost:20500/test-warehouse/data-sources/jdbc-driver/postgresql-jdbc.jar",
> "dbcp.username":"hiveuser",
> "dbcp.password":"password",
> "table":"alltypes"}');
> {code}
> In the initial patch, we only support to download the driver jar files from 
> hdfs.  We need to support different storage type, like 'file://', 's3a://', 
> etc.   



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to