[
https://issues.apache.org/jira/browse/HIVE-29308?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated HIVE-29308:
----------------------------------
Labels: pull-request-available (was: )
> Exception when JDBC table names are case-sensitive
> --------------------------------------------------
>
> Key: HIVE-29308
> URL: https://issues.apache.org/jira/browse/HIVE-29308
> Project: Hive
> Issue Type: Bug
> Components: JDBC, JDBC storage handler
> Affects Versions: 4.2.0
> Reporter: Soumyakanti Das
> Assignee: Soumyakanti Das
> Priority: Major
> Labels: pull-request-available
> Attachments: jdbc_case_sensitive_table_postgres.q,
> q_test_country_table_case_sensitive.sql
>
>
> To reproduce this, copy q_test_country_table_case_sensitive.sql to
> data/scripts and then copy jdbc_case_sensitive_table_postgres.q to
> queries/clientpositive.
> Run:
> {noformat}
> mvn test -pl itests/qtest -Pitests -Dtest=TestMiniLlapLocalCliDriver
> -Dtest.output.overwrite=true
> -Dqfile=jdbc_case_sensitive_table_postgres.q{noformat}
> When authorization is enabled, we see:
> {noformat}
> [ERROR] Failures:
> [ERROR] TestMiniLlapLocalCliDriver.testCliDriver:62 Client execution failed
> with error code = 40000
> running
> CREATE EXTERNAL TABLE country (id int, name varchar(20))
> STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler'
> TBLPROPERTIES (
> "hive.sql.database.type" = "POSTGRES",
> "hive.sql.jdbc.driver" = "org.postgresql.Driver",
> "hive.sql.jdbc.url" = "${system:hive.test.database.qdb.jdbc.url}",
> "hive.sql.dbcp.username" =
> "${system:hive.test.database.qdb.jdbc.username}",
> "hive.sql.dbcp.password" =
> "${system:hive.test.database.qdb.jdbc.password}",
> "hive.sql.table" = "\"Country\"")
> fname=jdbc_case_sensitive_table_postgres.q
> See ./ql/target/tmp/log/hive.log or ./itests/qtest/target/tmp/log/hive.log,
> or check ./ql/target/surefire-reports or
> ./itests/qtest/target/surefire-reports/ for specific test cases logs.
> org.apache.hadoop.hive.ql.metadata.HiveException: Exception occurred while
> getting the URI from storage handler: Illegal character in opaque part at
> index 37: jdbc:postgresql://localhost:5432/qdb/"Country"
> at
> org.apache.hadoop.hive.ql.security.authorization.command.CommandAuthorizerV2.addHivePrivObject(CommandAuthorizerV2.java:213)
> at
> org.apache.hadoop.hive.ql.security.authorization.command.CommandAuthorizerV2.getHivePrivObjects(CommandAuthorizerV2.java:152)
> at
> org.apache.hadoop.hive.ql.security.authorization.command.CommandAuthorizerV2.doAuthorization(CommandAuthorizerV2.java:77)
> at
> org.apache.hadoop.hive.ql.security.authorization.command.CommandAuthorizer.doAuthorization(CommandAuthorizer.java:58)
> at org.apache.hadoop.hive.ql.Compiler.authorize(Compiler.java:440){noformat}
> And when it is disabled, we see:
> {noformat}
> [ERROR] Failures:
> [ERROR] TestMiniLlapLocalCliDriver.testCliDriver:62 Client execution failed
> with error code = 40000
> running
> SELECT * FROM country ORDER BY id
> fname=jdbc_case_sensitive_table_postgres.q
> See ./ql/target/tmp/log/hive.log or ./itests/qtest/target/tmp/log/hive.log,
> or check ./ql/target/surefire-reports or
> ./itests/qtest/target/surefire-reports/ for specific test cases logs.
> org.apache.hadoop.hive.ql.parse.SemanticException: Table "Country" was not
> found in the database
> at
> org.apache.hadoop.hive.ql.parse.CalcitePlanner$CalcitePlannerAction.genTableLogicalPlan(CalcitePlanner.java:3220)
> at
> org.apache.hadoop.hive.ql.parse.CalcitePlanner$CalcitePlannerAction.genLogicalPlan(CalcitePlanner.java:4937)
> at
> org.apache.hadoop.hive.ql.parse.CalcitePlanner$CalcitePlannerAction.apply(CalcitePlanner.java:1630)
> at
> org.apache.hadoop.hive.ql.parse.CalcitePlanner$CalcitePlannerAction.apply(CalcitePlanner.java:1573)
> at
> org.apache.calcite.tools.Frameworks.lambda$withPlanner$0(Frameworks.java:140)
> at
> org.apache.calcite.prepare.CalcitePrepareImpl.perform(CalcitePrepareImpl.java:936){noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)