PHP  
 PHP_7_0
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

Test Failure Report for ext/interbase/tests/005.phpt ('InterBase: transactions')

Script

1: <?php
2:
3:     
require("interbase.inc");
4:     
5:     
ibase_connect($test_base);
6:
7:     @
ibase_query("create table test5 (i integer)");
8:     @
ibase_query("delete from test5");
9:     
ibase_close();
10:
11:
12:     echo 
"default transaction:\n";
13:     
14:
/*
15: Difference between default and other transactions:
16: default committed when you call  ibase_close().
17: Other transaction doing rollback.
18:
19: If you not open default transaction with
20: ibase_trans, default transaction open
21: when you call ibase_query(), ibase_prepare(),
22: ibase_blob_create(), ibase_blob_import()  first time.
23: */
24:
25: /*
26: simple default transaction test without ibase_trans()
27: */
28:     
29:     
ibase_connect($test_base);
30:
31:     echo 
"empty table\n";
32:
33:     
/*  out_table call ibase_query()
34:       and ibase_query() start default transaction */
35:     
out_table("test5");   
36:
37:     
/* in default transaction context */
38:     
ibase_query("insert into test5 (i) values (1)");
39:
40:     echo 
"one row\n";
41:     
out_table("test5");
42:
43:     
ibase_rollback(); /* default rolled */
44:
45:     
echo "after rollback table empty again\n";
46:     
out_table("test5");  /* started new default transaction */
47:     
48:     
ibase_query("insert into test5 (i) values (2)");
49:
50:     
ibase_close(); /* commit here! */
51:     
52:     
ibase_connect($test_base);
53:     
54:     echo 
"one row\n";
55:     
out_table("test5");
56:     
ibase_close();
57:
58:
/*
59: default transaction on default link
60: First open transaction on link will be default.
61: $tr_def_l1 may be omitted. All queryes without link and trans
62: parameters run in this context
63: */
64:     
65:     
$link_def ibase_connect($test_base);
66:     
67:     
$tr_def_l1 ibase_trans(IBASE_READ); /* here transaction start */
68:     
69:     /* all default */
70:     
$res ibase_query("select * from test5");
71:     
72:     echo 
"one row\n";
73:     
out_result($res,"test5");
74:
75:     
ibase_free_result($res);
76:
77:     
/* specify transaction context...  */
78:     
$res ibase_query($tr_def_l1"select * from test5");
79:     
80:     echo 
"one row... again.\n";
81:     
out_result($res,"test5");
82:
83:     
ibase_free_result($res);
84:     
85:     
/* specify default transaction on link  */
86:     
$res ibase_query($link_def"select * from test5");
87:     
88:     echo 
"one row.\n";
89:     
out_result($res,"test5");
90:
91:     
ibase_free_result($res);
92:
93:     
ibase_rollback($link_def); /* just for example */
94:
95:     
ibase_close();
96:     
97:
/*
98: three transaction on default link
99: */
100:     
ibase_connect($test_base);
101:     
102:     
$res ibase_query("select * from test5");
103:     
104:     echo 
"one row\n";
105:     
out_result($res,"test5");
106:
107:     
ibase_free_result($res);
108:
109:     
$tr_1 ibase_query("SET TRANSACTION");
110:     
$tr_2 ibase_query("SET TRANSACTION READ ONLY");
111:     
$tr_3 ibase_trans(IBASE_READ+IBASE_COMMITTED+IBASE_REC_VERSION+IBASE_WAIT);    
112:     
$tr_4 ibase_trans(IBASE_READ+IBASE_COMMITTED+IBASE_REC_NO_VERSION+IBASE_NOWAIT);    
113:     
114:     
/* insert in first transaction context...  */
115:     /* as default */
116:     
ibase_query("insert into test5 (i) values (3)");
117:     
/* specify context */
118:     
ibase_query($tr_1"insert into test5 (i) values (4)");
119:     
120:     
$res ibase_query("select * from test5");
121:     
122:     echo 
"two rows\n";
123:     
out_result($res,"test5");
124:
125:     
ibase_free_result($res);
126:     
127:     
$res ibase_query($tr_1"select * from test5");
128:     
129:     echo 
"two rows again\n";
130:     
out_result($res,"test5");
131:
132:     
ibase_free_result($res);
133:     
134:     
ibase_commit();
135:     
ibase_commit($tr_1);
136:
137:     
$tr_1 ibase_trans();
138:        
ibase_query($tr_1"insert into test5 (i) values (5)");
139:     
140:     
/* tr_2 is IBASE_READ + IBASE_CONCURRENCY + IBASE_WAIT */
141:     
$res ibase_query($tr_2"select * from test5");
142:     
143:     echo 
"one row in second transaction\n";
144:     
out_result($res,"test5");
145:
146:     
ibase_free_result($res);
147:
148:     
/* tr_3 is IBASE_COMMITTED + IBASE_REC_VERSION + IBASE_WAIT */
149:     
$res ibase_query($tr_3"select * from test5");
150:     
151:     echo 
"three rows in third transaction\n";
152:     
out_result($res,"test5");
153:
154:     
ibase_free_result($res);
155:
156:      
/* tr_4 IBASE_COMMITTED + IBASE_REC_NO_VERSION + IBASE_NOWAIT */
157:      
$res ibase_query($tr_4"select * from test5");
158:    
159:       echo 
"three rows in fourth transaction with deadlock\n";
160:     
out_result_trap_error($res,"test5");
161:
162:     
ibase_free_result($res); 
163:  
164:      
ibase_rollback($tr_1);
165:     
ibase_close();
166:
/*
167: transactions on second link
168: */
169:     
$link_1 ibase_pconnect($test_base);
170:     
$link_2 ibase_pconnect($test_base);
171:     
172:     
$tr_1 ibase_trans(IBASE_DEFAULT$link_2);  /* this default transaction also */
173:     
$tr_2 ibase_trans(IBASE_COMMITTED$link_2);
174:     
175:     
$res ibase_query($tr_1"select * from test5");
176:     
177:     echo 
"three rows\n";
178:     
out_result($res,"test5");
179:
180:     
ibase_free_result($res);
181:
182:     
ibase_query($tr_1"insert into test5 (i) values (5)");
183:     
184:     
$res ibase_query($tr_1"select * from test5");
185:     
186:     echo 
"four rows\n";
187:     
out_result($res,"test5");
188:
189:     
ibase_free_result($res);
190:     
191:     
ibase_commit($tr_1);
192:     
193:     
$res ibase_query($tr_2"select * from test5");
194:     
195:     echo 
"four rows again\n";
196:     
out_result($res,"test5");
197:
198:     
ibase_free_result($res);
199:     
200:     
ibase_close($link_1);
201:     
ibase_close($link_2);
202:
203:     echo 
"end of test\n";
204:
?>
205:

Expected

default transaction:
empty table
--- test5 ---
---
one row
--- test5 ---
1	
---
after rollback table empty again
--- test5 ---
---
one row
--- test5 ---
2	
---
one row
--- test5 ---
2	
---
one row... again.
--- test5 ---
2	
---
one row.
--- test5 ---
2	
---
one row
--- test5 ---
2	
---
two rows
--- test5 ---
2	
3	
---
two rows again
--- test5 ---
2	
4	
---
one row in second transaction
--- test5 ---
2	
---
three rows in third transaction
--- test5 ---
2	
3	
4	
---
three rows in fourth transaction with deadlock
--- test5 ---
2	
3	
4	
errmsg [lock conflict on no wait transaction deadlock %a]
---
three rows
--- test5 ---
2	
3	
4	
---
four rows
--- test5 ---
2	
3	
4	
5	
---
four rows again
--- test5 ---
2	
3	
4	
5	
---
end of test

Output

default transaction:
empty table
--- test5 ---
---
one row
--- test5 ---
1	
---
after rollback table empty again
--- test5 ---
---
one row
--- test5 ---
2	
---
one row
--- test5 ---
2	
---
one row... again.
--- test5 ---
2	
---
one row.
--- test5 ---
2	
---
one row
--- test5 ---
2	
---
two rows
--- test5 ---
2	
3	
---
two rows again
--- test5 ---
2	
4	
---
one row in second transaction
--- test5 ---
2	
---
three rows in third transaction
--- test5 ---
2	
3	
4	
---
three rows in fourth transaction with deadlock
--- test5 ---
2	
3	
4	
errmsg [lock conflict on no wait transaction deadlock concurrent transaction number is 17 ]	
---
three rows
--- test5 ---
2	
3	
4	
---
four rows
--- test5 ---
2	
3	
4	
5	
---
four rows again
--- test5 ---
2	
3	
4	
5	
---
end of test

Diff

057+ errmsg [lock conflict on no wait transaction deadlock concurrent transaction number is 17 ]	
057- errmsg [lock conflict on no wait transaction deadlock %a]

 

Generated at Wed, 20 Sep 2017 13:49:37 +0000 (2 days ago)

Copyright © 2005-2017 The PHP Group
All rights reserved.