Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
ebd773c8
提交
ebd773c8
authored
15 年前
作者:
Thomas Mueller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Improved log stream output.
上级
3236e9d2
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
45 行增加
和
3 行删除
+45
-3
Recover.java
h2/src/main/org/h2/tools/Recover.java
+45
-3
没有找到文件。
h2/src/main/org/h2/tools/Recover.java
浏览文件 @
ebd773c8
...
@@ -28,6 +28,7 @@ import java.util.UUID;
...
@@ -28,6 +28,7 @@ import java.util.UUID;
import
java.util.zip.CRC32
;
import
java.util.zip.CRC32
;
import
org.h2.Driver
;
import
org.h2.Driver
;
import
org.h2.command.Parser
;
import
org.h2.command.Parser
;
import
org.h2.compress.CompressLZF
;
import
org.h2.constant.ErrorCode
;
import
org.h2.constant.ErrorCode
;
import
org.h2.engine.Constants
;
import
org.h2.engine.Constants
;
import
org.h2.engine.DbObject
;
import
org.h2.engine.DbObject
;
...
@@ -1001,6 +1002,7 @@ public class Recover extends Tool implements DataHandler {
...
@@ -1001,6 +1002,7 @@ public class Recover extends Tool implements DataHandler {
DataReader
in
=
new
DataReader
(
DataReader
in
=
new
DataReader
(
new
PageInputStream
(
writer
,
this
,
store
,
logKey
,
logFirstTrunkPage
,
logFirstDataPage
,
pageSize
)
new
PageInputStream
(
writer
,
this
,
store
,
logKey
,
logFirstTrunkPage
,
logFirstDataPage
,
pageSize
)
);
);
CompressLZF
compress
=
new
CompressLZF
();
while
(
true
)
{
while
(
true
)
{
int
x
=
in
.
read
();
int
x
=
in
.
read
();
if
(
x
<
0
)
{
if
(
x
<
0
)
{
...
@@ -1011,12 +1013,51 @@ public class Recover extends Tool implements DataHandler {
...
@@ -1011,12 +1013,51 @@ public class Recover extends Tool implements DataHandler {
}
else
if
(
x
==
PageLog
.
UNDO
)
{
}
else
if
(
x
==
PageLog
.
UNDO
)
{
int
pageId
=
in
.
readVarInt
();
int
pageId
=
in
.
readVarInt
();
int
size
=
in
.
readVarInt
();
int
size
=
in
.
readVarInt
();
byte
[]
data
=
new
byte
[
pageSize
];
if
(
size
==
0
)
{
if
(
size
==
0
)
{
in
.
readFully
(
new
byte
[
pageSize
]
,
0
,
pageSize
);
in
.
readFully
(
data
,
0
,
pageSize
);
}
else
{
}
else
{
in
.
readFully
(
new
byte
[
size
],
0
,
size
);
byte
[]
compressBuffer
=
new
byte
[
size
];
in
.
readFully
(
compressBuffer
,
0
,
size
);
compress
.
expand
(
compressBuffer
,
0
,
size
,
data
,
0
,
pageSize
);
}
}
writer
.
println
(
"-- undo page "
+
pageId
);
String
typeName
=
""
;
int
type
=
data
[
0
];
boolean
last
=
(
type
&
Page
.
FLAG_LAST
)
!=
0
;
type
&=
~
Page
.
FLAG_LAST
;
switch
(
type
)
{
case
Page
.
TYPE_EMPTY
:
typeName
=
"empty"
;
break
;
case
Page
.
TYPE_DATA_LEAF
:
typeName
=
"data leaf "
+
(
last
?
"(last)"
:
""
);
break
;
case
Page
.
TYPE_DATA_NODE
:
typeName
=
"data node "
+
(
last
?
"(last)"
:
""
);
break
;
case
Page
.
TYPE_DATA_OVERFLOW
:
typeName
=
"data overflow "
+
(
last
?
"(last)"
:
""
);
break
;
case
Page
.
TYPE_BTREE_LEAF
:
typeName
=
"b-tree leaf "
+
(
last
?
"(last)"
:
""
);
break
;
case
Page
.
TYPE_BTREE_NODE
:
typeName
=
"b-tree node "
+
(
last
?
"(last)"
:
""
);
break
;
case
Page
.
TYPE_FREE_LIST
:
typeName
=
"free list "
+
(
last
?
"(last)"
:
""
);
break
;
case
Page
.
TYPE_STREAM_TRUNK
:
typeName
=
"log trunk"
;
break
;
case
Page
.
TYPE_STREAM_DATA
:
typeName
=
"log data"
;
break
;
default
:
typeName
=
"ERROR: unknown type "
+
type
;
break
;
}
writer
.
println
(
"-- undo page "
+
pageId
+
" "
+
typeName
);
}
else
if
(
x
==
PageLog
.
ADD
)
{
}
else
if
(
x
==
PageLog
.
ADD
)
{
int
sessionId
=
in
.
readVarInt
();
int
sessionId
=
in
.
readVarInt
();
setStorage
(
in
.
readVarInt
());
setStorage
(
in
.
readVarInt
());
...
@@ -1347,6 +1388,7 @@ public class Recover extends Tool implements DataHandler {
...
@@ -1347,6 +1388,7 @@ public class Recover extends Tool implements DataHandler {
long
next
=
0
;
long
next
=
0
;
if
(!
last
)
{
if
(!
last
)
{
next
=
s
.
readInt
();
next
=
s
.
readInt
();
writer
.
println
(
"-- next: "
+
next
);
}
}
int
empty
=
pageSize
;
int
empty
=
pageSize
;
for
(
int
i
=
0
;
i
<
entryCount
;
i
++)
{
for
(
int
i
=
0
;
i
<
entryCount
;
i
++)
{
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论