If you set the system property calcite.debug, then the actual SQL sent to the database will be printed to the console inside [] when it is executed. -- Michael Mior [email protected]
Le jeu. 6 févr. 2020 à 05:32, Yang Liu <[email protected]> a écrit : > > Yang Liu <[email protected]> 于2020年2月6日周四 下午5:59写道: > > > Hi there, recently I am studying Apache Calcite, by now I can use explain > > plan for via JDBC to view the logical plan, and I am wondering how can I > > view the physical sql in the plan execution? Since there may be bugs in the > > physical sql generation so I need to make sure the correctness. > > > > val connection = DriverManager.getConnection("jdbc:calcite:") > > val calciteConnection = connection.asInstanceOf[CalciteConnection] > > val rootSchema = calciteConnection.getRootSchema() > > > > val dsInsightUser = > > JdbcSchema.dataSource("jdbc:mysql://localhost:13306/insight?useSSL=false&serverTimezone=UTC", > > "com.mysql.jdbc.Driver", "insight_admin","xxxxxx") > > val dsPerm = > > JdbcSchema.dataSource("jdbc:mysql://localhost:13307/permission?useSSL=false&serverTimezone=UTC", > > "com.mysql.jdbc.Driver", "perm_admin", "xxxxxx") > > > > rootSchema.add("insight_user", JdbcSchema.create(rootSchema, > > "insight_user", dsInsightUser, null, null)) > > rootSchema.add("perm", JdbcSchema.create(rootSchema, "perm", dsPerm, > > null, null)) > > > > val stmt = connection.createStatement() > > val rs = stmt.executeQuery("""explain plan for select > > "perm"."user_table".* from "perm"."user_table" join > > "insight_user"."user_tab" on > > "perm"."user_table"."id"="insight_user"."user_tab"."id" """) > > val metaData = rs.getMetaData() > > > > while(rs.next()) { > > for(i <- 1 to metaData.getColumnCount) printf("%s ", rs.getObject(i)) > > println() > > } > > > > result is > > > > EnumerableCalc(expr#0..3=[{inputs}], proj#0..2=[{exprs}]) > > EnumerableHashJoin(condition=[=($0, $3)], joinType=[inner]) > > JdbcToEnumerableConverter > > JdbcTableScan(table=[[perm, user_table]]) > > JdbcToEnumerableConverter > > JdbcProject(id=[$0]) > > JdbcTableScan(table=[[insight_user, user_tab]]) > > > >
