-
Notifications
You must be signed in to change notification settings - Fork 1
/
Expected-Output.txt
119 lines (115 loc) · 2.1 KB
/
Expected-Output.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Hibernate:
drop table if exists player_hibernate
Hibernate:
create table player_hibernate (
coins integer,
goods integer,
id varchar(255) not null,
primary key (id)
) engine=InnoDB
APP: createPlayers() --> 1
Hibernate:
insert
into
player_hibernate
(coins,goods,id)
values
(?,?,?)
APP: COMMIT;
APP: COMMIT;
PlayerDAO.getPlayer:
=> id: test
=> coins: 1
=> goods: 1
Hibernate:
select
count(p1_0.id)
from
player_hibernate p1_0
APP: COMMIT;
PlayerDAO.countPlayers:
=> 1 total players
Hibernate:
SELECT
*
FROM
player_hibernate LIMIT ?
[printPlayers]:
id => test
coins => 1
goods => 1
APP: COMMIT;
APP: createPlayers() --> 2
Hibernate:
insert
into
player_hibernate
(coins,goods,id)
values
(?,?,?)
Hibernate:
insert
into
player_hibernate
(coins,goods,id)
values
(?,?,?)
APP: COMMIT;
PlayerDAO.createPlayers:
=> 2 total inserted players
PlayerDAO.buyGoods:
=> this trade will fail
Hibernate:
SELECT
*
FROM
player_hibernate
WHERE
`id` = ? FOR UPDATE
Hibernate:
SELECT
*
FROM
player_hibernate
WHERE
`id` = ? FOR UPDATE
APP: ROLLBACK BY LOGIC; coins or goods not enough, rollbackPlayerDAO.buyGoods:
=> null total update players
PlayerDAO.buyGoods:
=> this trade will success
Hibernate:
SELECT
*
FROM
player_hibernate
WHERE
`id` = ? FOR UPDATE
Hibernate:
SELECT
*
FROM
player_hibernate
WHERE
`id` = ? FOR UPDATE
APP: buyGoods --> sell: 2, buy: 1, amount: 2, price: 100
Hibernate:
update
player_hibernate
set
coins=?,
goods=?
where
id=?
Hibernate:
update
player_hibernate
set
coins=?,
goods=?
where
id=?
APP: COMMIT;
PlayerDAO.buyGoods:
=> 2 total update players
Hibernate:
drop table if exists player_hibernate