H2 Database IDEA 源码 DEBUG 环境搭建

news/2024/11/1 16:28:33/

H2 Database IDEA 源码 DEBUG 环境搭建

基于最新的 version-2.3.230 拉取分支。

git remote add h2 https://github.com/h2database/h2database.git 
git fetch h2
git checkout -b version-2.3.230 version-2.3.230

使用

# 启动
java -jar h2*.jar# H2 shell 方式使用
java -cp h2-*.jar org.h2.tools.Shell

h2 shell

启动类 org.h2.tools.Shell

# 配置启动参数
-url "jdbc:h2:~/test" -user "sa" -password "" 

测试 case

create table + insert

Welcome to H2 Shell 2.3.230 (2024-07-15)
Exit with Ctrl+C
[Enter]   jdbc:h2:~/test
URL       jdbc:h2:~/test
[Enter]   org.h2.Driver
Driver    org.h2.Driver
[Enter]   
User      sa
Password  Password  ><
Type the same password again to confirm database creation.
Password><Password  ><
Connected
Commands are case insensitive; SQL statements end with ';'
help or ?      Display this help
list           Toggle result list / stack trace mode
maxwidth       Set maximum column width (default is 100)
autocommit     Enable or disable autocommit
history        Show the last 20 statements
quit or exit   Close the connection and exitsql> show tables;
TABLE_NAME | TABLE_SCHEMA
(0 rows, 197 ms)sql> create table test(id int);
(Update count: 0, 5 ms)sql> show tables;
TABLE_NAME | TABLE_SCHEMA
TEST       | PUBLIC
(1 row, 4 ms)sql> insert into test values(1);
(Update count: 1, 4 ms)sql> select * from test;
ID
1
(1 row, 1 ms)sql> 

事务操作

sql> select * from test;
ID
1
1
(2 rows, 2 ms)sql> begin;
(Update count: 0, 1 ms)sql> delete from test;
(Update count: 2, 1 ms)sql> rollback;
(Update count: 0, 2 ms)sql> select * from test;
ID
1
1
(2 rows, 2 ms)

H2架构

根据官方文档介绍,从上到下,各层如下所示:

JDBC driver.JDBC 驱动程序
Connection/session management.连接/会话管理
SQL Parser.SQL 解析器
Command execution and planning.命令执行和计划
Table/Index/Constraints.表/索引/约束
Undo log, redo log, and transactions layer.undo log、redo log 和 事务层
B-tree engine and page-based storage allocation.B 树引擎 & 基于页的存储分配
Filesystem abstraction.文件系统抽象

http://www.ppmy.cn/news/1543630.html

相关文章

如何使用java雪花算法在分布式环境中生成唯一ID?

引言 在现代分布式系统中,生成唯一标识符(ID)是一个常见的需求。传统的自增ID在分布式环境中会导致冲突,因此需要一种能够在分布式系统中生成全局唯一ID的算法。 雪花算法(Snowflake)就是为了解决这个问题而提出的一种高效的ID生成算法。本文将详细介绍雪花算法的原理、…

qt QAction详解

1、概述 QAction是Qt框架中的一个抽象类&#xff0c;用于表示用户界面中的一个动作&#xff08;action&#xff09;。这些动作可以绑定到菜单项、工具栏按钮或快捷键上&#xff0c;提供了一种灵活的方式来处理用户交互。QAction不仅包含了动作的名称、图标、提示信息等属性&am…

云智慧完成华为原生鸿蒙系统的适配, 透视宝 APM 为用户体验保驾护航

2024 年 10 月 22 日&#xff0c;首个国产移动操作系统 —— 华为原生鸿蒙操作系统 HarmonyOS NEXT 正式面世&#xff0c;成为继 iOS 和 Android 后的全球第三大移动操作系统。HarmonyOS NEXT&#xff0c;从系统内核、数据库根基&#xff0c;到编程语言创新、AI&#xff08;人工…

MAC | 应用全屏快捷键 |浏览器隐藏导航栏

问题1&#xff1a;有时候我们想要全屏应用&#xff0c;用鼠标又太麻烦了 解决&#xff1a; command ctrl F&#xff1a;全屏和取消全屏都是同一个键&#xff1b; 问题2: 浏览器上面的标签导航栏占据了屏幕的大部分空间&#xff0c;如下图所示&#xff0c;我们可以用快捷键将…

使用RestTemplate发送post请求,入参是多层嵌套的JSON

本文展示了一个完整的调用示例&#xff0c;入参、返参均是多层嵌套的JSON。 入参json {"parameter": {"a": "a","b": "b","c": {"c1": "c1","c2": "c2","c3"…

Pytorch学习--神经网络--最大池化的使用

一、用法 torch.nn.MaxPool2d torch.nn.MaxPool2d(kernel_size, strideNone, padding0, dilation1, return_indicesFalse, ceil_modeFalse)kernel_size&#xff1a;池化窗口的大小&#xff0c;可以是整数或元组。stride&#xff1a;步幅&#xff0c;默认为与 kernel_size 相同…

2024年10月31日Github流行趋势

项目名称&#xff1a;Amphion 项目维护者&#xff1a;lmxue HeCheng0625 yuantuo666 RMSnow HarryHe11项目介绍&#xff1a;Amphion 是一个用于音频、音乐和语音生成的工具包。其目的是支持可重复的研究&#xff0c;并帮助初级研究人员和工程师开始音频、音乐和语音生成的研究与…

【Python3】【力扣题】409. 最长回文串

【力扣题】题目描述&#xff1a; &#xff08;题意理解&#xff09;统计如下&#xff1a; ① 字母个数本身是偶数。 ② 字母个数是奇数&#xff0c;统计奇数中的偶数部分&#xff0c;例如&#xff1a;字母个数为3&#xff0c;统计其中的2。 ③ 中间可以有一个奇数字母。即只要有…