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.
Files changed (207) hide show
  1. data/Gemfile +8 -0
  2. data/Gemfile.lock +22 -0
  3. data/LICENSE.md +23 -0
  4. data/README.rdoc +59 -0
  5. data/Rakefile +32 -0
  6. data/VERSION +1 -0
  7. data/doc/BUGS +2 -0
  8. data/doc/examples/README +6 -0
  9. data/doc/examples/connection.rb +16 -0
  10. data/doc/examples/connection_auto.rb +22 -0
  11. data/doc/examples/connection_ctor.rb +18 -0
  12. data/doc/examples/connection_default.rb +15 -0
  13. data/doc/examples/connection_exec.rb +18 -0
  14. data/doc/examples/connection_manual.rb +12 -0
  15. data/doc/examples/connection_wrapped_new.rb +13 -0
  16. data/doc/examples/connection_wrapped_open.rb +13 -0
  17. data/doc/examples/cursor.rb +38 -0
  18. data/doc/examples/include_module.rb +9 -0
  19. data/doc/examples/include_module2.rb +12 -0
  20. data/doc/examples/insert.rb +30 -0
  21. data/doc/examples/insert2.rb +36 -0
  22. data/doc/examples/insert_bytea.rb +16 -0
  23. data/doc/examples/insert_bytea_array.rb +17 -0
  24. data/doc/examples/insert_default_values.rb +16 -0
  25. data/doc/examples/insert_insert.rb +16 -0
  26. data/doc/examples/insert_insert_default.rb +16 -0
  27. data/doc/examples/insert_insert_select.rb +20 -0
  28. data/doc/examples/insert_select.rb +20 -0
  29. data/doc/examples/interval.rb +17 -0
  30. data/doc/examples/savepoint.rb +38 -0
  31. data/doc/examples/select.rb +33 -0
  32. data/doc/examples/select2.rb +36 -0
  33. data/doc/examples/select_cross_join.rb +18 -0
  34. data/doc/examples/select_distinct.rb +18 -0
  35. data/doc/examples/select_distinct_on +19 -0
  36. data/doc/examples/select_for_update.rb +18 -0
  37. data/doc/examples/select_from.rb +17 -0
  38. data/doc/examples/select_from_subselect.rb +20 -0
  39. data/doc/examples/select_group_by.rb +19 -0
  40. data/doc/examples/select_having.rb +20 -0
  41. data/doc/examples/select_join_on.rb +18 -0
  42. data/doc/examples/select_join_using.rb +18 -0
  43. data/doc/examples/select_limit.rb +19 -0
  44. data/doc/examples/select_natural_join.rb +18 -0
  45. data/doc/examples/select_offset.rb +19 -0
  46. data/doc/examples/select_order_by.rb +20 -0
  47. data/doc/examples/select_select.rb +30 -0
  48. data/doc/examples/select_select_alias.rb +30 -0
  49. data/doc/examples/select_select_expression.rb +31 -0
  50. data/doc/examples/select_select_literal.rb +24 -0
  51. data/doc/examples/select_union.rb +21 -0
  52. data/doc/examples/select_where_array.rb +18 -0
  53. data/doc/examples/select_where_in.rb +18 -0
  54. data/doc/examples/select_where_string.rb +18 -0
  55. data/doc/examples/simple.rb +34 -0
  56. data/doc/examples/transaction.rb +30 -0
  57. data/doc/examples/transaction_abort.rb +30 -0
  58. data/doc/examples/transaction_commit.rb +34 -0
  59. data/doc/examples/translate_substitute_values.rb +17 -0
  60. data/doc/examples/update.rb +32 -0
  61. data/doc/examples/update2.rb +44 -0
  62. data/doc/examples/update_only.rb +17 -0
  63. data/doc/examples/update_set.rb +17 -0
  64. data/doc/examples/update_set_array.rb +16 -0
  65. data/doc/examples/update_set_bytea.rb +16 -0
  66. data/doc/examples/update_set_expression.rb +16 -0
  67. data/doc/examples/update_set_subselect.rb +20 -0
  68. data/doc/examples/update_where.rb +17 -0
  69. data/doc/examples/use_prefix.rb +8 -0
  70. data/doc/examples/use_prefix2.rb +11 -0
  71. data/doc/index.html +31 -0
  72. data/doc/insertexamples.rb +9 -0
  73. data/doc/makemanual +4 -0
  74. data/doc/makerdoc +5 -0
  75. data/doc/manual.dbk +622 -0
  76. data/lib/sqlpostgres/Connection.rb +198 -0
  77. data/lib/sqlpostgres/Cursor.rb +157 -0
  78. data/lib/sqlpostgres/Delete.rb +67 -0
  79. data/lib/sqlpostgres/Exceptions.rb +15 -0
  80. data/lib/sqlpostgres/Insert.rb +279 -0
  81. data/lib/sqlpostgres/NullConnection.rb +22 -0
  82. data/lib/sqlpostgres/PgBit.rb +73 -0
  83. data/lib/sqlpostgres/PgBox.rb +37 -0
  84. data/lib/sqlpostgres/PgCidr.rb +21 -0
  85. data/lib/sqlpostgres/PgCircle.rb +75 -0
  86. data/lib/sqlpostgres/PgInet.rb +21 -0
  87. data/lib/sqlpostgres/PgInterval.rb +208 -0
  88. data/lib/sqlpostgres/PgLineSegment.rb +37 -0
  89. data/lib/sqlpostgres/PgMacAddr.rb +21 -0
  90. data/lib/sqlpostgres/PgPath.rb +64 -0
  91. data/lib/sqlpostgres/PgPoint.rb +65 -0
  92. data/lib/sqlpostgres/PgPolygon.rb +56 -0
  93. data/lib/sqlpostgres/PgTime.rb +77 -0
  94. data/lib/sqlpostgres/PgTimeWithTimeZone.rb +98 -0
  95. data/lib/sqlpostgres/PgTimestamp.rb +93 -0
  96. data/lib/sqlpostgres/PgTwoPoints.rb +54 -0
  97. data/lib/sqlpostgres/PgType.rb +34 -0
  98. data/lib/sqlpostgres/PgWrapper.rb +41 -0
  99. data/lib/sqlpostgres/Savepoint.rb +98 -0
  100. data/lib/sqlpostgres/Select.rb +855 -0
  101. data/lib/sqlpostgres/Transaction.rb +120 -0
  102. data/lib/sqlpostgres/Translate.rb +436 -0
  103. data/lib/sqlpostgres/Update.rb +188 -0
  104. data/lib/sqlpostgres.rb +67 -0
  105. data/test/Assert.rb +72 -0
  106. data/test/Connection.test.rb +246 -0
  107. data/test/Cursor.test.rb +190 -0
  108. data/test/Delete.test.rb +68 -0
  109. data/test/Insert.test.rb +123 -0
  110. data/test/MockPGconn.rb +62 -0
  111. data/test/NullConnection.test.rb +32 -0
  112. data/test/PgBit.test.rb +98 -0
  113. data/test/PgBox.test.rb +108 -0
  114. data/test/PgCidr.test.rb +61 -0
  115. data/test/PgCircle.test.rb +107 -0
  116. data/test/PgInet.test.rb +61 -0
  117. data/test/PgInterval.test.rb +180 -0
  118. data/test/PgLineSegment.test.rb +108 -0
  119. data/test/PgMacAddr.test.rb +61 -0
  120. data/test/PgPath.test.rb +106 -0
  121. data/test/PgPoint.test.rb +100 -0
  122. data/test/PgPolygon.test.rb +95 -0
  123. data/test/PgTime.test.rb +120 -0
  124. data/test/PgTimeWithTimeZone.test.rb +117 -0
  125. data/test/PgTimestamp.test.rb +134 -0
  126. data/test/RandomThings.rb +25 -0
  127. data/test/Savepoint.test.rb +286 -0
  128. data/test/Select.test.rb +930 -0
  129. data/test/Test.rb +62 -0
  130. data/test/TestConfig.rb +21 -0
  131. data/test/TestSetup.rb +13 -0
  132. data/test/TestUtil.rb +92 -0
  133. data/test/Transaction.test.rb +275 -0
  134. data/test/Translate.test.rb +354 -0
  135. data/test/Update.test.rb +227 -0
  136. data/test/roundtrip.test.rb +565 -0
  137. data/test/test +34 -0
  138. data/tools/exampleinserter/ExampleInserter.rb +177 -0
  139. data/tools/rdoc/ChangeLog +796 -0
  140. data/tools/rdoc/EXAMPLE.rb +48 -0
  141. data/tools/rdoc/MANIFEST +58 -0
  142. data/tools/rdoc/Makefile +27 -0
  143. data/tools/rdoc/NEW_FEATURES +226 -0
  144. data/tools/rdoc/README +390 -0
  145. data/tools/rdoc/ToDo +6 -0
  146. data/tools/rdoc/contrib/Index +6 -0
  147. data/tools/rdoc/contrib/xslfo/ChangeLog +181 -0
  148. data/tools/rdoc/contrib/xslfo/README +106 -0
  149. data/tools/rdoc/contrib/xslfo/TODO +10 -0
  150. data/tools/rdoc/contrib/xslfo/convert.xsl +151 -0
  151. data/tools/rdoc/contrib/xslfo/demo/README +21 -0
  152. data/tools/rdoc/contrib/xslfo/demo/rdocfo +99 -0
  153. data/tools/rdoc/contrib/xslfo/fcm.xsl +54 -0
  154. data/tools/rdoc/contrib/xslfo/files.xsl +62 -0
  155. data/tools/rdoc/contrib/xslfo/labeled-lists.xsl +66 -0
  156. data/tools/rdoc/contrib/xslfo/lists.xsl +44 -0
  157. data/tools/rdoc/contrib/xslfo/modules.xsl +152 -0
  158. data/tools/rdoc/contrib/xslfo/rdoc.xsl +75 -0
  159. data/tools/rdoc/contrib/xslfo/source.xsl +66 -0
  160. data/tools/rdoc/contrib/xslfo/styles.xsl +69 -0
  161. data/tools/rdoc/contrib/xslfo/tables.xsl +67 -0
  162. data/tools/rdoc/contrib/xslfo/utils.xsl +21 -0
  163. data/tools/rdoc/debian/changelog +33 -0
  164. data/tools/rdoc/debian/compat +1 -0
  165. data/tools/rdoc/debian/control +20 -0
  166. data/tools/rdoc/debian/copyright +10 -0
  167. data/tools/rdoc/debian/dirs +2 -0
  168. data/tools/rdoc/debian/docs +2 -0
  169. data/tools/rdoc/debian/rdoc.1 +252 -0
  170. data/tools/rdoc/debian/rdoc.manpages +1 -0
  171. data/tools/rdoc/debian/rdoc.pod +149 -0
  172. data/tools/rdoc/debian/rules +9 -0
  173. data/tools/rdoc/dot/dot.rb +255 -0
  174. data/tools/rdoc/etc/rdoc.dtd +203 -0
  175. data/tools/rdoc/install.rb +137 -0
  176. data/tools/rdoc/markup/install.rb +43 -0
  177. data/tools/rdoc/markup/sample/sample.rb +42 -0
  178. data/tools/rdoc/markup/simple_markup/fragments.rb +323 -0
  179. data/tools/rdoc/markup/simple_markup/inline.rb +348 -0
  180. data/tools/rdoc/markup/simple_markup/lines.rb +147 -0
  181. data/tools/rdoc/markup/simple_markup/preprocess.rb +68 -0
  182. data/tools/rdoc/markup/simple_markup/to_html.rb +281 -0
  183. data/tools/rdoc/markup/simple_markup.rb +474 -0
  184. data/tools/rdoc/markup/test/AllTests.rb +2 -0
  185. data/tools/rdoc/markup/test/TestInline.rb +151 -0
  186. data/tools/rdoc/markup/test/TestParse.rb +411 -0
  187. data/tools/rdoc/rdoc/code_objects.rb +536 -0
  188. data/tools/rdoc/rdoc/diagram.rb +331 -0
  189. data/tools/rdoc/rdoc/generators/chm_generator.rb +112 -0
  190. data/tools/rdoc/rdoc/generators/html_generator.rb +1268 -0
  191. data/tools/rdoc/rdoc/generators/template/chm/chm.rb +86 -0
  192. data/tools/rdoc/rdoc/generators/template/html/html.rb +705 -0
  193. data/tools/rdoc/rdoc/generators/template/html/kilmer.rb +377 -0
  194. data/tools/rdoc/rdoc/generators/template/xml/rdf.rb +110 -0
  195. data/tools/rdoc/rdoc/generators/template/xml/xml.rb +110 -0
  196. data/tools/rdoc/rdoc/generators/xml_generator.rb +130 -0
  197. data/tools/rdoc/rdoc/options.rb +451 -0
  198. data/tools/rdoc/rdoc/parsers/parse_c.rb +287 -0
  199. data/tools/rdoc/rdoc/parsers/parse_f95.rb +118 -0
  200. data/tools/rdoc/rdoc/parsers/parse_rb.rb +2311 -0
  201. data/tools/rdoc/rdoc/parsers/parse_simple.rb +37 -0
  202. data/tools/rdoc/rdoc/parsers/parserfactory.rb +75 -0
  203. data/tools/rdoc/rdoc/rdoc.rb +219 -0
  204. data/tools/rdoc/rdoc/template.rb +234 -0
  205. data/tools/rdoc/rdoc/tokenstream.rb +25 -0
  206. data/tools/rdoc/rdoc.rb +9 -0
  207. 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: