Stamatis Zampetakis created HIVE-26296: ------------------------------------------
Summary: RuntimeException when executing EXPLAIN CBO JOINCOST on query with JDBC tables Key: HIVE-26296 URL: https://issues.apache.org/jira/browse/HIVE-26296 Project: Hive Issue Type: Bug Components: CBO, HiveServer2 Reporter: Stamatis Zampetakis Assignee: Stamatis Zampetakis Consider a JDBC database with two tables _author_ and _book_. {code:sql} CREATE EXTERNAL TABLE author ( id int, fname varchar(20), lname varchar(20) ) STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "MYSQL", "hive.sql.jdbc.driver" = "com.mysql.jdbc.Driver", ... "hive.sql.table" = "author" ); CREATE EXTERNAL TABLE book ( id int, title varchar(100), author int ) STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "MYSQL", "hive.sql.jdbc.driver" = "com.mysql.jdbc.Driver", ... "hive.sql.table" = "book" ); {code} Executing an {{EXPLAIN CBO JOINCOST}} with a query joining two JDBC tables fails with {{RuntimeException}} while trying to compute the selectivity of the join. {code:sql} EXPLAIN CBO JOINCOST SELECT a.lname, b.title FROM author a JOIN book b ON a.id=b.author; {code} +Stacktrace+ {noformat} java.lang.RuntimeException: Unexpected Join type: org.apache.calcite.adapter.jdbc.JdbcRules$JdbcJoin at org.apache.hadoop.hive.ql.optimizer.calcite.stats.HiveRelMdSelectivity.computeInnerJoinSelectivity(HiveRelMdSelectivity.java:156) at org.apache.hadoop.hive.ql.optimizer.calcite.stats.HiveRelMdSelectivity.getSelectivity(HiveRelMdSelectivity.java:68) at GeneratedMetadataHandler_Selectivity.getSelectivity_$(Unknown Source) at GeneratedMetadataHandler_Selectivity.getSelectivity(Unknown Source) at org.apache.calcite.rel.metadata.RelMetadataQuery.getSelectivity(RelMetadataQuery.java:426) at org.apache.calcite.rel.metadata.RelMdUtil.getJoinRowCount(RelMdUtil.java:736) at org.apache.calcite.rel.metadata.RelMdRowCount.getRowCount(RelMdRowCount.java:195) at GeneratedMetadataHandler_RowCount.getRowCount_$(Unknown Source) at GeneratedMetadataHandler_RowCount.getRowCount(Unknown Source) at org.apache.calcite.rel.metadata.RelMetadataQuery.getRowCount(RelMetadataQuery.java:212) at org.apache.calcite.rel.metadata.RelMdRowCount.getRowCount(RelMdRowCount.java:140) at GeneratedMetadataHandler_RowCount.getRowCount_$(Unknown Source) at GeneratedMetadataHandler_RowCount.getRowCount(Unknown Source) at org.apache.calcite.rel.metadata.RelMetadataQuery.getRowCount(RelMetadataQuery.java:212) at org.apache.calcite.rel.metadata.RelMdRowCount.getRowCount(RelMdRowCount.java:191) at GeneratedMetadataHandler_RowCount.getRowCount_$(Unknown Source) at GeneratedMetadataHandler_RowCount.getRowCount(Unknown Source) at org.apache.calcite.rel.metadata.RelMetadataQuery.getRowCount(RelMetadataQuery.java:212) at org.apache.calcite.rel.externalize.RelWriterImpl.explain_(RelWriterImpl.java:100) at org.apache.calcite.rel.externalize.RelWriterImpl.done(RelWriterImpl.java:144) at org.apache.calcite.rel.AbstractRelNode.explain(AbstractRelNode.java:246) at org.apache.calcite.plan.RelOptUtil.toString(RelOptUtil.java:2308) at org.apache.hadoop.hive.ql.parse.CalcitePlanner.genOPTree(CalcitePlanner.java:648) at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:12699) at org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:460) at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:317) at org.apache.hadoop.hive.ql.parse.ExplainSemanticAnalyzer.analyzeInternal(ExplainSemanticAnalyzer.java:180) at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:317) at org.apache.hadoop.hive.ql.Compiler.analyze(Compiler.java:224) at org.apache.hadoop.hive.ql.Compiler.compile(Compiler.java:106) at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:495) at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:447) at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:412) at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:406) at org.apache.hadoop.hive.ql.reexec.ReExecDriver.compileAndRespond(ReExecDriver.java:121) at org.apache.hadoop.hive.ql.reexec.ReExecDriver.run(ReExecDriver.java:227) at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:255) at org.apache.hadoop.hive.cli.CliDriver.processCmd1(CliDriver.java:200) at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:126) at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:421) at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:352) {noformat} -- This message was sent by Atlassian Jira (v8.20.7#820007)