Giter VIP home page Giter VIP logo

h2-research's Introduction

项目用途

  • H2数据库 源代码学习研究(包括代码注释、文档、用于代码分析的测试用例)

目录结构

  • my-docs: 综合文档

  • my-test: 用于代码分析的测试用例

  • h2: H2数据库的最新源代码,在源代码中附加了便于分析理解代码的注释

把代码导入Eclipse

  • 运行 mvn eclipse:eclipse 生成Eclipse项目,打开Eclipse,选择File -> Import -> Existing Projects into Workspace

运行或调试H2

  • 右击 /h2-research/my-test/my/test/MyH2Server.java 文件,点Run As或Debug As -> Java Application

  • 如果出现"TCP server running ..."这样的提示就ok啦

测试

  • my.test 包中的类几乎都可直接运行

h2-research's People

Contributors

andreitokar avatar auntyellow avatar codefollower avatar ebocher avatar forchid avatar grandinj avatar igor-suhorukov avatar jlawrynowicz avatar katzyn avatar ksungkeun84 avatar lingman avatar lukaseder avatar marschall avatar maxenglander avatar mikrethor avatar mysinmyc avatar nicolas-f avatar niklasmehner avatar patrick-brielmayer avatar plus33 avatar sjednac avatar stephane-ein avatar stevemcleod avatar stumc avatar svanoort avatar svladykin avatar sylvain-ilm avatar thomasmueller avatar turbanoff avatar uncle-pan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

h2-research's Issues

关于join分析有几个问题

1.在连接执行时,使用的嵌套循环,内部表 和外部表的选择是怎样的呢?一般是小表是外部表,代码中好像没有看到计算表的大小
2.两表连接时,每一次连接都要建立索引,关于COST的3种计算都是基于B树索引?没有HASH索引的执行吗?
3. join中有用到HASH的地方吗?TableFilter中好像没读到
4.题外问题,用您给的代码调试,有很多错误,是因为jdk版本的问题吗?
谢谢!

CreateTableTest 单元测试报错

建表语句报错了:

CREATE TABLE IF NOT EXISTS mytable
(
    f2  IDENTITY(1, 10)
        CONSTRAINT pk PRIMARY KEY HASH AUTO_INCREMENT,
    f5  int NOT NULL UNIQUE NOT NULL,
    f6  int NULL CHECK f6 > 10,
    f7  int
        CONSTRAINT c8 NOT NULL REFERENCES mytable (f2) ON DELETE CASCADE,
    f99 int
)

报错信息:

Exception in thread "main" org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "CREATE TABLE IF NOT EXISTS MYTABLE (F2 IDENTITY(1, 10) CONSTRAINT PK PRIMARY KEY HASH AUTO_INCREMENT[*], F5 INT NOT NULL UNIQUE NOT NULL, F6 INT NULL CHECK F6>10, F7 INT CONSTRAINT C8 NOT NULL REFERENCES MYTABLE(F2) ON DELETE CASCADE, F99 INT)"; expected "CONSTRAINT, COMMENT, UNIQUE, NOT, NULL, CHECK, REFERENCES, ., )"; SQL statement:
CREATE TABLE IF NOT EXISTS mytable (f2 IDENTITY(1, 10) CONSTRAINT pk PRIMARY KEY HASH AUTO_INCREMENT, f5 int NOT NULL UNIQUE NOT NULL, f6 int NULL CHECK f6>10, f7 int CONSTRAINT c8 NOT NULL REFERENCES mytable(f2) ON DELETE CASCADE, f99 int) [42001-201]

解析完 AUTO_INCREMENT 之后就报错了,根据 debug 发现第 11668 行后

                if (column.getIdentityOptions() != null || !parseCompatibilityIdentity(column, mode)) {
                    return;
                }

由于 column.getIdentityOptions() != null 为真,导致 parseCompatibilityIdentity(column, mode) 没有执行,从而没有解析下一个 token ‘,’ ,等到处理下一次循环,读取更多的时候

    private boolean readIfMore() {
        if (readIf(COMMA)) {
            return true;
        }
        read(CLOSE_PAREN);
        return false;
    }

尝试读取 逗号 失败,下次读取比括号的时候就报错了。好像是 h2 的一个 bug 。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.