sequel 3.48.0 → 4.0.0

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 (267) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +114 -0
  3. data/Rakefile +10 -7
  4. data/doc/association_basics.rdoc +25 -23
  5. data/doc/code_order.rdoc +7 -0
  6. data/doc/core_extensions.rdoc +0 -10
  7. data/doc/object_model.rdoc +4 -1
  8. data/doc/querying.rdoc +3 -3
  9. data/doc/release_notes/4.0.0.txt +262 -0
  10. data/doc/security.rdoc +0 -28
  11. data/doc/testing.rdoc +8 -14
  12. data/lib/sequel/adapters/ado.rb +7 -11
  13. data/lib/sequel/adapters/ado/access.rb +8 -8
  14. data/lib/sequel/adapters/ado/mssql.rb +4 -4
  15. data/lib/sequel/adapters/amalgalite.rb +6 -6
  16. data/lib/sequel/adapters/cubrid.rb +7 -7
  17. data/lib/sequel/adapters/db2.rb +5 -9
  18. data/lib/sequel/adapters/dbi.rb +2 -6
  19. data/lib/sequel/adapters/do.rb +4 -4
  20. data/lib/sequel/adapters/firebird.rb +4 -4
  21. data/lib/sequel/adapters/ibmdb.rb +8 -8
  22. data/lib/sequel/adapters/informix.rb +2 -10
  23. data/lib/sequel/adapters/jdbc.rb +17 -17
  24. data/lib/sequel/adapters/jdbc/as400.rb +2 -2
  25. data/lib/sequel/adapters/jdbc/cubrid.rb +1 -1
  26. data/lib/sequel/adapters/jdbc/db2.rb +1 -1
  27. data/lib/sequel/adapters/jdbc/derby.rb +1 -1
  28. data/lib/sequel/adapters/jdbc/h2.rb +2 -2
  29. data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -1
  30. data/lib/sequel/adapters/jdbc/informix.rb +1 -1
  31. data/lib/sequel/adapters/jdbc/mssql.rb +2 -2
  32. data/lib/sequel/adapters/jdbc/mysql.rb +1 -1
  33. data/lib/sequel/adapters/jdbc/oracle.rb +5 -1
  34. data/lib/sequel/adapters/jdbc/postgresql.rb +3 -3
  35. data/lib/sequel/adapters/jdbc/sqlite.rb +3 -3
  36. data/lib/sequel/adapters/jdbc/transactions.rb +3 -3
  37. data/lib/sequel/adapters/mock.rb +7 -7
  38. data/lib/sequel/adapters/mysql.rb +3 -3
  39. data/lib/sequel/adapters/mysql2.rb +4 -4
  40. data/lib/sequel/adapters/odbc.rb +2 -6
  41. data/lib/sequel/adapters/odbc/mssql.rb +1 -1
  42. data/lib/sequel/adapters/openbase.rb +1 -5
  43. data/lib/sequel/adapters/oracle.rb +13 -17
  44. data/lib/sequel/adapters/postgres.rb +20 -25
  45. data/lib/sequel/adapters/shared/cubrid.rb +3 -3
  46. data/lib/sequel/adapters/shared/db2.rb +2 -2
  47. data/lib/sequel/adapters/shared/firebird.rb +7 -7
  48. data/lib/sequel/adapters/shared/mssql.rb +9 -9
  49. data/lib/sequel/adapters/shared/mysql.rb +29 -13
  50. data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +7 -7
  51. data/lib/sequel/adapters/shared/oracle.rb +22 -13
  52. data/lib/sequel/adapters/shared/postgres.rb +61 -46
  53. data/lib/sequel/adapters/shared/sqlite.rb +9 -9
  54. data/lib/sequel/adapters/sqlite.rb +17 -11
  55. data/lib/sequel/adapters/swift.rb +3 -3
  56. data/lib/sequel/adapters/swift/mysql.rb +1 -1
  57. data/lib/sequel/adapters/swift/sqlite.rb +1 -1
  58. data/lib/sequel/adapters/tinytds.rb +8 -8
  59. data/lib/sequel/ast_transformer.rb +3 -1
  60. data/lib/sequel/connection_pool.rb +4 -2
  61. data/lib/sequel/connection_pool/sharded_single.rb +2 -2
  62. data/lib/sequel/connection_pool/sharded_threaded.rb +5 -5
  63. data/lib/sequel/connection_pool/threaded.rb +7 -7
  64. data/lib/sequel/core.rb +4 -67
  65. data/lib/sequel/database.rb +1 -0
  66. data/lib/sequel/database/connecting.rb +2 -8
  67. data/lib/sequel/database/dataset.rb +2 -7
  68. data/lib/sequel/database/dataset_defaults.rb +0 -18
  69. data/lib/sequel/database/features.rb +4 -4
  70. data/lib/sequel/database/misc.rb +6 -8
  71. data/lib/sequel/database/query.rb +5 -61
  72. data/lib/sequel/database/schema_generator.rb +22 -20
  73. data/lib/sequel/database/schema_methods.rb +48 -20
  74. data/lib/sequel/database/transactions.rb +7 -17
  75. data/lib/sequel/dataset.rb +2 -0
  76. data/lib/sequel/dataset/actions.rb +23 -91
  77. data/lib/sequel/dataset/features.rb +1 -4
  78. data/lib/sequel/dataset/graph.rb +3 -47
  79. data/lib/sequel/dataset/misc.rb +4 -33
  80. data/lib/sequel/dataset/prepared_statements.rb +3 -1
  81. data/lib/sequel/dataset/query.rb +116 -240
  82. data/lib/sequel/dataset/sql.rb +19 -97
  83. data/lib/sequel/deprecated.rb +0 -16
  84. data/lib/sequel/exceptions.rb +0 -3
  85. data/lib/sequel/extensions/_pretty_table.rb +1 -1
  86. data/lib/sequel/extensions/columns_introspection.rb +1 -12
  87. data/lib/sequel/extensions/constraint_validations.rb +3 -3
  88. data/lib/sequel/extensions/core_extensions.rb +0 -9
  89. data/lib/sequel/extensions/date_arithmetic.rb +1 -2
  90. data/lib/sequel/extensions/graph_each.rb +11 -0
  91. data/lib/sequel/extensions/migration.rb +5 -5
  92. data/lib/sequel/extensions/null_dataset.rb +11 -13
  93. data/lib/sequel/extensions/pagination.rb +3 -6
  94. data/lib/sequel/extensions/pg_array.rb +6 -4
  95. data/lib/sequel/extensions/pg_array_ops.rb +35 -1
  96. data/lib/sequel/extensions/pg_json.rb +12 -2
  97. data/lib/sequel/extensions/pg_json_ops.rb +266 -0
  98. data/lib/sequel/extensions/pg_range.rb +2 -2
  99. data/lib/sequel/extensions/pg_range_ops.rb +0 -8
  100. data/lib/sequel/extensions/pg_row.rb +2 -2
  101. data/lib/sequel/extensions/pretty_table.rb +0 -4
  102. data/lib/sequel/extensions/query.rb +3 -8
  103. data/lib/sequel/extensions/schema_caching.rb +0 -7
  104. data/lib/sequel/extensions/schema_dumper.rb +10 -17
  105. data/lib/sequel/extensions/select_remove.rb +0 -4
  106. data/lib/sequel/extensions/set_overrides.rb +28 -0
  107. data/lib/sequel/extensions/to_dot.rb +6 -10
  108. data/lib/sequel/model.rb +6 -7
  109. data/lib/sequel/model/associations.rb +127 -182
  110. data/lib/sequel/model/base.rb +88 -211
  111. data/lib/sequel/model/errors.rb +0 -13
  112. data/lib/sequel/model/plugins.rb +2 -2
  113. data/lib/sequel/no_core_ext.rb +0 -1
  114. data/lib/sequel/plugins/after_initialize.rb +11 -17
  115. data/lib/sequel/plugins/association_autoreloading.rb +1 -47
  116. data/lib/sequel/plugins/association_dependencies.rb +2 -2
  117. data/lib/sequel/plugins/auto_validations.rb +2 -8
  118. data/lib/sequel/plugins/blacklist_security.rb +32 -2
  119. data/lib/sequel/plugins/caching.rb +1 -1
  120. data/lib/sequel/plugins/class_table_inheritance.rb +2 -2
  121. data/lib/sequel/plugins/composition.rb +10 -8
  122. data/lib/sequel/plugins/constraint_validations.rb +2 -2
  123. data/lib/sequel/plugins/dataset_associations.rb +4 -0
  124. data/lib/sequel/plugins/defaults_setter.rb +8 -6
  125. data/lib/sequel/plugins/dirty.rb +6 -6
  126. data/lib/sequel/plugins/force_encoding.rb +13 -8
  127. data/lib/sequel/plugins/hook_class_methods.rb +1 -7
  128. data/lib/sequel/plugins/json_serializer.rb +13 -74
  129. data/lib/sequel/plugins/lazy_attributes.rb +2 -4
  130. data/lib/sequel/plugins/list.rb +1 -1
  131. data/lib/sequel/plugins/many_through_many.rb +4 -11
  132. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +1 -49
  133. data/lib/sequel/plugins/nested_attributes.rb +1 -1
  134. data/lib/sequel/plugins/optimistic_locking.rb +3 -5
  135. data/lib/sequel/plugins/pg_array_associations.rb +453 -0
  136. data/lib/sequel/plugins/pg_typecast_on_load.rb +23 -7
  137. data/lib/sequel/plugins/prepared_statements.rb +1 -1
  138. data/lib/sequel/plugins/prepared_statements_associations.rb +20 -14
  139. data/lib/sequel/plugins/prepared_statements_safe.rb +2 -2
  140. data/lib/sequel/plugins/rcte_tree.rb +1 -1
  141. data/lib/sequel/plugins/serialization.rb +5 -4
  142. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  143. data/lib/sequel/plugins/sharding.rb +7 -1
  144. data/lib/sequel/plugins/single_table_inheritance.rb +1 -1
  145. data/lib/sequel/plugins/timestamps.rb +1 -1
  146. data/lib/sequel/plugins/touch.rb +2 -2
  147. data/lib/sequel/plugins/tree.rb +1 -1
  148. data/lib/sequel/plugins/typecast_on_load.rb +19 -4
  149. data/lib/sequel/plugins/validation_class_methods.rb +0 -30
  150. data/lib/sequel/plugins/validation_helpers.rb +13 -31
  151. data/lib/sequel/plugins/xml_serializer.rb +18 -57
  152. data/lib/sequel/sql.rb +20 -22
  153. data/lib/sequel/version.rb +2 -2
  154. data/spec/adapters/db2_spec.rb +14 -23
  155. data/spec/adapters/firebird_spec.rb +25 -29
  156. data/spec/adapters/informix_spec.rb +11 -14
  157. data/spec/adapters/mssql_spec.rb +71 -77
  158. data/spec/adapters/mysql_spec.rb +165 -172
  159. data/spec/adapters/oracle_spec.rb +36 -39
  160. data/spec/adapters/postgres_spec.rb +175 -100
  161. data/spec/adapters/spec_helper.rb +13 -11
  162. data/spec/adapters/sqlite_spec.rb +36 -44
  163. data/spec/core/connection_pool_spec.rb +2 -1
  164. data/spec/core/database_spec.rb +55 -55
  165. data/spec/core/dataset_spec.rb +45 -249
  166. data/spec/core/deprecated_spec.rb +0 -8
  167. data/spec/core/expression_filters_spec.rb +23 -5
  168. data/spec/core/object_graph_spec.rb +4 -66
  169. data/spec/core/schema_spec.rb +35 -12
  170. data/spec/core/spec_helper.rb +3 -2
  171. data/spec/core_extensions_spec.rb +17 -19
  172. data/spec/extensions/arbitrary_servers_spec.rb +2 -3
  173. data/spec/extensions/association_dependencies_spec.rb +14 -14
  174. data/spec/extensions/auto_validations_spec.rb +7 -0
  175. data/spec/extensions/blacklist_security_spec.rb +5 -5
  176. data/spec/extensions/blank_spec.rb +2 -0
  177. data/spec/extensions/class_table_inheritance_spec.rb +2 -2
  178. data/spec/extensions/columns_introspection_spec.rb +2 -29
  179. data/spec/extensions/composition_spec.rb +10 -17
  180. data/spec/extensions/core_refinements_spec.rb +5 -1
  181. data/spec/extensions/dataset_associations_spec.rb +18 -0
  182. data/spec/extensions/date_arithmetic_spec.rb +2 -2
  183. data/spec/extensions/defaults_setter_spec.rb +9 -9
  184. data/spec/extensions/dirty_spec.rb +0 -5
  185. data/spec/extensions/eval_inspect_spec.rb +2 -0
  186. data/spec/extensions/force_encoding_spec.rb +2 -18
  187. data/spec/extensions/hash_aliases_spec.rb +8 -0
  188. data/spec/extensions/hook_class_methods_spec.rb +39 -58
  189. data/spec/extensions/inflector_spec.rb +2 -0
  190. data/spec/extensions/instance_filters_spec.rb +8 -8
  191. data/spec/extensions/json_serializer_spec.rb +1 -41
  192. data/spec/extensions/list_spec.rb +1 -1
  193. data/spec/extensions/many_through_many_spec.rb +106 -109
  194. data/spec/extensions/migration_spec.rb +2 -0
  195. data/spec/extensions/named_timezones_spec.rb +1 -0
  196. data/spec/extensions/pg_array_associations_spec.rb +603 -0
  197. data/spec/extensions/pg_array_ops_spec.rb +25 -0
  198. data/spec/extensions/pg_array_spec.rb +9 -1
  199. data/spec/extensions/pg_hstore_ops_spec.rb +13 -0
  200. data/spec/extensions/pg_hstore_spec.rb +1 -0
  201. data/spec/extensions/pg_json_ops_spec.rb +131 -0
  202. data/spec/extensions/pg_json_spec.rb +10 -4
  203. data/spec/extensions/pg_range_ops_spec.rb +2 -5
  204. data/spec/extensions/pg_range_spec.rb +6 -2
  205. data/spec/extensions/pg_row_ops_spec.rb +2 -0
  206. data/spec/extensions/prepared_statements_associations_spec.rb +26 -5
  207. data/spec/extensions/rcte_tree_spec.rb +15 -15
  208. data/spec/extensions/schema_dumper_spec.rb +0 -1
  209. data/spec/extensions/schema_spec.rb +9 -9
  210. data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
  211. data/spec/extensions/serialization_spec.rb +18 -29
  212. data/spec/extensions/set_overrides_spec.rb +4 -0
  213. data/spec/extensions/{many_to_one_pk_lookup_spec.rb → shared_caching_spec.rb} +1 -4
  214. data/spec/extensions/single_table_inheritance_spec.rb +4 -4
  215. data/spec/extensions/spec_helper.rb +8 -9
  216. data/spec/extensions/sql_expr_spec.rb +2 -0
  217. data/spec/extensions/string_date_time_spec.rb +2 -0
  218. data/spec/extensions/string_stripper_spec.rb +2 -0
  219. data/spec/extensions/tactical_eager_loading_spec.rb +12 -12
  220. data/spec/extensions/thread_local_timezones_spec.rb +2 -0
  221. data/spec/extensions/timestamps_spec.rb +1 -1
  222. data/spec/extensions/to_dot_spec.rb +1 -1
  223. data/spec/extensions/touch_spec.rb +24 -24
  224. data/spec/extensions/tree_spec.rb +7 -7
  225. data/spec/extensions/typecast_on_load_spec.rb +8 -1
  226. data/spec/extensions/update_primary_key_spec.rb +10 -10
  227. data/spec/extensions/validation_class_methods_spec.rb +10 -39
  228. data/spec/extensions/validation_helpers_spec.rb +29 -47
  229. data/spec/extensions/xml_serializer_spec.rb +1 -23
  230. data/spec/integration/associations_test.rb +231 -40
  231. data/spec/integration/database_test.rb +1 -1
  232. data/spec/integration/dataset_test.rb +64 -64
  233. data/spec/integration/eager_loader_test.rb +28 -28
  234. data/spec/integration/migrator_test.rb +1 -1
  235. data/spec/integration/model_test.rb +2 -2
  236. data/spec/integration/plugin_test.rb +21 -21
  237. data/spec/integration/prepared_statement_test.rb +7 -7
  238. data/spec/integration/schema_test.rb +115 -110
  239. data/spec/integration/spec_helper.rb +17 -27
  240. data/spec/integration/timezone_test.rb +1 -1
  241. data/spec/integration/transaction_test.rb +10 -10
  242. data/spec/integration/type_test.rb +2 -2
  243. data/spec/model/association_reflection_spec.rb +2 -28
  244. data/spec/model/associations_spec.rb +239 -188
  245. data/spec/model/base_spec.rb +27 -68
  246. data/spec/model/dataset_methods_spec.rb +4 -4
  247. data/spec/model/eager_loading_spec.rb +160 -172
  248. data/spec/model/hooks_spec.rb +62 -79
  249. data/spec/model/model_spec.rb +36 -51
  250. data/spec/model/plugins_spec.rb +5 -19
  251. data/spec/model/record_spec.rb +125 -151
  252. data/spec/model/spec_helper.rb +8 -6
  253. data/spec/model/validations_spec.rb +4 -17
  254. data/spec/spec_config.rb +2 -10
  255. metadata +50 -56
  256. data/lib/sequel/deprecated_core_extensions.rb +0 -135
  257. data/lib/sequel/extensions/pg_auto_parameterize.rb +0 -185
  258. data/lib/sequel/extensions/pg_statement_cache.rb +0 -318
  259. data/lib/sequel/plugins/identity_map.rb +0 -260
  260. data/lib/sequel_core.rb +0 -2
  261. data/lib/sequel_model.rb +0 -2
  262. data/spec/extensions/association_autoreloading_spec.rb +0 -102
  263. data/spec/extensions/identity_map_spec.rb +0 -337
  264. data/spec/extensions/pg_auto_parameterize_spec.rb +0 -70
  265. data/spec/extensions/pg_statement_cache_spec.rb +0 -208
  266. data/spec/rcov.opts +0 -8
  267. data/spec/spec_config.rb.example +0 -10
@@ -2,7 +2,7 @@ require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
2
2
 
3
3
  describe Sequel::Database do
4
4
  before do
5
- @db = INTEGRATION_DB
5
+ @db = DB
6
6
  end
7
7
 
8
8
  specify "should provide disconnect functionality" do
@@ -2,7 +2,7 @@ require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
2
2
 
3
3
  describe "Simple Dataset operations" do
4
4
  before do
5
- @db = INTEGRATION_DB
5
+ @db = DB
6
6
  @db.create_table!(:items) do
7
7
  primary_key :id
8
8
  Integer :number
@@ -232,7 +232,7 @@ end
232
232
 
233
233
  describe "Simple dataset operations with nasty table names" do
234
234
  before do
235
- @db = INTEGRATION_DB
235
+ @db = DB
236
236
  @table = :"i`t' [e]\"m\\s"
237
237
  @qi = @db.quote_identifiers?
238
238
  @db.quote_identifiers = true
@@ -259,14 +259,14 @@ end
259
259
 
260
260
  describe Sequel::Dataset do
261
261
  before do
262
- INTEGRATION_DB.create_table!(:test) do
262
+ DB.create_table!(:test) do
263
263
  String :name
264
264
  Integer :value
265
265
  end
266
- @d = INTEGRATION_DB[:test]
266
+ @d = DB[:test]
267
267
  end
268
268
  after do
269
- INTEGRATION_DB.drop_table?(:test)
269
+ DB.drop_table?(:test)
270
270
  end
271
271
 
272
272
  specify "should return the correct record count" do
@@ -349,49 +349,49 @@ describe Sequel::Database do
349
349
  "\\'dingo",
350
350
  "\\\\''dingo",
351
351
  ].each do |str|
352
- INTEGRATION_DB.get(Sequel.cast(str, String)).should == str
352
+ DB.get(Sequel.cast(str, String)).should == str
353
353
  str = "1#{str}1"
354
- INTEGRATION_DB.get(Sequel.cast(str, String)).should == str
354
+ DB.get(Sequel.cast(str, String)).should == str
355
355
  str = "#{str}#{str}"
356
- INTEGRATION_DB.get(Sequel.cast(str, String)).should == str
356
+ DB.get(Sequel.cast(str, String)).should == str
357
357
  end
358
358
  end
359
359
 
360
360
  cspecify "should properly escape binary data", [:odbc], [:jdbc, :hsqldb], :oracle do
361
- INTEGRATION_DB.get(Sequel.cast(Sequel.blob("\1\2\3"), File).as(:a)).should == "\1\2\3"
361
+ DB.get(Sequel.cast(Sequel.blob("\1\2\3"), File).as(:a)).should == "\1\2\3"
362
362
  end
363
363
 
364
364
  cspecify "should properly escape identifiers", :db2, :oracle do
365
- INTEGRATION_DB.create_table(:"\\'\"[]"){Integer :id}
366
- INTEGRATION_DB.drop_table(:"\\'\"[]")
365
+ DB.create_table(:"\\'\"[]"){Integer :id}
366
+ DB.drop_table(:"\\'\"[]")
367
367
  end
368
368
 
369
369
  specify "should have a working table_exists?" do
370
370
  t = :basdfdsafsaddsaf
371
- INTEGRATION_DB.drop_table?(t)
372
- INTEGRATION_DB.table_exists?(t).should == false
373
- INTEGRATION_DB.create_table(t){Integer :a}
371
+ DB.drop_table?(t)
372
+ DB.table_exists?(t).should == false
373
+ DB.create_table(t){Integer :a}
374
374
  begin
375
- INTEGRATION_DB.table_exists?(t).should == true
375
+ DB.table_exists?(t).should == true
376
376
  ensure
377
- INTEGRATION_DB.drop_table(t)
377
+ DB.drop_table(t)
378
378
  end
379
379
  end
380
380
  end
381
381
 
382
382
  describe Sequel::Dataset do
383
383
  before do
384
- INTEGRATION_DB.create_table! :items do
384
+ DB.create_table! :items do
385
385
  primary_key :id
386
386
  Integer :value
387
387
  end
388
- @d = INTEGRATION_DB[:items]
388
+ @d = DB[:items]
389
389
  @d << {:value => 123}
390
390
  @d << {:value => 456}
391
391
  @d << {:value => 789}
392
392
  end
393
393
  after do
394
- INTEGRATION_DB.drop_table?(:items)
394
+ DB.drop_table?(:items)
395
395
  end
396
396
 
397
397
  specify "should correctly return avg" do
@@ -413,14 +413,14 @@ end
413
413
 
414
414
  describe "Simple Dataset operations" do
415
415
  before do
416
- INTEGRATION_DB.create_table!(:items) do
416
+ DB.create_table!(:items) do
417
417
  Integer :number
418
418
  TrueClass :flag
419
419
  end
420
- @ds = INTEGRATION_DB[:items]
420
+ @ds = DB[:items]
421
421
  end
422
422
  after do
423
- INTEGRATION_DB.drop_table?(:items)
423
+ DB.drop_table?(:items)
424
424
  end
425
425
 
426
426
  specify "should deal with boolean conditions correctly" do
@@ -439,18 +439,18 @@ end
439
439
 
440
440
  describe "Simple Dataset operations in transactions" do
441
441
  before do
442
- INTEGRATION_DB.create_table!(:items) do
442
+ DB.create_table!(:items) do
443
443
  primary_key :id
444
444
  integer :number
445
445
  end
446
- @ds = INTEGRATION_DB[:items]
446
+ @ds = DB[:items]
447
447
  end
448
448
  after do
449
- INTEGRATION_DB.drop_table?(:items)
449
+ DB.drop_table?(:items)
450
450
  end
451
451
 
452
452
  cspecify "should insert correctly with a primary key specified inside a transaction", :db2, :mssql do
453
- INTEGRATION_DB.transaction do
453
+ DB.transaction do
454
454
  @ds.insert(:id=>100, :number=>20)
455
455
  @ds.count.should == 1
456
456
  @ds.order(:id).all.should == [{:id=>100, :number=>20}]
@@ -458,7 +458,7 @@ describe "Simple Dataset operations in transactions" do
458
458
  end
459
459
 
460
460
  specify "should have insert return primary key value inside a transaction" do
461
- INTEGRATION_DB.transaction do
461
+ DB.transaction do
462
462
  @ds.insert(:number=>20).should == 1
463
463
  @ds.count.should == 1
464
464
  @ds.order(:id).all.should == [{:id=>1, :number=>20}]
@@ -466,23 +466,23 @@ describe "Simple Dataset operations in transactions" do
466
466
  end
467
467
 
468
468
  specify "should support for_update" do
469
- INTEGRATION_DB.transaction{@ds.for_update.all.should == []}
469
+ DB.transaction{@ds.for_update.all.should == []}
470
470
  end
471
471
  end
472
472
 
473
473
  describe "Dataset UNION, EXCEPT, and INTERSECT" do
474
474
  before do
475
- INTEGRATION_DB.create_table!(:i1){integer :number}
476
- INTEGRATION_DB.create_table!(:i2){integer :number}
477
- @ds1 = INTEGRATION_DB[:i1]
475
+ DB.create_table!(:i1){integer :number}
476
+ DB.create_table!(:i2){integer :number}
477
+ @ds1 = DB[:i1]
478
478
  @ds1.insert(:number=>10)
479
479
  @ds1.insert(:number=>20)
480
- @ds2 = INTEGRATION_DB[:i2]
480
+ @ds2 = DB[:i2]
481
481
  @ds2.insert(:number=>10)
482
482
  @ds2.insert(:number=>30)
483
483
  end
484
484
  after do
485
- INTEGRATION_DB.drop_table?(:i1, :i2, :i3)
485
+ DB.drop_table?(:i1, :i2, :i3)
486
486
  end
487
487
 
488
488
  specify "should give the correct results for simple UNION, EXCEPT, and INTERSECT" do
@@ -516,8 +516,8 @@ describe "Dataset UNION, EXCEPT, and INTERSECT" do
516
516
  end
517
517
 
518
518
  specify "should give the correct results for compound UNION, EXCEPT, and INTERSECT" do
519
- INTEGRATION_DB.create_table!(:i3){integer :number}
520
- @ds3 = INTEGRATION_DB[:i3]
519
+ DB.create_table!(:i3){integer :number}
520
+ @ds3 = DB[:i3]
521
521
  @ds3.insert(:number=>10)
522
522
  @ds3.insert(:number=>40)
523
523
 
@@ -546,10 +546,10 @@ describe "Dataset UNION, EXCEPT, and INTERSECT" do
546
546
  end
547
547
  end
548
548
 
549
- if INTEGRATION_DB.dataset.supports_cte?
549
+ if DB.dataset.supports_cte?
550
550
  describe "Common Table Expressions" do
551
551
  before(:all) do
552
- @db = INTEGRATION_DB
552
+ @db = DB
553
553
  @db.create_table!(:i1){Integer :id; Integer :parent_id}
554
554
  @ds = @db[:i1]
555
555
  @ds.insert(:id=>1)
@@ -601,10 +601,10 @@ if INTEGRATION_DB.dataset.supports_cte?
601
601
  end
602
602
  end
603
603
 
604
- if INTEGRATION_DB.dataset.supports_cte?(:update) # Assume INSERT and DELETE support as well
604
+ if DB.dataset.supports_cte?(:update) # Assume INSERT and DELETE support as well
605
605
  describe "Common Table Expressions in INSERT/UPDATE/DELETE" do
606
606
  before do
607
- @db = INTEGRATION_DB
607
+ @db = DB
608
608
  @db.create_table!(:i1){Integer :id}
609
609
  @ds = @db[:i1]
610
610
  @ds2 = @ds.with(:t, @ds)
@@ -626,10 +626,10 @@ if INTEGRATION_DB.dataset.supports_cte?(:update) # Assume INSERT and DELETE supp
626
626
  end
627
627
  end
628
628
 
629
- if INTEGRATION_DB.dataset.supports_returning?(:insert)
629
+ if DB.dataset.supports_returning?(:insert)
630
630
  describe "RETURNING clauses in INSERT" do
631
631
  before do
632
- @db = INTEGRATION_DB
632
+ @db = DB
633
633
  @db.create_table!(:i1){Integer :id; Integer :foo}
634
634
  @ds = @db[:i1]
635
635
  end
@@ -651,10 +651,10 @@ if INTEGRATION_DB.dataset.supports_returning?(:insert)
651
651
  end
652
652
  end
653
653
 
654
- if INTEGRATION_DB.dataset.supports_returning?(:update) # Assume DELETE support as well
654
+ if DB.dataset.supports_returning?(:update) # Assume DELETE support as well
655
655
  describe "RETURNING clauses in UPDATE/DELETE" do
656
656
  before do
657
- @db = INTEGRATION_DB
657
+ @db = DB
658
658
  @db.create_table!(:i1){Integer :id; Integer :foo}
659
659
  @ds = @db[:i1]
660
660
  @ds.insert(1, 2)
@@ -687,10 +687,10 @@ if INTEGRATION_DB.dataset.supports_returning?(:update) # Assume DELETE support a
687
687
  end
688
688
  end
689
689
 
690
- if INTEGRATION_DB.dataset.supports_window_functions?
690
+ if DB.dataset.supports_window_functions?
691
691
  describe "Window Functions" do
692
692
  before(:all) do
693
- @db = INTEGRATION_DB
693
+ @db = DB
694
694
  @db.create_table!(:i1){Integer :id; Integer :group_id; Integer :amount}
695
695
  @ds = @db[:i1].order(:id)
696
696
  @ds.insert(:id=>1, :group_id=>1, :amount=>1)
@@ -741,7 +741,7 @@ end
741
741
 
742
742
  describe Sequel::SQL::Constants do
743
743
  before do
744
- @db = INTEGRATION_DB
744
+ @db = DB
745
745
  @ds = @db[:constants]
746
746
  @c = proc do |v|
747
747
  case v
@@ -788,7 +788,7 @@ end
788
788
 
789
789
  describe "Sequel::Dataset#import and #multi_insert" do
790
790
  before(:all) do
791
- @db = INTEGRATION_DB
791
+ @db = DB
792
792
  @db.create_table!(:imp){Integer :i}
793
793
  @ids = @db[:imp].order(:i)
794
794
  end
@@ -831,7 +831,7 @@ end
831
831
 
832
832
  describe "Sequel::Dataset#import and #multi_insert :return=>:primary_key " do
833
833
  before do
834
- @db = INTEGRATION_DB
834
+ @db = DB
835
835
  @db.create_table!(:imp){primary_key :id; Integer :i}
836
836
  @ds = @db[:imp]
837
837
  end
@@ -854,7 +854,7 @@ end
854
854
 
855
855
  describe "Sequel::Dataset convenience methods" do
856
856
  before(:all) do
857
- @db = INTEGRATION_DB
857
+ @db = DB
858
858
  @db.create_table!(:a){Integer :a; Integer :b; Integer :c}
859
859
  @ds = @db[:a]
860
860
  @ds.insert(1, 3, 5)
@@ -870,17 +870,17 @@ describe "Sequel::Dataset convenience methods" do
870
870
  it "#group_rollup should include hierarchy of groupings" do
871
871
  @ds.group_by(:a).group_rollup.select_map([:a, Sequel.function(:sum, :b).cast(Integer).as(:b), Sequel.function(:sum, :c).cast(Integer).as(:c)]).sort_by{|x| x.inspect}.should == [[1, 10, 16], [2, 7, 11], [nil, 17, 27]]
872
872
  @ds.group_by(:a, :b).group_rollup.select_map([:a, :b, Sequel.function(:sum, :c).cast(Integer).as(:c)]).sort_by{|x| x.inspect}.should == [[1, 3, 11], [1, 4, 5], [1, nil, 16], [2, 3, 5], [2, 4, 6], [2, nil, 11], [nil, nil, 27]]
873
- end if INTEGRATION_DB.dataset.supports_group_rollup?
873
+ end if DB.dataset.supports_group_rollup?
874
874
 
875
875
  it "#group_cube should include all combinations of groupings" do
876
876
  @ds.group_by(:a).group_cube.select_map([:a, Sequel.function(:sum, :b).cast(Integer).as(:b), Sequel.function(:sum, :c).cast(Integer).as(:c)]).sort_by{|x| x.inspect}.should == [[1, 10, 16], [2, 7, 11], [nil, 17, 27]]
877
877
  @ds.group_by(:a, :b).group_cube.select_map([:a, :b, Sequel.function(:sum, :c).cast(Integer).as(:c)]).sort_by{|x| x.inspect}.should == [[1, 3, 11], [1, 4, 5], [1, nil, 16], [2, 3, 5], [2, 4, 6], [2, nil, 11], [nil, 3, 16], [nil, 4, 11], [nil, nil, 27]]
878
- end if INTEGRATION_DB.dataset.supports_group_cube?
878
+ end if DB.dataset.supports_group_cube?
879
879
  end
880
880
 
881
881
  describe "Sequel::Dataset convenience methods" do
882
882
  before(:all) do
883
- @db = INTEGRATION_DB
883
+ @db = DB
884
884
  @db.create_table!(:a){Integer :a; Integer :b}
885
885
  @ds = @db[:a].order(:a)
886
886
  end
@@ -958,7 +958,7 @@ end
958
958
 
959
959
  describe "Sequel::Dataset main SQL methods" do
960
960
  before(:all) do
961
- @db = INTEGRATION_DB
961
+ @db = DB
962
962
  @db.create_table!(:d){Integer :a; Integer :b}
963
963
  @ds = @db[:d].order(:a)
964
964
  end
@@ -1029,7 +1029,7 @@ end
1029
1029
 
1030
1030
  describe "Sequel::Dataset convenience methods" do
1031
1031
  before(:all) do
1032
- @db = INTEGRATION_DB
1032
+ @db = DB
1033
1033
  @db.create_table!(:a){Integer :a; Integer :b; Integer :c; Integer :d}
1034
1034
  @ds = @db[:a].order(:a)
1035
1035
  end
@@ -1131,7 +1131,7 @@ end
1131
1131
 
1132
1132
  describe "Sequel::Dataset DSL support" do
1133
1133
  before(:all) do
1134
- @db = INTEGRATION_DB
1134
+ @db = DB
1135
1135
  @db.create_table!(:a){Integer :a; Integer :b}
1136
1136
  @ds = @db[:a].order(:a)
1137
1137
  end
@@ -1365,7 +1365,7 @@ end
1365
1365
 
1366
1366
  describe "SQL Extract Function" do
1367
1367
  before do
1368
- @db = INTEGRATION_DB
1368
+ @db = DB
1369
1369
  @db.create_table!(:a){DateTime :a}
1370
1370
  @ds = @db[:a].order(:a)
1371
1371
  end
@@ -1388,7 +1388,7 @@ end
1388
1388
 
1389
1389
  describe "Dataset string methods" do
1390
1390
  before(:all) do
1391
- @db = INTEGRATION_DB
1391
+ @db = DB
1392
1392
  csc = {}
1393
1393
  cic = {}
1394
1394
  csc[:collate] = @db.dataset_class::CASE_SENSITIVE_COLLATION if defined? @db.dataset_class::CASE_SENSITIVE_COLLATION
@@ -1493,7 +1493,7 @@ describe "Dataset string methods" do
1493
1493
  @ds.filter(Sequel.expr(:b).ilike("#{@ds.escape_like('Bar%')}%")).select_order_map(:b).should == ['bar%', 'bar%.', 'bar%..']
1494
1494
  end
1495
1495
 
1496
- if INTEGRATION_DB.dataset.supports_regexp?
1496
+ if DB.dataset.supports_regexp?
1497
1497
  it "#like with regexp return matching rows" do
1498
1498
  @ds.insert('foo', 'bar')
1499
1499
  @ds.filter(Sequel.expr(:a).like(/fo/)).all.should == [{:a=>'foo', :b=>'bar'}]
@@ -1546,7 +1546,7 @@ describe "Dataset identifier methods" do
1546
1546
  upcase.reverse
1547
1547
  end
1548
1548
  end
1549
- @db = INTEGRATION_DB
1549
+ @db = DB
1550
1550
  @db.create_table!(:a){Integer :ab}
1551
1551
  @db[:a].insert(1)
1552
1552
  end
@@ -1577,7 +1577,7 @@ end
1577
1577
 
1578
1578
  describe "Dataset defaults and overrides" do
1579
1579
  before(:all) do
1580
- @db = INTEGRATION_DB
1580
+ @db = DB
1581
1581
  @db.create_table!(:a){Integer :a}
1582
1582
  @ds = @db[:a].order(:a).extension(:set_overrides)
1583
1583
  end
@@ -1603,14 +1603,14 @@ describe "Dataset defaults and overrides" do
1603
1603
  end
1604
1604
  end
1605
1605
 
1606
- if INTEGRATION_DB.dataset.supports_modifying_joins?
1606
+ if DB.dataset.supports_modifying_joins?
1607
1607
  describe "Modifying joined datasets" do
1608
1608
  before do
1609
- @db = INTEGRATION_DB
1609
+ @db = DB
1610
1610
  @db.create_table!(:a){Integer :a; Integer :d}
1611
1611
  @db.create_table!(:b){Integer :b; Integer :e}
1612
1612
  @db.create_table!(:c){Integer :c; Integer :f}
1613
- @ds = @db.from(:a, :b).join(:c, :c=>Sequel.identifier(:e)).where(:d=>:b, :f=>6)
1613
+ @ds = @db.from(:a, :b).join(:c, {:c=>Sequel.identifier(:e)}, :qualify=>:symbol).where(:d=>:b, :f=>6)
1614
1614
  @db[:a].insert(1, 2)
1615
1615
  @db[:a].insert(3, 4)
1616
1616
  @db[:b].insert(2, 5)
@@ -1642,7 +1642,7 @@ end
1642
1642
 
1643
1643
  describe "Emulated functions" do
1644
1644
  before(:all) do
1645
- @db = INTEGRATION_DB
1645
+ @db = DB
1646
1646
  @db.create_table!(:a){String :a}
1647
1647
  @ds = @db[:a]
1648
1648
  end
@@ -2,8 +2,8 @@ require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
2
2
 
3
3
  describe "Eagerly loading a tree structure" do
4
4
  before(:all) do
5
- INTEGRATION_DB.instance_variable_set(:@schemas, {})
6
- INTEGRATION_DB.create_table!(:nodes) do
5
+ DB.instance_variable_set(:@schemas, {})
6
+ DB.create_table!(:nodes) do
7
7
  primary_key :id
8
8
  foreign_key :parent_id, :nodes
9
9
  end
@@ -68,7 +68,7 @@ describe "Eagerly loading a tree structure" do
68
68
  Node.insert(:parent_id=>6)
69
69
  end
70
70
  after(:all) do
71
- INTEGRATION_DB.drop_table :nodes
71
+ DB.drop_table :nodes
72
72
  Object.send(:remove_const, :Node)
73
73
  end
74
74
 
@@ -128,14 +128,14 @@ describe "Association Extensions" do
128
128
  first(:name=>name) || model.create(:name=>name, :author_id=>model_object.pk)
129
129
  end
130
130
  end
131
- INTEGRATION_DB.instance_variable_set(:@schemas, {})
132
- INTEGRATION_DB.create_table!(:authors) do
131
+ DB.instance_variable_set(:@schemas, {})
132
+ DB.create_table!(:authors) do
133
133
  primary_key :id
134
134
  end
135
135
  class ::Author < Sequel::Model
136
136
  one_to_many :authorships, :extend=>FindOrCreate
137
137
  end
138
- INTEGRATION_DB.create_table!(:authorships) do
138
+ DB.create_table!(:authorships) do
139
139
  primary_key :id
140
140
  foreign_key :author_id, :authors
141
141
  String :name
@@ -146,7 +146,7 @@ describe "Association Extensions" do
146
146
  @author = Author.create
147
147
  end
148
148
  after do
149
- INTEGRATION_DB.drop_table :authorships, :authors
149
+ DB.drop_table :authorships, :authors
150
150
  Object.send(:remove_const, :Author)
151
151
  Object.send(:remove_const, :Authorship)
152
152
  end
@@ -171,8 +171,8 @@ end
171
171
 
172
172
  describe "has_many :through has_many and has_one :through belongs_to" do
173
173
  before(:all) do
174
- INTEGRATION_DB.instance_variable_set(:@schemas, {})
175
- INTEGRATION_DB.create_table!(:firms) do
174
+ DB.instance_variable_set(:@schemas, {})
175
+ DB.create_table!(:firms) do
176
176
  primary_key :id
177
177
  end
178
178
  class ::Firm < Sequel::Model
@@ -195,7 +195,7 @@ describe "has_many :through has_many and has_one :through belongs_to" do
195
195
  end)
196
196
  end
197
197
 
198
- INTEGRATION_DB.create_table!(:clients) do
198
+ DB.create_table!(:clients) do
199
199
  primary_key :id
200
200
  foreign_key :firm_id, :firms
201
201
  end
@@ -204,7 +204,7 @@ describe "has_many :through has_many and has_one :through belongs_to" do
204
204
  one_to_many :invoices
205
205
  end
206
206
 
207
- INTEGRATION_DB.create_table!(:invoices) do
207
+ DB.create_table!(:invoices) do
208
208
  primary_key :id
209
209
  foreign_key :client_id, :clients
210
210
  end
@@ -251,7 +251,7 @@ describe "has_many :through has_many and has_one :through belongs_to" do
251
251
  @invoice5 = Invoice.create(:client => @client3)
252
252
  end
253
253
  after(:all) do
254
- INTEGRATION_DB.drop_table :invoices, :clients, :firms
254
+ DB.drop_table :invoices, :clients, :firms
255
255
  Object.send(:remove_const, :Firm)
256
256
  Object.send(:remove_const, :Client)
257
257
  Object.send(:remove_const, :Invoice)
@@ -322,8 +322,8 @@ end
322
322
 
323
323
  describe "Polymorphic Associations" do
324
324
  before(:all) do
325
- INTEGRATION_DB.instance_variable_set(:@schemas, {})
326
- INTEGRATION_DB.create_table!(:assets) do
325
+ DB.instance_variable_set(:@schemas, {})
326
+ DB.create_table!(:assets) do
327
327
  primary_key :id
328
328
  Integer :attachable_id
329
329
  String :attachable_type
@@ -356,7 +356,7 @@ describe "Polymorphic Associations" do
356
356
  end)
357
357
  end
358
358
 
359
- INTEGRATION_DB.create_table!(:posts) do
359
+ DB.create_table!(:posts) do
360
360
  primary_key :id
361
361
  end
362
362
  class ::Post < Sequel::Model
@@ -366,7 +366,7 @@ describe "Polymorphic Associations" do
366
366
  :clearer=>proc{assets_dataset.update(:attachable_id=>nil, :attachable_type=>nil)}
367
367
  end
368
368
 
369
- INTEGRATION_DB.create_table!(:notes) do
369
+ DB.create_table!(:notes) do
370
370
  primary_key :id
371
371
  end
372
372
  class ::Note < Sequel::Model
@@ -377,7 +377,7 @@ describe "Polymorphic Associations" do
377
377
  end
378
378
  end
379
379
  before do
380
- [:assets, :posts, :notes].each{|t| INTEGRATION_DB[t].delete}
380
+ [:assets, :posts, :notes].each{|t| DB[t].delete}
381
381
  @post = Post.create
382
382
  Note.create
383
383
  @note = Note.create
@@ -387,7 +387,7 @@ describe "Polymorphic Associations" do
387
387
  @asset2.associations.clear
388
388
  end
389
389
  after(:all) do
390
- INTEGRATION_DB.drop_table :assets, :posts, :notes
390
+ DB.drop_table :assets, :posts, :notes
391
391
  Object.send(:remove_const, :Asset)
392
392
  Object.send(:remove_const, :Post)
393
393
  Object.send(:remove_const, :Note)
@@ -448,8 +448,8 @@ end
448
448
 
449
449
  describe "many_to_one/one_to_many not referencing primary key" do
450
450
  before(:all) do
451
- INTEGRATION_DB.instance_variable_set(:@schemas, {})
452
- INTEGRATION_DB.create_table!(:clients) do
451
+ DB.instance_variable_set(:@schemas, {})
452
+ DB.create_table!(:clients) do
453
453
  primary_key :id
454
454
  String :name
455
455
  end
@@ -478,7 +478,7 @@ describe "many_to_one/one_to_many not referencing primary key" do
478
478
  end)
479
479
  end
480
480
 
481
- INTEGRATION_DB.create_table!(:invoices) do
481
+ DB.create_table!(:invoices) do
482
482
  primary_key :id
483
483
  String :client_name
484
484
  end
@@ -504,7 +504,7 @@ describe "many_to_one/one_to_many not referencing primary key" do
504
504
  @invoice2 = Invoice.create(:client_name=>'X')
505
505
  end
506
506
  after(:all) do
507
- INTEGRATION_DB.drop_table :invoices, :clients
507
+ DB.drop_table :invoices, :clients
508
508
  Object.send(:remove_const, :Client)
509
509
  Object.send(:remove_const, :Invoice)
510
510
  end
@@ -575,7 +575,7 @@ end
575
575
 
576
576
  describe "statistics associations" do
577
577
  before(:all) do
578
- INTEGRATION_DB.create_table!(:projects) do
578
+ DB.create_table!(:projects) do
579
579
  primary_key :id
580
580
  String :name
581
581
  end
@@ -599,7 +599,7 @@ describe "statistics associations" do
599
599
  end
600
600
  end
601
601
 
602
- INTEGRATION_DB.create_table!(:tickets) do
602
+ DB.create_table!(:tickets) do
603
603
  primary_key :id
604
604
  foreign_key :project_id, :projects
605
605
  Integer :hours
@@ -616,7 +616,7 @@ describe "statistics associations" do
616
616
  @ticket4 = Ticket.create(:project=>@project2, :hours=>20)
617
617
  end
618
618
  after(:all) do
619
- INTEGRATION_DB.drop_table :tickets, :projects
619
+ DB.drop_table :tickets, :projects
620
620
  Object.send(:remove_const, :Project)
621
621
  Object.send(:remove_const, :Ticket)
622
622
  end
@@ -635,7 +635,7 @@ end
635
635
 
636
636
  describe "one to one associations" do
637
637
  before(:all) do
638
- INTEGRATION_DB.create_table!(:books) do
638
+ DB.create_table!(:books) do
639
639
  primary_key :id
640
640
  end
641
641
  class ::Book < Sequel::Model
@@ -643,7 +643,7 @@ describe "one to one associations" do
643
643
  one_to_one :second_page, :class=>:Page, :conditions=>{:page_number=>2}, :reciprocal=>nil
644
644
  end
645
645
 
646
- INTEGRATION_DB.create_table!(:pages) do
646
+ DB.create_table!(:pages) do
647
647
  primary_key :id
648
648
  foreign_key :book_id, :books
649
649
  Integer :page_number
@@ -660,7 +660,7 @@ describe "one to one associations" do
660
660
  @page4 = Page.create(:book=>@book2, :page_number=>2)
661
661
  end
662
662
  after(:all) do
663
- INTEGRATION_DB.drop_table :pages, :books
663
+ DB.drop_table :pages, :books
664
664
  Object.send(:remove_const, :Book)
665
665
  Object.send(:remove_const, :Page)
666
666
  end