Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
bf6c990c
提交
bf6c990c
authored
14 年前
作者:
Thomas Mueller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
The Recover tool did not work with compressed lob files.
上级
edf7bba7
无相关合并请求
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
43 行增加
和
6 行删除
+43
-6
changelog.html
h2/src/docsrc/html/changelog.html
+5
-1
Recover.java
h2/src/main/org/h2/tools/Recover.java
+5
-4
TestRecovery.java
h2/src/test/org/h2/test/unit/TestRecovery.java
+33
-1
没有找到文件。
h2/src/docsrc/html/changelog.html
浏览文件 @
bf6c990c
...
...
@@ -18,7 +18,11 @@ Change Log
<h1>
Change Log
</h1>
<h2>
Next Version (unreleased)
</h2>
<ul><li>
H2 Console: webAllowOthers and webSSL were swapped if they didn't exist in the properties file. Issue 244.
<ul><li>
The Recover tool did not work with compressed lob files (set compress_lob lzf).
Also, sometimes the Recover tool was very slow, specially using a 64-bit JVM, because
it tried to de-compress lob files even if they were not compressed
(which could allocate a lot of memory).
</li><li>
H2 Console: webAllowOthers and webSSL were swapped if they didn't exist in the properties file. Issue 244.
</li><li>
When the system property h2.lobInDatabase is set, CREATE TABLE ... AS SELECT
with a LOB column did not always work.
</li><li>
Some system properties are not supported any longer, because they can
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/tools/Recover.java
浏览文件 @
bf6c990c
...
...
@@ -237,7 +237,6 @@ public class Recover extends Tool implements DataHandler {
if
(
fileName
.
endsWith
(
Constants
.
SUFFIX_PAGE_FILE
))
{
dumpPageStore
(
fileName
);
}
else
if
(
fileName
.
endsWith
(
Constants
.
SUFFIX_LOB_FILE
))
{
dumpLob
(
fileName
,
true
);
dumpLob
(
fileName
,
false
);
}
}
...
...
@@ -319,10 +318,12 @@ public class Recover extends Tool implements DataHandler {
byte
[]
small
=
lob
.
getSmall
();
if
(
small
==
null
)
{
String
file
=
lob
.
getFileName
();
if
(
lob
.
getType
()
==
Value
.
BLOB
)
{
return
"READ_BLOB('"
+
file
+
".txt')"
;
String
type
=
lob
.
getType
()
==
Value
.
BLOB
?
"BLOB"
:
"CLOB"
;
if
(
lob
.
useCompression
())
{
dumpLob
(
file
,
true
);
file
+=
".comp"
;
}
return
"READ_
CLOB
('"
+
file
+
".txt')"
;
return
"READ_
"
+
type
+
"
('"
+
file
+
".txt')"
;
}
}
else
if
(
v
instanceof
ValueLobDb
)
{
ValueLobDb
lob
=
(
ValueLobDb
)
v
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/unit/TestRecovery.java
浏览文件 @
bf6c990c
...
...
@@ -32,9 +32,42 @@ public class TestRecovery extends TestBase {
}
public
void
test
()
throws
SQLException
{
testCompressedAndUncompressed
();
testRunScript
();
}
private
void
testCompressedAndUncompressed
()
throws
SQLException
{
DeleteDbFiles
.
execute
(
getBaseDir
(),
"recovery"
,
true
);
org
.
h2
.
Driver
.
load
();
Connection
conn
=
getConnection
(
"recovery"
);
Statement
stat
=
conn
.
createStatement
();
stat
.
execute
(
"create table test(id int primary key, data clob)"
);
stat
.
execute
(
"insert into test values(1, space(10000))"
);
stat
.
execute
(
"set compress_lob lzf"
);
stat
.
execute
(
"insert into test values(2, space(10000))"
);
conn
.
close
();
Recover
rec
=
new
Recover
();
rec
.
runTool
(
"-dir"
,
getBaseDir
(),
"-db"
,
"recovery"
);
Connection
conn2
=
getConnection
(
"recovery2"
,
"diff"
,
""
);
Statement
stat2
=
conn2
.
createStatement
();
String
name
=
"recovery.h2.sql"
;
stat2
.
execute
(
"runscript from '"
+
getBaseDir
()
+
"/"
+
name
+
"'"
);
stat2
.
execute
(
"select * from test"
);
stat2
.
execute
(
"drop user diff"
);
conn2
.
close
();
conn
=
getConnection
(
"recovery"
);
stat
=
conn
.
createStatement
();
conn2
=
getConnection
(
"recovery2"
);
stat2
=
conn2
.
createStatement
();
assertEqualDatabases
(
stat
,
stat2
);
conn
.
close
();
conn2
.
close
();
DeleteDbFiles
.
execute
(
getBaseDir
(),
"recovery"
,
true
);
DeleteDbFiles
.
execute
(
getBaseDir
(),
"recovery2"
,
true
);
}
private
void
testRunScript
()
throws
SQLException
{
DeleteDbFiles
.
execute
(
getBaseDir
(),
"recovery"
,
true
);
DeleteDbFiles
.
execute
(
getBaseDir
(),
"recovery2"
,
true
);
...
...
@@ -84,7 +117,6 @@ public class TestRecovery extends TestBase {
IOUtils
.
delete
(
getBaseDir
()
+
"/recovery.h2.sql"
);
String
dir
=
getBaseDir
()
+
"/recovery.lobs.db"
;
FileSystem
.
getInstance
(
dir
).
deleteRecursive
(
dir
,
false
);
}
}
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论