sequel 4.44.0 → 4.45.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 (140) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +110 -0
  3. data/README.rdoc +8 -9
  4. data/doc/active_record.rdoc +2 -3
  5. data/doc/model_plugins.rdoc +1 -1
  6. data/doc/opening_databases.rdoc +0 -46
  7. data/doc/release_notes/4.45.0.txt +370 -0
  8. data/lib/sequel/adapters/cubrid.rb +2 -0
  9. data/lib/sequel/adapters/do.rb +2 -0
  10. data/lib/sequel/adapters/jdbc/as400.rb +2 -0
  11. data/lib/sequel/adapters/jdbc/cubrid.rb +2 -0
  12. data/lib/sequel/adapters/jdbc/firebirdsql.rb +2 -0
  13. data/lib/sequel/adapters/jdbc/informix-sqli.rb +2 -0
  14. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +2 -0
  15. data/lib/sequel/adapters/jdbc/mysql.rb +1 -0
  16. data/lib/sequel/adapters/jdbc/postgresql.rb +5 -0
  17. data/lib/sequel/adapters/mysql.rb +1 -0
  18. data/lib/sequel/adapters/mysql2.rb +1 -0
  19. data/lib/sequel/adapters/odbc/oracle.rb +11 -0
  20. data/lib/sequel/adapters/odbc/progress.rb +2 -0
  21. data/lib/sequel/adapters/postgres.rb +0 -2
  22. data/lib/sequel/adapters/shared/cubrid.rb +2 -0
  23. data/lib/sequel/adapters/shared/firebird.rb +2 -0
  24. data/lib/sequel/adapters/shared/informix.rb +2 -0
  25. data/lib/sequel/adapters/shared/mssql.rb +47 -7
  26. data/lib/sequel/adapters/shared/mysql.rb +16 -1
  27. data/lib/sequel/adapters/shared/postgres.rb +9 -1
  28. data/lib/sequel/adapters/shared/progress.rb +2 -0
  29. data/lib/sequel/adapters/shared/sqlanywhere.rb +1 -1
  30. data/lib/sequel/adapters/swift.rb +2 -0
  31. data/lib/sequel/ast_transformer.rb +13 -6
  32. data/lib/sequel/core.rb +13 -16
  33. data/lib/sequel/database/connecting.rb +25 -10
  34. data/lib/sequel/database/dataset.rb +6 -1
  35. data/lib/sequel/database/dataset_defaults.rb +9 -2
  36. data/lib/sequel/database/misc.rb +10 -3
  37. data/lib/sequel/database/schema_methods.rb +4 -0
  38. data/lib/sequel/dataset/mutation.rb +8 -20
  39. data/lib/sequel/dataset/prepared_statements.rb +2 -0
  40. data/lib/sequel/dataset/query.rb +32 -7
  41. data/lib/sequel/dataset/sql.rb +13 -3
  42. data/lib/sequel/deprecated.rb +9 -1
  43. data/lib/sequel/exceptions.rb +37 -8
  44. data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +117 -0
  45. data/lib/sequel/extensions/date_arithmetic.rb +1 -0
  46. data/lib/sequel/extensions/identifier_mangling.rb +3 -2
  47. data/lib/sequel/extensions/pg_hstore.rb +1 -5
  48. data/lib/sequel/extensions/schema_dumper.rb +3 -1
  49. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +2 -2
  50. data/lib/sequel/extensions/string_agg.rb +1 -0
  51. data/lib/sequel/model.rb +23 -10
  52. data/lib/sequel/model/associations.rb +17 -5
  53. data/lib/sequel/model/base.rb +115 -62
  54. data/lib/sequel/model/dataset_module.rb +10 -3
  55. data/lib/sequel/model/exceptions.rb +7 -5
  56. data/lib/sequel/plugins/association_pks.rb +13 -1
  57. data/lib/sequel/plugins/association_proxies.rb +8 -1
  58. data/lib/sequel/plugins/before_after_save.rb +1 -0
  59. data/lib/sequel/plugins/class_table_inheritance.rb +7 -3
  60. data/lib/sequel/plugins/columns_updated.rb +42 -0
  61. data/lib/sequel/plugins/composition.rb +10 -5
  62. data/lib/sequel/plugins/error_splitter.rb +1 -1
  63. data/lib/sequel/plugins/hook_class_methods.rb +39 -5
  64. data/lib/sequel/plugins/instance_hooks.rb +58 -5
  65. data/lib/sequel/plugins/lazy_attributes.rb +10 -5
  66. data/lib/sequel/plugins/nested_attributes.rb +10 -5
  67. data/lib/sequel/plugins/prepared_statements.rb +7 -0
  68. data/lib/sequel/plugins/prepared_statements_associations.rb +2 -0
  69. data/lib/sequel/plugins/prepared_statements_with_pk.rb +2 -0
  70. data/lib/sequel/plugins/schema.rb +2 -0
  71. data/lib/sequel/plugins/scissors.rb +2 -0
  72. data/lib/sequel/plugins/serialization.rb +10 -5
  73. data/lib/sequel/plugins/split_values.rb +5 -1
  74. data/lib/sequel/plugins/static_cache.rb +2 -2
  75. data/lib/sequel/plugins/tactical_eager_loading.rb +1 -1
  76. data/lib/sequel/plugins/validation_contexts.rb +49 -0
  77. data/lib/sequel/plugins/validation_helpers.rb +1 -0
  78. data/lib/sequel/sql.rb +1 -1
  79. data/lib/sequel/version.rb +1 -1
  80. data/spec/adapters/mssql_spec.rb +31 -0
  81. data/spec/adapters/mysql_spec.rb +20 -2
  82. data/spec/adapters/postgres_spec.rb +43 -12
  83. data/spec/adapters/spec_helper.rb +5 -8
  84. data/spec/core/database_spec.rb +47 -12
  85. data/spec/core/dataset_mutation_spec.rb +22 -22
  86. data/spec/core/dataset_spec.rb +88 -20
  87. data/spec/core/deprecated_spec.rb +1 -1
  88. data/spec/core/expression_filters_spec.rb +1 -1
  89. data/spec/core/mock_adapter_spec.rb +0 -3
  90. data/spec/core/placeholder_literalizer_spec.rb +1 -1
  91. data/spec/core/schema_spec.rb +8 -1
  92. data/spec/core/spec_helper.rb +6 -1
  93. data/spec/core_extensions_spec.rb +4 -0
  94. data/spec/deprecation_helper.rb +17 -0
  95. data/spec/extensions/_deprecated_identifier_mangling_spec.rb +314 -0
  96. data/spec/extensions/association_pks_spec.rb +61 -13
  97. data/spec/extensions/association_proxies_spec.rb +3 -3
  98. data/spec/extensions/class_table_inheritance_spec.rb +39 -0
  99. data/spec/extensions/columns_updated_spec.rb +35 -0
  100. data/spec/extensions/composition_spec.rb +6 -1
  101. data/spec/extensions/hook_class_methods_spec.rb +114 -26
  102. data/spec/extensions/identifier_mangling_spec.rb +107 -73
  103. data/spec/extensions/instance_hooks_spec.rb +78 -14
  104. data/spec/extensions/lazy_attributes_spec.rb +8 -2
  105. data/spec/extensions/many_through_many_spec.rb +2 -2
  106. data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
  107. data/spec/extensions/nested_attributes_spec.rb +8 -2
  108. data/spec/extensions/pg_array_spec.rb +18 -4
  109. data/spec/extensions/prepared_statements_associations_spec.rb +48 -39
  110. data/spec/extensions/prepared_statements_with_pk_spec.rb +13 -11
  111. data/spec/extensions/query_spec.rb +1 -1
  112. data/spec/extensions/schema_dumper_spec.rb +34 -6
  113. data/spec/extensions/schema_spec.rb +13 -7
  114. data/spec/extensions/scissors_spec.rb +3 -1
  115. data/spec/extensions/sequel_3_dataset_methods_spec.rb +4 -4
  116. data/spec/extensions/serialization_spec.rb +7 -1
  117. data/spec/extensions/set_overrides_spec.rb +2 -2
  118. data/spec/extensions/shared_caching_spec.rb +19 -15
  119. data/spec/extensions/spec_helper.rb +7 -3
  120. data/spec/extensions/split_values_spec.rb +45 -10
  121. data/spec/extensions/string_agg_spec.rb +2 -2
  122. data/spec/extensions/subset_conditions_spec.rb +3 -3
  123. data/spec/extensions/tactical_eager_loading_spec.rb +1 -1
  124. data/spec/extensions/validation_contexts_spec.rb +31 -0
  125. data/spec/guards_helper.rb +2 -0
  126. data/spec/integration/associations_test.rb +22 -20
  127. data/spec/integration/dataset_test.rb +25 -2
  128. data/spec/integration/model_test.rb +1 -1
  129. data/spec/integration/plugin_test.rb +11 -16
  130. data/spec/integration/prepared_statement_test.rb +40 -32
  131. data/spec/integration/spec_helper.rb +5 -8
  132. data/spec/model/association_reflection_spec.rb +4 -0
  133. data/spec/model/associations_spec.rb +37 -10
  134. data/spec/model/base_spec.rb +6 -0
  135. data/spec/model/hooks_spec.rb +56 -35
  136. data/spec/model/model_spec.rb +21 -5
  137. data/spec/model/record_spec.rb +14 -11
  138. data/spec/model/spec_helper.rb +7 -1
  139. data/spec/sequel_warning.rb +11 -0
  140. metadata +13 -3
@@ -195,7 +195,7 @@ describe "Model#save" do
195
195
  o.changed_columns.must_equal []
196
196
  end
197
197
 
198
- it "should store previous value of @new in @was_new and as well as the hash used for updating in @columns_updated until after hooks finish running" do
198
+ deprecated "should store previous value of @new in @was_new and as well as the hash used for updating in @columns_updated until after hooks finish running" do
199
199
  res = nil
200
200
  @c.send(:define_method, :after_save){ res = [@columns_updated, @was_new]}
201
201
  o = @c.new(:x => 1, :y => nil)
@@ -209,7 +209,9 @@ describe "Model#save" do
209
209
  o = @c.load(:id => 23,:x => 1, :y => nil)
210
210
  o[:x] = 2
211
211
  o.save
212
- res.must_equal [{:x => 2, :y => nil}, nil]
212
+ res[0].fetch(:x).must_equal 2
213
+ res[0].fetch(:y).must_be_nil
214
+ res.fetch(1).must_be_nil
213
215
  o.after_save
214
216
  res.must_equal [nil, nil]
215
217
 
@@ -218,7 +220,8 @@ describe "Model#save" do
218
220
  o[:x] = 2
219
221
  o[:y] = 22
220
222
  o.save(:columns=>:x)
221
- res.must_equal [{:x=>2},nil]
223
+ res[0].fetch(:x).must_equal 2
224
+ res.fetch(1).must_be_nil
222
225
  o.after_save
223
226
  res.must_equal [nil, nil]
224
227
  end
@@ -265,7 +268,7 @@ describe "Model#save" do
265
268
  DB.sqls.must_equal ["BEGIN", "UPDATE items SET y = NULL WHERE (id = 3)", "COMMIT"]
266
269
  end
267
270
 
268
- it "should rollback if before_save returns false and raise_on_save_failure = true" do
271
+ deprecated "should rollback if before_save returns false and raise_on_save_failure = true" do
269
272
  o = @c.load(:id => 3, :x => 1, :y => nil)
270
273
  o.use_transactions = true
271
274
  o.raise_on_save_failure = true
@@ -287,23 +290,23 @@ describe "Model#save" do
287
290
  DB.sqls.must_equal ["BEGIN", "ROLLBACK"]
288
291
  end
289
292
 
290
- it "should rollback if before_save returns false and :raise_on_failure option is true" do
293
+ it "should rollback if before_save calls cancel_action and :raise_on_failure option is true" do
291
294
  o = @c.load(:id => 3, :x => 1, :y => nil)
292
295
  o.use_transactions = true
293
296
  o.raise_on_save_failure = false
294
297
  def o.before_save
295
- false
298
+ cancel_action
296
299
  end
297
300
  proc { o.save(:columns=>:y, :raise_on_failure => true) }.must_raise(Sequel::HookFailed)
298
301
  DB.sqls.must_equal ["BEGIN", "ROLLBACK"]
299
302
  end
300
303
 
301
- it "should not rollback outer transactions if before_save returns false and raise_on_save_failure = false" do
304
+ it "should not rollback outer transactions if before_save calls cancel_action and raise_on_save_failure = false" do
302
305
  o = @c.load(:id => 3, :x => 1, :y => nil)
303
306
  o.use_transactions = true
304
307
  o.raise_on_save_failure = false
305
308
  def o.before_save
306
- false
309
+ cancel_action
307
310
  end
308
311
  DB.transaction do
309
312
  o.save(:columns=>:y).must_be_nil
@@ -312,12 +315,12 @@ describe "Model#save" do
312
315
  DB.sqls.must_equal ["BEGIN", "BLAH", "COMMIT"]
313
316
  end
314
317
 
315
- it "should rollback if before_save returns false and raise_on_save_failure = false" do
318
+ it "should rollback if before_save calls cancel_action and raise_on_save_failure = false" do
316
319
  o = @c.load(:id => 3, :x => 1, :y => nil)
317
320
  o.use_transactions = true
318
321
  o.raise_on_save_failure = false
319
322
  def o.before_save
320
- false
323
+ cancel_action
321
324
  end
322
325
  o.save(:columns=>:y).must_be_nil
323
326
  DB.sqls.must_equal ["BEGIN", "ROLLBACK"]
@@ -684,7 +687,7 @@ describe "Model#save_changes" do
684
687
 
685
688
  it "should take options passed to save" do
686
689
  o = @c.new(:x => 1)
687
- def o.before_validation; false; end
690
+ def o.before_validation; cancel_action; end
688
691
  proc{o.save_changes}.must_raise(Sequel::HookFailed)
689
692
  DB.sqls.must_equal []
690
693
  o.save_changes(:validate=>false)
@@ -11,9 +11,15 @@ gem 'minitest'
11
11
  require 'minitest/autorun'
12
12
  require 'minitest/hooks/default'
13
13
 
14
+ require "#{File.dirname(File.dirname(__FILE__))}/deprecation_helper.rb"
15
+
16
+ # SEQUEL5: Remove
17
+ output = Sequel::Deprecation.output
18
+ Sequel::Deprecation.output = nil
14
19
  Sequel.quote_identifiers = false
15
20
  Sequel.identifier_input_method = nil
16
21
  Sequel.identifier_output_method = nil
22
+ Sequel::Deprecation.output = output
17
23
 
18
24
  class << Sequel::Model
19
25
  attr_writer :db_schema
@@ -30,7 +36,7 @@ class << Sequel::Model
30
36
  end
31
37
 
32
38
  Sequel::Model.use_transactions = false
33
- Sequel.cache_anonymous_models = false
39
+ Sequel::Model.cache_anonymous_models = false
34
40
 
35
41
  db = Sequel.mock(:fetch=>{:id => 1, :x => 1}, :numrows=>1, :autoid=>proc{|sql| 10})
36
42
  def db.schema(*) [[:id, {:primary_key=>true}]] end
@@ -2,3 +2,14 @@ if ENV['WARNING']
2
2
  require 'warning'
3
3
  Warning.ignore([:missing_ivar, :method_redefined], File.dirname(File.dirname(__FILE__)))
4
4
  end
5
+
6
+ # SEQUEL5: Remove
7
+ if RUBY_VERSION >= '2.4'
8
+ begin
9
+ require 'warning'
10
+ rescue LoadError
11
+ # nothing
12
+ else
13
+ Warning.ignore(/warning: constant Sequel::[a-zA-z:]+ is deprecated/, File.dirname(File.dirname(__FILE__)))
14
+ end
15
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.44.0
4
+ version: 4.45.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Evans
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-01 00:00:00.000000000 Z
11
+ date: 2017-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -246,6 +246,7 @@ extra_rdoc_files:
246
246
  - doc/release_notes/4.42.0.txt
247
247
  - doc/release_notes/4.43.0.txt
248
248
  - doc/release_notes/4.44.0.txt
249
+ - doc/release_notes/4.45.0.txt
249
250
  files:
250
251
  - CHANGELOG
251
252
  - MIT-LICENSE
@@ -381,6 +382,7 @@ files:
381
382
  - doc/release_notes/4.42.0.txt
382
383
  - doc/release_notes/4.43.0.txt
383
384
  - doc/release_notes/4.44.0.txt
385
+ - doc/release_notes/4.45.0.txt
384
386
  - doc/release_notes/4.5.0.txt
385
387
  - doc/release_notes/4.6.0.txt
386
388
  - doc/release_notes/4.7.0.txt
@@ -431,6 +433,7 @@ files:
431
433
  - lib/sequel/adapters/odbc.rb
432
434
  - lib/sequel/adapters/odbc/db2.rb
433
435
  - lib/sequel/adapters/odbc/mssql.rb
436
+ - lib/sequel/adapters/odbc/oracle.rb
434
437
  - lib/sequel/adapters/odbc/progress.rb
435
438
  - lib/sequel/adapters/oracle.rb
436
439
  - lib/sequel/adapters/postgres.rb
@@ -493,6 +496,7 @@ files:
493
496
  - lib/sequel/dataset/sql.rb
494
497
  - lib/sequel/deprecated.rb
495
498
  - lib/sequel/exceptions.rb
499
+ - lib/sequel/extensions/_deprecated_identifier_mangling.rb
496
500
  - lib/sequel/extensions/_model_constraint_validations.rb
497
501
  - lib/sequel/extensions/_model_pg_row.rb
498
502
  - lib/sequel/extensions/_pretty_table.rb
@@ -594,6 +598,7 @@ files:
594
598
  - lib/sequel/plugins/class_table_inheritance.rb
595
599
  - lib/sequel/plugins/column_conflicts.rb
596
600
  - lib/sequel/plugins/column_select.rb
601
+ - lib/sequel/plugins/columns_updated.rb
597
602
  - lib/sequel/plugins/composition.rb
598
603
  - lib/sequel/plugins/constraint_validations.rb
599
604
  - lib/sequel/plugins/csv_serializer.rb
@@ -654,6 +659,7 @@ files:
654
659
  - lib/sequel/plugins/uuid.rb
655
660
  - lib/sequel/plugins/validate_associated.rb
656
661
  - lib/sequel/plugins/validation_class_methods.rb
662
+ - lib/sequel/plugins/validation_contexts.rb
657
663
  - lib/sequel/plugins/validation_helpers.rb
658
664
  - lib/sequel/plugins/xml_serializer.rb
659
665
  - lib/sequel/sql.rb
@@ -687,6 +693,8 @@ files:
687
693
  - spec/core_extensions_spec.rb
688
694
  - spec/core_model_spec.rb
689
695
  - spec/core_spec.rb
696
+ - spec/deprecation_helper.rb
697
+ - spec/extensions/_deprecated_identifier_mangling_spec.rb
690
698
  - spec/extensions/accessed_columns_spec.rb
691
699
  - spec/extensions/active_model_spec.rb
692
700
  - spec/extensions/after_initialize_spec.rb
@@ -705,6 +713,7 @@ files:
705
713
  - spec/extensions/column_conflicts_spec.rb
706
714
  - spec/extensions/column_select_spec.rb
707
715
  - spec/extensions/columns_introspection_spec.rb
716
+ - spec/extensions/columns_updated_spec.rb
708
717
  - spec/extensions/composition_spec.rb
709
718
  - spec/extensions/connection_expiration_spec.rb
710
719
  - spec/extensions/connection_validator_spec.rb
@@ -829,6 +838,7 @@ files:
829
838
  - spec/extensions/uuid_spec.rb
830
839
  - spec/extensions/validate_associated_spec.rb
831
840
  - spec/extensions/validation_class_methods_spec.rb
841
+ - spec/extensions/validation_contexts_spec.rb
832
842
  - spec/extensions/validation_helpers_spec.rb
833
843
  - spec/extensions/xml_serializer_spec.rb
834
844
  - spec/files/bad_down_migration/001_create_alt_basic.rb
@@ -943,7 +953,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
943
953
  version: '0'
944
954
  requirements: []
945
955
  rubyforge_project:
946
- rubygems_version: 2.6.8
956
+ rubygems_version: 2.6.11
947
957
  signing_key:
948
958
  specification_version: 4
949
959
  summary: The Database Toolkit for Ruby