在哪里可以找到负责HyperSQL引擎级SQL查询执行的代码?

问题描述

我用HyperSQL找到了下一个git repo。而且我正在检查JDBC interfaces数据库使用情况。

例如,我想与数据库建立连接并执行一些语句:

Connection connection = ...
Statement statement = connection.createStatement();
String query = "CREATE TABLE mytable (id IDENTITY,value VARCHAR)";
statement.executeUpdate(query);

如我所见,内部JDBC驱动程序类的下一个调用序列发生:

JDBCDriver -> JDBCConnection -> JDBCStatement -> Session -> Result (?) -> ? -> HsqlDB  

对于JDBCStatement

public synchronized ResultSet executeQuery(
            String sql) throws sqlException {

        fetchResult(sql,StatementTypes.RETURN_RESULT,JDBCStatementBase.NO_GENERATED_KEYS,null,null);

        return getResultSet();
}

对于fetchResult

private void fetchResult(String sql,int statementRetType,int generatedKeys,int[] generatedindexes,String[] generatednames) throws sqlException {
   ...
   resultIn = connection.sessionProxy.execute(resultOut);
   ...
}

下一步-Session调用

但是我在哪里可以找到负责通过DBMS引擎执行sql语句的代码

解决方法

HSQLDB源代码位于SourceForge.net上托管的Subversion(而非Git)存储库中:https://sourceforge.net/p/hsqldb/svn/HEAD/tree/base/trunk/

如果遵循Session.execute(Result ...)方法,并找到EXECDIRECT的大小写,则将看到该语句首先被编译,然后被执行。您可以从那里开始,其中包括大量负责编译和执行不同类型的SQL语句的类。