1、JdbcSchema - computeTables 获取表信息
connection = dataSource.getConnection();
dataSource,是创建schema时传入的
=> 元数据信息获取,单步调试,可以在jdbc driver的DatabaseMetaData实现类中,getTables方法中打断点,调试(都对应特定sql)
final DatabaseMetaData metaData = connection.getMetaData()
metaData.getTables(...)
=> 其中,getCatalogSchema,通过connection.getMetaData();单步调试,可以在jdbc driver的实现类中,getMetaData方法,调试(都对应特定sql)
2、JdbcSchema - getRelDataType 获取关系代数数据类型
上面方法,调用下面方法
=> 调用metaData.getColumns(),可以在jdbc driver中,实现类的getColumns中,打断点调试
3、ResultSetEnumerable - enumeratorBasedOnStatement 执行sql语句
该方法,应该对应的直接执行sql statement,没有预编译的(prepared)
调用statement.execute(sql),返回值boolean,然后statement.getResultSet()
=> 是calcite物理执行计划,转换为对应dialect的sql语句
=> 单步调试,execute可以在 jdbc driver 中,Statement的实现类中打好断点,调试
4、ResultSetEnumerable - enumeratorBasedOnPreparedStatement 执行预编译sql语句
该方法,应该对应的是执行预编译statement,即PreparedStatement
=> 是calcite物理执行计划,转换为对应dialect的sql语句
=> 单步调试,execute可以在 jdbc driver 中,Statement的实现类中打好断点,调试