sequel 4.44.0 → 4.45.0

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