sequel 3.48.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
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