Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
8f55701b
提交
8f55701b
authored
14 年前
作者:
Thomas Mueller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Issue 277: JaQu didn't correctly convert a CLOB column to a String.
上级
4277bfae
master
noel-pr1
plus33-master
pr/267
stumc-Issue#576
version-1.4.198
version-1.4.197
version-1.4.196
version-1.4.195
version-1.4.194
version-1.4.193
version-1.4.192
version-1.4.191
version-1.4.190
version-1.4.188
version-1.4.187
version-1.4.186
version-1.4.185
version-1.4.184
version-1.4.183
version-1.4.182
version-1.4.181
version-1.4.178
version-1.4.177
version-1.3
version-1.2
version-1.1
version-1.0
无相关合并请求
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
122 行增加
和
0 行删除
+122
-0
TestAll.java
h2/src/test/org/h2/test/TestAll.java
+2
-0
ClobTest.java
h2/src/test/org/h2/test/jaqu/ClobTest.java
+108
-0
Utils.java
h2/src/tools/org/h2/jaqu/util/Utils.java
+12
-0
没有找到文件。
h2/src/test/org/h2/test/TestAll.java
浏览文件 @
8f55701b
...
...
@@ -65,6 +65,7 @@ import org.h2.test.db.TestView;
import
org.h2.test.db.TestViewAlterTable
;
import
org.h2.test.db.TestViewDropView
;
import
org.h2.test.jaqu.AliasMapTest
;
import
org.h2.test.jaqu.ClobTest
;
import
org.h2.test.jaqu.SamplesTest
;
import
org.h2.test.jaqu.UpdateTest
;
import
org.h2.test.jdbc.TestBatchUpdates
;
...
...
@@ -579,6 +580,7 @@ kill -9 `jps -l | grep "org.h2.test." | cut -d " " -f 1`
// jaqu
new
AliasMapTest
().
runTest
(
this
);
new
ClobTest
().
runTest
(
this
);
new
SamplesTest
().
runTest
(
this
);
new
UpdateTest
().
runTest
(
this
);
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/jaqu/ClobTest.java
0 → 100644
浏览文件 @
8f55701b
/*
* Copyright 2004-2011 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: James Moger
*/
package
org
.
h2
.
test
.
jaqu
;
import
static
org
.
h2
.
jaqu
.
Define
.
primaryKey
;
import
static
org
.
h2
.
jaqu
.
Define
.
tableName
;
import
java.text.MessageFormat
;
import
java.util.Arrays
;
import
java.util.List
;
import
org.h2.jaqu.Db
;
import
org.h2.jaqu.Table
;
import
org.h2.test.TestBase
;
/**
* Tests if converting a CLOB to a String works.
*/
public
class
ClobTest
extends
TestBase
{
/**
* This method is called when executing this application from the command
* line.
*
* @param args the command line parameters
*/
public
static
void
main
(
String
...
args
)
throws
Exception
{
new
ClobTest
().
test
();
}
public
void
test
()
throws
Exception
{
String
create
=
"CREATE TABLE CLOB_TEST(ID INT PRIMARY KEY, WORDS {0})"
;
Db
db
=
Db
.
open
(
"jdbc:h2:mem:"
,
"sa"
,
"sa"
);
db
.
executeUpdate
(
MessageFormat
.
format
(
create
,
"VARCHAR(255)"
));
db
.
insertAll
(
StringRecord
.
getList
());
testSimpleUpdate
(
db
,
"VARCHARs fail"
);
db
.
close
();
db
=
Db
.
open
(
"jdbc:h2:mem:"
,
"sa"
,
"sa"
);
db
.
executeUpdate
(
MessageFormat
.
format
(
create
,
"TEXT"
));
db
.
insertAll
(
StringRecord
.
getList
());
testSimpleUpdate
(
db
,
"CLOBs fail because of single quote artifacts"
);
db
.
close
();
}
private
void
testSimpleUpdate
(
Db
db
,
String
failureMsg
)
{
String
newWords
=
"I changed the words"
;
StringRecord
r
=
new
StringRecord
();
StringRecord
originalRecord
=
db
.
from
(
r
).
where
(
r
.
id
).
is
(
2
).
selectFirst
();
String
oldWords
=
originalRecord
.
words
;
originalRecord
.
words
=
newWords
;
db
.
update
(
originalRecord
);
StringRecord
r2
=
new
StringRecord
();
StringRecord
revisedRecord
=
db
.
from
(
r2
).
where
(
r2
.
id
).
is
(
2
).
selectFirst
();
assertEquals
(
failureMsg
,
newWords
,
revisedRecord
.
words
);
// undo update
originalRecord
.
words
=
oldWords
;
db
.
update
(
originalRecord
);
}
/**
* A simple class used in this test.
*/
public
static
class
StringRecord
implements
Table
{
public
Integer
id
;
public
String
words
;
public
StringRecord
()
{
// public constructor
}
private
StringRecord
(
int
id
,
String
words
)
{
this
.
id
=
id
;
this
.
words
=
words
;
}
public
void
define
()
{
tableName
(
"CLOB_TEST"
);
primaryKey
(
id
);
}
private
static
StringRecord
create
(
int
id
,
String
words
)
{
return
new
StringRecord
(
id
,
words
);
}
public
static
List
<
StringRecord
>
getList
()
{
StringRecord
[]
list
=
{
create
(
1
,
"Once upon a midnight dreary, while I pondered weak and weary,"
),
create
(
2
,
"Over many a quaint and curious volume of forgotten lore,"
),
create
(
3
,
"While I nodded, nearly napping, suddenly there came a tapping,"
),
create
(
4
,
"As of some one gently rapping, rapping at my chamber door."
),
create
(
5
,
"`'Tis some visitor,' I muttered, `tapping at my chamber door -"
),
create
(
6
,
"Only this, and nothing more.'"
)
};
return
Arrays
.
asList
(
list
);
}
public
String
toString
()
{
return
id
+
": "
+
words
;
}
}
}
This diff is collapsed.
Click to expand it.
h2/src/tools/org/h2/jaqu/util/Utils.java
浏览文件 @
8f55701b
...
...
@@ -7,15 +7,18 @@
package
org
.
h2
.
jaqu
.
util
;
//## Java 1.5 begin ##
import
java.io.Reader
;
import
java.lang.reflect.Constructor
;
import
java.math.BigDecimal
;
import
java.math.BigInteger
;
import
java.sql.Clob
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.IdentityHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.h2.util.IOUtils
;
//## Java 1.5 end ##
/**
...
...
@@ -134,6 +137,15 @@ public class Utils {
return
o
;
}
if
(
targetType
==
String
.
class
)
{
if
(
Clob
.
class
.
isAssignableFrom
(
currentType
))
{
Clob
c
=
(
Clob
)
o
;
try
{
Reader
r
=
c
.
getCharacterStream
();
return
IOUtils
.
readStringAndClose
(
r
,
-
1
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"Error converting CLOB to String: "
+
e
.
toString
(),
e
);
}
}
return
o
.
toString
();
}
if
(
Number
.
class
.
isAssignableFrom
(
currentType
))
{
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论