sequel 3.35.0 → 3.36.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 (81) hide show
  1. data/CHANGELOG +78 -0
  2. data/Rakefile +3 -3
  3. data/bin/sequel +3 -1
  4. data/doc/advanced_associations.rdoc +154 -11
  5. data/doc/migration.rdoc +18 -0
  6. data/doc/object_model.rdoc +541 -0
  7. data/doc/opening_databases.rdoc +4 -1
  8. data/doc/release_notes/3.36.0.txt +245 -0
  9. data/doc/schema_modification.rdoc +0 -6
  10. data/lib/sequel/adapters/do/mysql.rb +7 -0
  11. data/lib/sequel/adapters/jdbc.rb +11 -3
  12. data/lib/sequel/adapters/jdbc/mysql.rb +3 -5
  13. data/lib/sequel/adapters/jdbc/postgresql.rb +10 -8
  14. data/lib/sequel/adapters/jdbc/progress.rb +21 -0
  15. data/lib/sequel/adapters/mock.rb +2 -6
  16. data/lib/sequel/adapters/mysql.rb +3 -9
  17. data/lib/sequel/adapters/mysql2.rb +12 -11
  18. data/lib/sequel/adapters/postgres.rb +32 -40
  19. data/lib/sequel/adapters/shared/mssql.rb +15 -11
  20. data/lib/sequel/adapters/shared/mysql.rb +28 -3
  21. data/lib/sequel/adapters/shared/oracle.rb +5 -0
  22. data/lib/sequel/adapters/shared/postgres.rb +59 -5
  23. data/lib/sequel/adapters/shared/sqlite.rb +3 -13
  24. data/lib/sequel/adapters/sqlite.rb +0 -7
  25. data/lib/sequel/adapters/swift/mysql.rb +2 -5
  26. data/lib/sequel/adapters/tinytds.rb +1 -2
  27. data/lib/sequel/connection_pool/sharded_threaded.rb +5 -1
  28. data/lib/sequel/connection_pool/threaded.rb +9 -1
  29. data/lib/sequel/database/dataset_defaults.rb +3 -1
  30. data/lib/sequel/database/misc.rb +7 -1
  31. data/lib/sequel/database/query.rb +11 -3
  32. data/lib/sequel/database/schema_generator.rb +40 -9
  33. data/lib/sequel/database/schema_methods.rb +6 -1
  34. data/lib/sequel/dataset/actions.rb +5 -5
  35. data/lib/sequel/dataset/prepared_statements.rb +3 -1
  36. data/lib/sequel/dataset/query.rb +1 -1
  37. data/lib/sequel/extensions/migration.rb +28 -0
  38. data/lib/sequel/extensions/pg_auto_parameterize.rb +0 -9
  39. data/lib/sequel/extensions/pg_inet.rb +89 -0
  40. data/lib/sequel/extensions/pg_json.rb +178 -0
  41. data/lib/sequel/extensions/schema_dumper.rb +24 -6
  42. data/lib/sequel/model/associations.rb +19 -15
  43. data/lib/sequel/model/base.rb +11 -12
  44. data/lib/sequel/plugins/composition.rb +1 -2
  45. data/lib/sequel/plugins/eager_each.rb +59 -0
  46. data/lib/sequel/plugins/json_serializer.rb +41 -4
  47. data/lib/sequel/plugins/nested_attributes.rb +72 -52
  48. data/lib/sequel/plugins/optimistic_locking.rb +8 -0
  49. data/lib/sequel/plugins/tactical_eager_loading.rb +7 -7
  50. data/lib/sequel/version.rb +1 -1
  51. data/spec/adapters/postgres_spec.rb +271 -1
  52. data/spec/adapters/sqlite_spec.rb +11 -0
  53. data/spec/core/connection_pool_spec.rb +26 -1
  54. data/spec/core/database_spec.rb +19 -0
  55. data/spec/core/dataset_spec.rb +45 -5
  56. data/spec/core/expression_filters_spec.rb +31 -67
  57. data/spec/core/mock_adapter_spec.rb +4 -0
  58. data/spec/extensions/core_extensions_spec.rb +83 -0
  59. data/spec/extensions/eager_each_spec.rb +34 -0
  60. data/spec/extensions/inflector_spec.rb +0 -4
  61. data/spec/extensions/json_serializer_spec.rb +32 -1
  62. data/spec/extensions/migration_spec.rb +28 -0
  63. data/spec/extensions/nested_attributes_spec.rb +134 -1
  64. data/spec/extensions/optimistic_locking_spec.rb +15 -1
  65. data/spec/extensions/pg_hstore_spec.rb +1 -1
  66. data/spec/extensions/pg_inet_spec.rb +44 -0
  67. data/spec/extensions/pg_json_spec.rb +101 -0
  68. data/spec/extensions/prepared_statements_spec.rb +30 -0
  69. data/spec/extensions/rcte_tree_spec.rb +9 -0
  70. data/spec/extensions/schema_dumper_spec.rb +195 -7
  71. data/spec/extensions/serialization_spec.rb +4 -0
  72. data/spec/extensions/spec_helper.rb +9 -1
  73. data/spec/extensions/tactical_eager_loading_spec.rb +8 -0
  74. data/spec/integration/database_test.rb +5 -1
  75. data/spec/integration/prepared_statement_test.rb +20 -2
  76. data/spec/model/associations_spec.rb +27 -0
  77. data/spec/model/base_spec.rb +54 -0
  78. data/spec/model/model_spec.rb +6 -0
  79. data/spec/model/record_spec.rb +18 -0
  80. data/spec/rcov.opts +2 -0
  81. metadata +14 -3
@@ -571,6 +571,12 @@ describe Sequel::Model, ".[]" do
571
571
  MODEL_DB.sqls.should == ["SELECT * FROM items WHERE id = 9999"]
572
572
  end
573
573
 
574
+ it "should have #[] return nil if no rows match" do
575
+ @c.dataset._fetch = []
576
+ @c[1].should == nil
577
+ MODEL_DB.sqls.should == ["SELECT * FROM items WHERE id = 1"]
578
+ end
579
+
574
580
  it "should work correctly for custom primary key" do
575
581
  @c.set_primary_key :name
576
582
  @c['sharon'].should == @c.load(:name => 'sharon', :id => 1)
@@ -942,6 +942,15 @@ describe Sequel::Model, "#set_fields" do
942
942
  @o1.set_fields({:x => 1, :y => 3, :z=>3, :id=>4}, [:x, :y], :missing=>:raise)
943
943
  @o1.values.should == {:x => 1, :y => 3}
944
944
  end
945
+
946
+ it "should use default behavior for an unrecognized :missing option" do
947
+ @o1.set_fields({:x => 1, :y => 2, :z=>3, :id=>4}, [:x, :y], :missing=>:foo)
948
+ @o1.values.should == {:x => 1, :y => 2}
949
+ @o1.set_fields({:x => 9, :y => 8, :z=>6, :id=>7}, [:x, :y, :id], :missing=>:foo)
950
+ @o1.values.should == {:x => 9, :y => 8, :id=>7}
951
+ MODEL_DB.sqls.should == []
952
+ end
953
+
945
954
  end
946
955
 
947
956
  describe Sequel::Model, "#update_fields" do
@@ -1530,6 +1539,15 @@ describe Sequel::Model, "typecasting" do
1530
1539
  proc{@c.new.x = ''}.should raise_error
1531
1540
  end
1532
1541
 
1542
+ specify "should handle typecasting where == raises an error on the object" do
1543
+ m = @c.new
1544
+ o = Object.new
1545
+ def o.==(v) raise ArgumentError end
1546
+ def o.to_i() 4 end
1547
+ m.x = o
1548
+ m.x.should == 4
1549
+ end
1550
+
1533
1551
  specify "should not typecast nil if NULLs are allowed" do
1534
1552
  @c.db_schema[:x][:allow_null] = true
1535
1553
  m = @c.new
data/spec/rcov.opts CHANGED
@@ -4,3 +4,5 @@ gems
4
4
  spec
5
5
  --exclude
6
6
  00*
7
+ --threshold
8
+ 100
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.35.0
4
+ version: 3.36.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-01 00:00:00.000000000 Z
12
+ date: 2012-06-01 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: The Database Toolkit for Ruby
15
15
  email: code@jeremyevans.net
@@ -41,6 +41,7 @@ extra_rdoc_files:
41
41
  - doc/schema_modification.rdoc
42
42
  - doc/transactions.rdoc
43
43
  - doc/thread_safety.rdoc
44
+ - doc/object_model.rdoc
44
45
  - doc/release_notes/1.0.txt
45
46
  - doc/release_notes/1.1.txt
46
47
  - doc/release_notes/1.3.txt
@@ -95,6 +96,7 @@ extra_rdoc_files:
95
96
  - doc/release_notes/3.33.0.txt
96
97
  - doc/release_notes/3.34.0.txt
97
98
  - doc/release_notes/3.35.0.txt
99
+ - doc/release_notes/3.36.0.txt
98
100
  files:
99
101
  - MIT-LICENSE
100
102
  - CHANGELOG
@@ -167,6 +169,7 @@ files:
167
169
  - doc/release_notes/3.33.0.txt
168
170
  - doc/release_notes/3.34.0.txt
169
171
  - doc/release_notes/3.35.0.txt
172
+ - doc/release_notes/3.36.0.txt
170
173
  - doc/sharding.rdoc
171
174
  - doc/sql.rdoc
172
175
  - doc/validations.rdoc
@@ -176,6 +179,7 @@ files:
176
179
  - doc/schema_modification.rdoc
177
180
  - doc/transactions.rdoc
178
181
  - doc/thread_safety.rdoc
182
+ - doc/object_model.rdoc
179
183
  - spec/adapters/firebird_spec.rb
180
184
  - spec/adapters/informix_spec.rb
181
185
  - spec/adapters/mssql_spec.rb
@@ -240,7 +244,7 @@ files:
240
244
  - spec/extensions/update_primary_key_spec.rb
241
245
  - spec/extensions/association_pks_spec.rb
242
246
  - spec/extensions/json_serializer_spec.rb
243
- - spec/extensions/core_extensions_spec.rb
247
+ - spec/extensions/eager_each_spec.rb
244
248
  - spec/extensions/list_spec.rb
245
249
  - spec/extensions/tree_spec.rb
246
250
  - spec/extensions/xml_serializer_spec.rb
@@ -269,6 +273,9 @@ files:
269
273
  - spec/extensions/static_cache_spec.rb
270
274
  - spec/extensions/query_literals_spec.rb
271
275
  - spec/extensions/dirty_spec.rb
276
+ - spec/extensions/pg_json_spec.rb
277
+ - spec/extensions/core_extensions_spec.rb
278
+ - spec/extensions/pg_inet_spec.rb
272
279
  - spec/extensions/columns_introspection_spec.rb
273
280
  - spec/integration/associations_test.rb
274
281
  - spec/integration/database_test.rb
@@ -370,6 +377,7 @@ files:
370
377
  - lib/sequel/adapters/jdbc/firebird.rb
371
378
  - lib/sequel/adapters/jdbc/hsqldb.rb
372
379
  - lib/sequel/adapters/jdbc/derby.rb
380
+ - lib/sequel/adapters/jdbc/progress.rb
373
381
  - lib/sequel/adapters/mysql.rb
374
382
  - lib/sequel/adapters/odbc.rb
375
383
  - lib/sequel/adapters/odbc/mssql.rb
@@ -442,6 +450,7 @@ files:
442
450
  - lib/sequel/extensions/pg_auto_parameterize.rb
443
451
  - lib/sequel/extensions/pg_statement_cache.rb
444
452
  - lib/sequel/extensions/pg_array.rb
453
+ - lib/sequel/extensions/pg_json.rb
445
454
  - lib/sequel/extensions/pg_array_ops.rb
446
455
  - lib/sequel/extensions/pg_hstore.rb
447
456
  - lib/sequel/extensions/pg_hstore_ops.rb
@@ -452,6 +461,7 @@ files:
452
461
  - lib/sequel/extensions/select_remove.rb
453
462
  - lib/sequel/extensions/core_extensions.rb
454
463
  - lib/sequel/extensions/query_literals.rb
464
+ - lib/sequel/extensions/pg_inet.rb
455
465
  - lib/sequel/metaprogramming.rb
456
466
  - lib/sequel/model.rb
457
467
  - lib/sequel/model/associations.rb
@@ -508,6 +518,7 @@ files:
508
518
  - lib/sequel/plugins/dataset_associations.rb
509
519
  - lib/sequel/plugins/many_to_one_pk_lookup.rb
510
520
  - lib/sequel/plugins/dirty.rb
521
+ - lib/sequel/plugins/eager_each.rb
511
522
  - lib/sequel/timezones.rb
512
523
  - lib/sequel/version.rb
513
524
  - lib/sequel/ast_transformer.rb