sqlpostgres 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +8 -0
- data/Gemfile.lock +22 -0
- data/LICENSE.md +23 -0
- data/README.rdoc +59 -0
- data/Rakefile +32 -0
- data/VERSION +1 -0
- data/doc/BUGS +2 -0
- data/doc/examples/README +6 -0
- data/doc/examples/connection.rb +16 -0
- data/doc/examples/connection_auto.rb +22 -0
- data/doc/examples/connection_ctor.rb +18 -0
- data/doc/examples/connection_default.rb +15 -0
- data/doc/examples/connection_exec.rb +18 -0
- data/doc/examples/connection_manual.rb +12 -0
- data/doc/examples/connection_wrapped_new.rb +13 -0
- data/doc/examples/connection_wrapped_open.rb +13 -0
- data/doc/examples/cursor.rb +38 -0
- data/doc/examples/include_module.rb +9 -0
- data/doc/examples/include_module2.rb +12 -0
- data/doc/examples/insert.rb +30 -0
- data/doc/examples/insert2.rb +36 -0
- data/doc/examples/insert_bytea.rb +16 -0
- data/doc/examples/insert_bytea_array.rb +17 -0
- data/doc/examples/insert_default_values.rb +16 -0
- data/doc/examples/insert_insert.rb +16 -0
- data/doc/examples/insert_insert_default.rb +16 -0
- data/doc/examples/insert_insert_select.rb +20 -0
- data/doc/examples/insert_select.rb +20 -0
- data/doc/examples/interval.rb +17 -0
- data/doc/examples/savepoint.rb +38 -0
- data/doc/examples/select.rb +33 -0
- data/doc/examples/select2.rb +36 -0
- data/doc/examples/select_cross_join.rb +18 -0
- data/doc/examples/select_distinct.rb +18 -0
- data/doc/examples/select_distinct_on +19 -0
- data/doc/examples/select_for_update.rb +18 -0
- data/doc/examples/select_from.rb +17 -0
- data/doc/examples/select_from_subselect.rb +20 -0
- data/doc/examples/select_group_by.rb +19 -0
- data/doc/examples/select_having.rb +20 -0
- data/doc/examples/select_join_on.rb +18 -0
- data/doc/examples/select_join_using.rb +18 -0
- data/doc/examples/select_limit.rb +19 -0
- data/doc/examples/select_natural_join.rb +18 -0
- data/doc/examples/select_offset.rb +19 -0
- data/doc/examples/select_order_by.rb +20 -0
- data/doc/examples/select_select.rb +30 -0
- data/doc/examples/select_select_alias.rb +30 -0
- data/doc/examples/select_select_expression.rb +31 -0
- data/doc/examples/select_select_literal.rb +24 -0
- data/doc/examples/select_union.rb +21 -0
- data/doc/examples/select_where_array.rb +18 -0
- data/doc/examples/select_where_in.rb +18 -0
- data/doc/examples/select_where_string.rb +18 -0
- data/doc/examples/simple.rb +34 -0
- data/doc/examples/transaction.rb +30 -0
- data/doc/examples/transaction_abort.rb +30 -0
- data/doc/examples/transaction_commit.rb +34 -0
- data/doc/examples/translate_substitute_values.rb +17 -0
- data/doc/examples/update.rb +32 -0
- data/doc/examples/update2.rb +44 -0
- data/doc/examples/update_only.rb +17 -0
- data/doc/examples/update_set.rb +17 -0
- data/doc/examples/update_set_array.rb +16 -0
- data/doc/examples/update_set_bytea.rb +16 -0
- data/doc/examples/update_set_expression.rb +16 -0
- data/doc/examples/update_set_subselect.rb +20 -0
- data/doc/examples/update_where.rb +17 -0
- data/doc/examples/use_prefix.rb +8 -0
- data/doc/examples/use_prefix2.rb +11 -0
- data/doc/index.html +31 -0
- data/doc/insertexamples.rb +9 -0
- data/doc/makemanual +4 -0
- data/doc/makerdoc +5 -0
- data/doc/manual.dbk +622 -0
- data/lib/sqlpostgres/Connection.rb +198 -0
- data/lib/sqlpostgres/Cursor.rb +157 -0
- data/lib/sqlpostgres/Delete.rb +67 -0
- data/lib/sqlpostgres/Exceptions.rb +15 -0
- data/lib/sqlpostgres/Insert.rb +279 -0
- data/lib/sqlpostgres/NullConnection.rb +22 -0
- data/lib/sqlpostgres/PgBit.rb +73 -0
- data/lib/sqlpostgres/PgBox.rb +37 -0
- data/lib/sqlpostgres/PgCidr.rb +21 -0
- data/lib/sqlpostgres/PgCircle.rb +75 -0
- data/lib/sqlpostgres/PgInet.rb +21 -0
- data/lib/sqlpostgres/PgInterval.rb +208 -0
- data/lib/sqlpostgres/PgLineSegment.rb +37 -0
- data/lib/sqlpostgres/PgMacAddr.rb +21 -0
- data/lib/sqlpostgres/PgPath.rb +64 -0
- data/lib/sqlpostgres/PgPoint.rb +65 -0
- data/lib/sqlpostgres/PgPolygon.rb +56 -0
- data/lib/sqlpostgres/PgTime.rb +77 -0
- data/lib/sqlpostgres/PgTimeWithTimeZone.rb +98 -0
- data/lib/sqlpostgres/PgTimestamp.rb +93 -0
- data/lib/sqlpostgres/PgTwoPoints.rb +54 -0
- data/lib/sqlpostgres/PgType.rb +34 -0
- data/lib/sqlpostgres/PgWrapper.rb +41 -0
- data/lib/sqlpostgres/Savepoint.rb +98 -0
- data/lib/sqlpostgres/Select.rb +855 -0
- data/lib/sqlpostgres/Transaction.rb +120 -0
- data/lib/sqlpostgres/Translate.rb +436 -0
- data/lib/sqlpostgres/Update.rb +188 -0
- data/lib/sqlpostgres.rb +67 -0
- data/test/Assert.rb +72 -0
- data/test/Connection.test.rb +246 -0
- data/test/Cursor.test.rb +190 -0
- data/test/Delete.test.rb +68 -0
- data/test/Insert.test.rb +123 -0
- data/test/MockPGconn.rb +62 -0
- data/test/NullConnection.test.rb +32 -0
- data/test/PgBit.test.rb +98 -0
- data/test/PgBox.test.rb +108 -0
- data/test/PgCidr.test.rb +61 -0
- data/test/PgCircle.test.rb +107 -0
- data/test/PgInet.test.rb +61 -0
- data/test/PgInterval.test.rb +180 -0
- data/test/PgLineSegment.test.rb +108 -0
- data/test/PgMacAddr.test.rb +61 -0
- data/test/PgPath.test.rb +106 -0
- data/test/PgPoint.test.rb +100 -0
- data/test/PgPolygon.test.rb +95 -0
- data/test/PgTime.test.rb +120 -0
- data/test/PgTimeWithTimeZone.test.rb +117 -0
- data/test/PgTimestamp.test.rb +134 -0
- data/test/RandomThings.rb +25 -0
- data/test/Savepoint.test.rb +286 -0
- data/test/Select.test.rb +930 -0
- data/test/Test.rb +62 -0
- data/test/TestConfig.rb +21 -0
- data/test/TestSetup.rb +13 -0
- data/test/TestUtil.rb +92 -0
- data/test/Transaction.test.rb +275 -0
- data/test/Translate.test.rb +354 -0
- data/test/Update.test.rb +227 -0
- data/test/roundtrip.test.rb +565 -0
- data/test/test +34 -0
- data/tools/exampleinserter/ExampleInserter.rb +177 -0
- data/tools/rdoc/ChangeLog +796 -0
- data/tools/rdoc/EXAMPLE.rb +48 -0
- data/tools/rdoc/MANIFEST +58 -0
- data/tools/rdoc/Makefile +27 -0
- data/tools/rdoc/NEW_FEATURES +226 -0
- data/tools/rdoc/README +390 -0
- data/tools/rdoc/ToDo +6 -0
- data/tools/rdoc/contrib/Index +6 -0
- data/tools/rdoc/contrib/xslfo/ChangeLog +181 -0
- data/tools/rdoc/contrib/xslfo/README +106 -0
- data/tools/rdoc/contrib/xslfo/TODO +10 -0
- data/tools/rdoc/contrib/xslfo/convert.xsl +151 -0
- data/tools/rdoc/contrib/xslfo/demo/README +21 -0
- data/tools/rdoc/contrib/xslfo/demo/rdocfo +99 -0
- data/tools/rdoc/contrib/xslfo/fcm.xsl +54 -0
- data/tools/rdoc/contrib/xslfo/files.xsl +62 -0
- data/tools/rdoc/contrib/xslfo/labeled-lists.xsl +66 -0
- data/tools/rdoc/contrib/xslfo/lists.xsl +44 -0
- data/tools/rdoc/contrib/xslfo/modules.xsl +152 -0
- data/tools/rdoc/contrib/xslfo/rdoc.xsl +75 -0
- data/tools/rdoc/contrib/xslfo/source.xsl +66 -0
- data/tools/rdoc/contrib/xslfo/styles.xsl +69 -0
- data/tools/rdoc/contrib/xslfo/tables.xsl +67 -0
- data/tools/rdoc/contrib/xslfo/utils.xsl +21 -0
- data/tools/rdoc/debian/changelog +33 -0
- data/tools/rdoc/debian/compat +1 -0
- data/tools/rdoc/debian/control +20 -0
- data/tools/rdoc/debian/copyright +10 -0
- data/tools/rdoc/debian/dirs +2 -0
- data/tools/rdoc/debian/docs +2 -0
- data/tools/rdoc/debian/rdoc.1 +252 -0
- data/tools/rdoc/debian/rdoc.manpages +1 -0
- data/tools/rdoc/debian/rdoc.pod +149 -0
- data/tools/rdoc/debian/rules +9 -0
- data/tools/rdoc/dot/dot.rb +255 -0
- data/tools/rdoc/etc/rdoc.dtd +203 -0
- data/tools/rdoc/install.rb +137 -0
- data/tools/rdoc/markup/install.rb +43 -0
- data/tools/rdoc/markup/sample/sample.rb +42 -0
- data/tools/rdoc/markup/simple_markup/fragments.rb +323 -0
- data/tools/rdoc/markup/simple_markup/inline.rb +348 -0
- data/tools/rdoc/markup/simple_markup/lines.rb +147 -0
- data/tools/rdoc/markup/simple_markup/preprocess.rb +68 -0
- data/tools/rdoc/markup/simple_markup/to_html.rb +281 -0
- data/tools/rdoc/markup/simple_markup.rb +474 -0
- data/tools/rdoc/markup/test/AllTests.rb +2 -0
- data/tools/rdoc/markup/test/TestInline.rb +151 -0
- data/tools/rdoc/markup/test/TestParse.rb +411 -0
- data/tools/rdoc/rdoc/code_objects.rb +536 -0
- data/tools/rdoc/rdoc/diagram.rb +331 -0
- data/tools/rdoc/rdoc/generators/chm_generator.rb +112 -0
- data/tools/rdoc/rdoc/generators/html_generator.rb +1268 -0
- data/tools/rdoc/rdoc/generators/template/chm/chm.rb +86 -0
- data/tools/rdoc/rdoc/generators/template/html/html.rb +705 -0
- data/tools/rdoc/rdoc/generators/template/html/kilmer.rb +377 -0
- data/tools/rdoc/rdoc/generators/template/xml/rdf.rb +110 -0
- data/tools/rdoc/rdoc/generators/template/xml/xml.rb +110 -0
- data/tools/rdoc/rdoc/generators/xml_generator.rb +130 -0
- data/tools/rdoc/rdoc/options.rb +451 -0
- data/tools/rdoc/rdoc/parsers/parse_c.rb +287 -0
- data/tools/rdoc/rdoc/parsers/parse_f95.rb +118 -0
- data/tools/rdoc/rdoc/parsers/parse_rb.rb +2311 -0
- data/tools/rdoc/rdoc/parsers/parse_simple.rb +37 -0
- data/tools/rdoc/rdoc/parsers/parserfactory.rb +75 -0
- data/tools/rdoc/rdoc/rdoc.rb +219 -0
- data/tools/rdoc/rdoc/template.rb +234 -0
- data/tools/rdoc/rdoc/tokenstream.rb +25 -0
- data/tools/rdoc/rdoc.rb +9 -0
- metadata +291 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'rubygems'
|
|
4
|
+
require 'bundler/setup'
|
|
5
|
+
$:.unshift(File.dirname(__FILE__))
|
|
6
|
+
require 'TestSetup'
|
|
7
|
+
|
|
8
|
+
require 'MockPGconn'
|
|
9
|
+
|
|
10
|
+
class SavepointTest < Test
|
|
11
|
+
|
|
12
|
+
include SqlPostgres
|
|
13
|
+
include TestUtil
|
|
14
|
+
|
|
15
|
+
def testSuccess
|
|
16
|
+
Connection.mockPgClass do
|
|
17
|
+
connection = Connection.new
|
|
18
|
+
assertEquals(MockPGconn.state[:statements], nil)
|
|
19
|
+
Savepoint.new('bar', connection) do
|
|
20
|
+
connection.exec("foo")
|
|
21
|
+
assertEquals(MockPGconn.state[:statements],
|
|
22
|
+
["savepoint bar", "foo"])
|
|
23
|
+
end
|
|
24
|
+
assertEquals(MockPGconn.state[:statements],
|
|
25
|
+
["savepoint bar", "foo", "release savepoint bar"])
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def testManualCommit
|
|
30
|
+
Connection.mockPgClass do
|
|
31
|
+
connection = Connection.new
|
|
32
|
+
assertEquals(MockPGconn.state[:statements], nil)
|
|
33
|
+
Savepoint.new('bar', connection) do
|
|
34
|
+
connection.exec("foo")
|
|
35
|
+
assertEquals(MockPGconn.state[:statements],
|
|
36
|
+
["savepoint bar", "foo"])
|
|
37
|
+
end
|
|
38
|
+
assertEquals(MockPGconn.state[:statements],
|
|
39
|
+
["savepoint bar", "foo", "release savepoint bar"])
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def testSuccess_Real
|
|
44
|
+
makeTestConnection do |connection|
|
|
45
|
+
connection.exec("create temporary table #{table1} (i int)")
|
|
46
|
+
Transaction.new(connection) do
|
|
47
|
+
connection.exec("insert into #{table1} values (1)")
|
|
48
|
+
Savepoint.new('bar', connection) do
|
|
49
|
+
connection.exec("insert into #{table1} values (2)")
|
|
50
|
+
end
|
|
51
|
+
connection.exec("insert into #{table1} values (3)")
|
|
52
|
+
end
|
|
53
|
+
assertEquals(connection.query("select i from #{table1} order by i"), [["1"], ["2"], ["3"]])
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def testSuccess_Real_DefaultConnection
|
|
58
|
+
makeTestConnection do |connection|
|
|
59
|
+
setDefaultConnection(connection) do
|
|
60
|
+
connection.exec("create temporary table #{table1} (i int)")
|
|
61
|
+
Transaction.new(connection) do
|
|
62
|
+
connection.exec("insert into #{table1} values (1)")
|
|
63
|
+
Savepoint.new('bar') do
|
|
64
|
+
connection.exec("insert into #{table1} values (2)")
|
|
65
|
+
end
|
|
66
|
+
connection.exec("insert into #{table1} values (3)")
|
|
67
|
+
end
|
|
68
|
+
assertEquals(connection.query("select i from #{table1} order by i"), [["1"], ["2"], ["3"]])
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def testRuntimeError
|
|
74
|
+
Connection.mockPgClass do
|
|
75
|
+
connection = Connection.new
|
|
76
|
+
assertEquals(MockPGconn.state[:statements], nil)
|
|
77
|
+
assertException(RuntimeError, "Oh no!") do
|
|
78
|
+
Savepoint.new('bar', connection) do
|
|
79
|
+
connection.exec("foo")
|
|
80
|
+
assertEquals(MockPGconn.state[:statements],
|
|
81
|
+
["savepoint bar", "foo"])
|
|
82
|
+
raise "Oh no!"
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
assertEquals(MockPGconn.state[:statements],
|
|
86
|
+
["savepoint bar", "foo", "rollback to bar", "release savepoint bar"])
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
class Sorry < Exception
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def testException
|
|
94
|
+
Connection.mockPgClass do
|
|
95
|
+
connection = Connection.new
|
|
96
|
+
assertEquals(MockPGconn.state[:statements], nil)
|
|
97
|
+
assertException(Sorry, "Oh no!") do
|
|
98
|
+
Savepoint.new('bar', connection) do
|
|
99
|
+
connection.exec("foo")
|
|
100
|
+
assertEquals(MockPGconn.state[:statements],
|
|
101
|
+
["savepoint bar", "foo"])
|
|
102
|
+
raise Sorry, "Oh no!"
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
assertEquals(MockPGconn.state[:statements],
|
|
106
|
+
["savepoint bar", "foo", "rollback to bar", "release savepoint bar"])
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def testException
|
|
111
|
+
Connection.mockPgClass do
|
|
112
|
+
connection = Connection.new
|
|
113
|
+
assertEquals(MockPGconn.state[:statements], nil)
|
|
114
|
+
assertException(Sorry, "Oh no!") do
|
|
115
|
+
Savepoint.new('bar', connection) do
|
|
116
|
+
connection.exec("foo")
|
|
117
|
+
assertEquals(MockPGconn.state[:statements],
|
|
118
|
+
["savepoint bar", "foo"])
|
|
119
|
+
raise Sorry, "Oh no!"
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
assertEquals(MockPGconn.state[:statements],
|
|
123
|
+
["savepoint bar", "foo", "rollback to bar", "release savepoint bar"])
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def testRuntimeError_Real
|
|
128
|
+
makeTestConnection do |connection|
|
|
129
|
+
connection.exec("create temporary table #{table1} (i int)")
|
|
130
|
+
Transaction.new(connection) do
|
|
131
|
+
connection.exec("insert into #{table1} values (1)")
|
|
132
|
+
assertException(RuntimeError, "Oh no!") do
|
|
133
|
+
Savepoint.new('bar', connection) do
|
|
134
|
+
connection.exec("insert into #{table1} values (2)")
|
|
135
|
+
assertEquals(connection.query("select i from #{table1}"),
|
|
136
|
+
[["1"], ["2"]])
|
|
137
|
+
raise "Oh no!"
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
connection.exec("insert into #{table1} values (3)")
|
|
141
|
+
end
|
|
142
|
+
assertEquals(connection.query("select i from #{table1} order by i"), [["1"], ["3"]])
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def testManualCommit
|
|
147
|
+
Connection.mockPgClass do
|
|
148
|
+
connection = Connection.new
|
|
149
|
+
assertEquals(MockPGconn.state[:statements], nil)
|
|
150
|
+
Savepoint.new('bar', connection) do |transaction|
|
|
151
|
+
connection.exec("foo")
|
|
152
|
+
transaction.commit
|
|
153
|
+
assertEquals(MockPGconn.state[:statements],
|
|
154
|
+
["savepoint bar", "foo", "release savepoint bar"])
|
|
155
|
+
end
|
|
156
|
+
assertEquals(MockPGconn.state[:statements],
|
|
157
|
+
["savepoint bar", "foo", "release savepoint bar"])
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def testManualCommitTwice
|
|
162
|
+
Connection.mockPgClass do
|
|
163
|
+
connection = Connection.new
|
|
164
|
+
assertEquals(MockPGconn.state[:statements], nil)
|
|
165
|
+
Savepoint.new('bar', connection) do |transaction|
|
|
166
|
+
connection.exec("foo")
|
|
167
|
+
transaction.commit
|
|
168
|
+
transaction.commit
|
|
169
|
+
assertEquals(MockPGconn.state[:statements],
|
|
170
|
+
["savepoint bar", "foo", "release savepoint bar"])
|
|
171
|
+
end
|
|
172
|
+
assertEquals(MockPGconn.state[:statements],
|
|
173
|
+
["savepoint bar", "foo", "release savepoint bar"])
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def testManualAbortAfterCommit
|
|
178
|
+
Connection.mockPgClass do
|
|
179
|
+
connection = Connection.new
|
|
180
|
+
assertEquals(MockPGconn.state[:statements], nil)
|
|
181
|
+
Savepoint.new('bar', connection) do |transaction|
|
|
182
|
+
connection.exec("foo")
|
|
183
|
+
transaction.commit
|
|
184
|
+
transaction.abort
|
|
185
|
+
assertEquals(MockPGconn.state[:statements],
|
|
186
|
+
["savepoint bar", "foo", "release savepoint bar"])
|
|
187
|
+
end
|
|
188
|
+
assertEquals(MockPGconn.state[:statements],
|
|
189
|
+
["savepoint bar", "foo", "release savepoint bar"])
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def testManualCommitWithException
|
|
194
|
+
Connection.mockPgClass do
|
|
195
|
+
connection = Connection.new
|
|
196
|
+
assertEquals(MockPGconn.state[:statements], nil)
|
|
197
|
+
begin
|
|
198
|
+
Savepoint.new('bar', connection) do |transaction|
|
|
199
|
+
connection.exec("foo")
|
|
200
|
+
transaction.commit
|
|
201
|
+
assertEquals(MockPGconn.state[:statements],
|
|
202
|
+
["savepoint bar", "foo", "release savepoint bar"])
|
|
203
|
+
raise Sorry
|
|
204
|
+
end
|
|
205
|
+
rescue Sorry => e
|
|
206
|
+
end
|
|
207
|
+
assertEquals(MockPGconn.state[:statements],
|
|
208
|
+
["savepoint bar", "foo", "release savepoint bar"])
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def testManualAbort
|
|
213
|
+
Connection.mockPgClass do
|
|
214
|
+
connection = Connection.new
|
|
215
|
+
assertEquals(MockPGconn.state[:statements], nil)
|
|
216
|
+
Savepoint.new('bar', connection) do |transaction|
|
|
217
|
+
connection.exec("foo")
|
|
218
|
+
transaction.abort
|
|
219
|
+
assertEquals(MockPGconn.state[:statements],
|
|
220
|
+
["savepoint bar", "foo", "rollback to bar", "release savepoint bar"])
|
|
221
|
+
end
|
|
222
|
+
assertEquals(MockPGconn.state[:statements],
|
|
223
|
+
["savepoint bar", "foo", "rollback to bar", "release savepoint bar"])
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def testManualAbortTwice
|
|
228
|
+
Connection.mockPgClass do
|
|
229
|
+
connection = Connection.new
|
|
230
|
+
assertEquals(MockPGconn.state[:statements], nil)
|
|
231
|
+
Savepoint.new('bar', connection) do |transaction|
|
|
232
|
+
connection.exec("foo")
|
|
233
|
+
transaction.abort
|
|
234
|
+
transaction.abort
|
|
235
|
+
assertEquals(MockPGconn.state[:statements],
|
|
236
|
+
["savepoint bar", "foo", "rollback to bar", "release savepoint bar"])
|
|
237
|
+
end
|
|
238
|
+
assertEquals(MockPGconn.state[:statements],
|
|
239
|
+
["savepoint bar", "foo", "rollback to bar", "release savepoint bar"])
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
def testManualCommitAfterAbort
|
|
244
|
+
Connection.mockPgClass do
|
|
245
|
+
connection = Connection.new
|
|
246
|
+
assertEquals(MockPGconn.state[:statements], nil)
|
|
247
|
+
Savepoint.new('bar', connection) do |transaction|
|
|
248
|
+
connection.exec("foo")
|
|
249
|
+
transaction.abort
|
|
250
|
+
transaction.commit
|
|
251
|
+
assertEquals(MockPGconn.state[:statements],
|
|
252
|
+
["savepoint bar", "foo", "rollback to bar", "release savepoint bar"])
|
|
253
|
+
end
|
|
254
|
+
assertEquals(MockPGconn.state[:statements],
|
|
255
|
+
["savepoint bar", "foo", "rollback to bar", "release savepoint bar"])
|
|
256
|
+
end
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def testManualAbortWithException
|
|
260
|
+
Connection.mockPgClass do
|
|
261
|
+
connection = Connection.new
|
|
262
|
+
assertEquals(MockPGconn.state[:statements], nil)
|
|
263
|
+
begin
|
|
264
|
+
Savepoint.new('bar', connection) do |transaction|
|
|
265
|
+
connection.exec("foo")
|
|
266
|
+
transaction.abort
|
|
267
|
+
assertEquals(MockPGconn.state[:statements],
|
|
268
|
+
["savepoint bar", "foo", "rollback to bar", "release savepoint bar"])
|
|
269
|
+
raise Sorry
|
|
270
|
+
end
|
|
271
|
+
rescue Sorry => e
|
|
272
|
+
end
|
|
273
|
+
assertEquals(MockPGconn.state[:statements],
|
|
274
|
+
["savepoint bar", "foo", "rollback to bar", "release savepoint bar"])
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
SavepointTest.new.run if $0 == __FILE__
|
|
281
|
+
|
|
282
|
+
# Local Variables:
|
|
283
|
+
# tab-width: 2
|
|
284
|
+
# ruby-indent-level: 2
|
|
285
|
+
# indent-tabs-mode: nil
|
|
286
|
+
# End:
|