Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
9339158f
提交
9339158f
authored
9 年前
作者:
Noel Grandin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix bug in XA management when doing rollback after prepare. Patch by
Stephane Lacoin.
上级
7071b605
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
无相关合并请求
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
44 行增加
和
2 行删除
+44
-2
changelog.html
h2/src/docsrc/html/changelog.html
+1
-0
JdbcXAConnection.java
h2/src/main/org/h2/jdbcx/JdbcXAConnection.java
+3
-2
TestXA.java
h2/src/test/org/h2/test/jdbcx/TestXA.java
+40
-0
没有找到文件。
h2/src/docsrc/html/changelog.html
浏览文件 @
9339158f
...
...
@@ -21,6 +21,7 @@ Change Log
<h2>
Next Version (unreleased)
</h2>
<ul>
<li>
Fix bug in XA management when doing rollback after prepare. Patch by Stephane Lacoin.
<li>
MVStore CLOB and BLOB: An exception with the message "Block not found" could be thrown
when using the MVStore storage, when copying LOB objects
(for example due to "alter table" on a table with a LOB object),
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/jdbcx/JdbcXAConnection.java
浏览文件 @
9339158f
...
...
@@ -274,8 +274,6 @@ public class JdbcXAConnection extends TraceObject implements XAConnection,
debugCode
(
"rollback("
+
JdbcXid
.
toString
(
xid
)+
");"
);
}
try
{
physicalConn
.
rollback
();
physicalConn
.
setAutoCommit
(
true
);
if
(
prepared
)
{
Statement
stat
=
null
;
try
{
...
...
@@ -285,7 +283,10 @@ public class JdbcXAConnection extends TraceObject implements XAConnection,
JdbcUtils
.
closeSilently
(
stat
);
}
prepared
=
false
;
}
else
{
physicalConn
.
rollback
();
}
physicalConn
.
setAutoCommit
(
true
);
}
catch
(
SQLException
e
)
{
throw
convertException
(
e
);
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/jdbcx/TestXA.java
浏览文件 @
9339158f
...
...
@@ -38,6 +38,7 @@ public class TestXA extends TestBase {
@Override
public
void
test
()
throws
Exception
{
testRollbackWithoutPrepare
();
testRollbackAfterPrepare
();
testXAAutoCommit
();
deleteDb
(
"xa"
);
testMixedXaNormal
();
...
...
@@ -92,6 +93,45 @@ public class TestXA extends TestBase {
deleteDb
(
"xa"
);
}
private
void
testRollbackAfterPrepare
()
throws
Exception
{
Xid
xid
=
new
Xid
()
{
@Override
public
int
getFormatId
()
{
return
3145
;
}
@Override
public
byte
[]
getGlobalTransactionId
()
{
return
new
byte
[]
{
1
,
2
,
3
,
4
,
5
,
6
,
6
,
7
,
8
};
}
@Override
public
byte
[]
getBranchQualifier
()
{
return
new
byte
[]
{
34
,
43
,
33
,
3
,
3
,
3
,
33
,
33
,
3
};
}
};
deleteDb
(
"xa"
);
JdbcDataSource
ds
=
new
JdbcDataSource
();
ds
.
setURL
(
getURL
(
"xa"
,
true
));
Connection
dm
=
ds
.
getConnection
();
Statement
stat
=
dm
.
createStatement
();
stat
.
execute
(
"CREATE TABLE IF NOT EXISTS TEST(ID INT PRIMARY KEY, VAL INT)"
);
stat
.
execute
(
"INSERT INTO TEST(ID,VAL) VALUES (1,1)"
);
dm
.
close
();
XAConnection
c
=
ds
.
getXAConnection
();
XAResource
xa
=
c
.
getXAResource
();
Connection
connection
=
c
.
getConnection
();
xa
.
start
(
xid
,
XAResource
.
TMJOIN
);
PreparedStatement
ps
=
connection
.
prepareStatement
(
"UPDATE TEST SET VAL=? WHERE ID=?"
);
ps
.
setInt
(
1
,
new
Random
().
nextInt
());
ps
.
setInt
(
2
,
1
);
ps
.
close
();
xa
.
prepare
(
xid
);
xa
.
rollback
(
xid
);
connection
.
close
();
c
.
close
();
deleteDb
(
"xa"
);
}
private
void
testMixedXaNormal
()
throws
Exception
{
JdbcDataSource
ds
=
new
JdbcDataSource
();
ds
.
setURL
(
"jdbc:h2:mem:test"
);
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论