|
79 | 79 | # Insert one tuple and leave the transaction open
|
80 | 80 | $killme_stdin2 .= q[
|
81 | 81 | BEGIN;
|
82 |
| -SELECT $$insert-tuple-to-lock-next-insert$$; |
83 | 82 | INSERT INTO tab_crash (a) VALUES(1);
|
| 83 | +SELECT $$insert-tuple-to-lock-next-insert$$; |
84 | 84 | ];
|
85 | 85 | pump_until($killme2, \$killme_stdout2, qr/insert-tuple-to-lock-next-insert/m);
|
86 | 86 | $killme_stdout2 = '';
|
|
100 | 100 | $killme_stdout = '';
|
101 | 101 | $killme_stderr = '';
|
102 | 102 |
|
| 103 | +# Wait until the batch insert gets stuck on the lock. |
| 104 | +$killme_stdin2 .= q[ |
| 105 | +DO $c$ |
| 106 | +DECLARE |
| 107 | + c INT; |
| 108 | +BEGIN |
| 109 | + LOOP |
| 110 | + SELECT COUNT(*) INTO c FROM pg_locks WHERE pid = ] . $pid . q[ AND NOT granted; |
| 111 | + IF c > 0 THEN |
| 112 | + EXIT; |
| 113 | + END IF; |
| 114 | + END LOOP; |
| 115 | +END; $c$; |
| 116 | +SELECT $$insert-tuple-lock-waiting$$; |
| 117 | +]; |
| 118 | + |
| 119 | +pump_until($killme2, \$killme_stdout2, qr/insert-tuple-lock-waiting/m); |
| 120 | +$killme_stdout2 = ''; |
| 121 | +$killme_stderr2 = ''; |
| 122 | + |
103 | 123 | # Kill with SIGKILL
|
104 | 124 | my $ret = TestLib::system_log('pg_ctl', 'kill', 'KILL', $pid);
|
105 | 125 | is($ret, 0, 'killed process with KILL');
|
|
147 | 167 | # Insert one tuple and leave the transaction open
|
148 | 168 | $killme_stdin2 .= q[
|
149 | 169 | BEGIN;
|
150 |
| -SELECT $$insert-tuple-to-lock-next-insert$$; |
151 | 170 | INSERT INTO tab_crash (a) VALUES(1);
|
| 171 | +SELECT $$insert-tuple-to-lock-next-insert$$; |
152 | 172 | ];
|
153 | 173 | pump_until($killme2, \$killme_stdout2, qr/insert-tuple-to-lock-next-insert/m);
|
154 | 174 | $killme_stdout2 = '';
|
|
168 | 188 | $killme_stdout = '';
|
169 | 189 | $killme_stderr = '';
|
170 | 190 |
|
| 191 | +# Wait until the batch insert gets stuck on the lock. |
| 192 | +$killme_stdin2 .= q[ |
| 193 | +DO $c$ |
| 194 | +DECLARE |
| 195 | + c INT; |
| 196 | +BEGIN |
| 197 | + LOOP |
| 198 | + SELECT COUNT(*) INTO c FROM pg_locks WHERE pid = ] . $pid . q[ AND NOT granted; |
| 199 | + IF c > 0 THEN |
| 200 | + EXIT; |
| 201 | + END IF; |
| 202 | + END LOOP; |
| 203 | +END; $c$; |
| 204 | +SELECT $$insert-tuple-lock-waiting$$; |
| 205 | +]; |
| 206 | + |
| 207 | +pump_until($killme2, \$killme_stdout2, qr/insert-tuple-lock-waiting/m); |
| 208 | +$killme_stdout2 = ''; |
| 209 | +$killme_stderr2 = ''; |
| 210 | + |
171 | 211 | # Kill with SIGKILL
|
172 | 212 | $ret = TestLib::system_log('pg_ctl', 'kill', 'KILL', $pid);
|
173 | 213 | is($ret, 0, 'killed process with KILL');
|
|
0 commit comments