sequel 3.35.0 → 3.36.0

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