sequel 3.25.0 → 3.26.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 (53) hide show
  1. data/CHANGELOG +28 -0
  2. data/README.rdoc +3 -3
  3. data/Rakefile +17 -11
  4. data/doc/release_notes/3.26.0.txt +88 -0
  5. data/lib/sequel/adapters/ado.rb +10 -0
  6. data/lib/sequel/adapters/do.rb +12 -0
  7. data/lib/sequel/adapters/jdbc.rb +6 -6
  8. data/lib/sequel/adapters/mysql.rb +8 -2
  9. data/lib/sequel/adapters/mysql2.rb +5 -1
  10. data/lib/sequel/adapters/odbc.rb +10 -2
  11. data/lib/sequel/adapters/oracle.rb +5 -1
  12. data/lib/sequel/adapters/postgres.rb +10 -4
  13. data/lib/sequel/adapters/shared/access.rb +11 -0
  14. data/lib/sequel/adapters/shared/oracle.rb +0 -4
  15. data/lib/sequel/adapters/shared/postgres.rb +0 -12
  16. data/lib/sequel/adapters/tinytds.rb +9 -0
  17. data/lib/sequel/connection_pool.rb +1 -1
  18. data/lib/sequel/connection_pool/threaded.rb +3 -2
  19. data/lib/sequel/core.rb +1 -1
  20. data/lib/sequel/database/connecting.rb +3 -3
  21. data/lib/sequel/database/dataset.rb +1 -1
  22. data/lib/sequel/database/dataset_defaults.rb +1 -1
  23. data/lib/sequel/database/logging.rb +1 -1
  24. data/lib/sequel/database/misc.rb +23 -6
  25. data/lib/sequel/database/query.rb +16 -15
  26. data/lib/sequel/database/schema_methods.rb +21 -16
  27. data/lib/sequel/dataset/actions.rb +19 -16
  28. data/lib/sequel/dataset/features.rb +8 -2
  29. data/lib/sequel/dataset/graph.rb +1 -1
  30. data/lib/sequel/dataset/misc.rb +29 -9
  31. data/lib/sequel/dataset/mutation.rb +3 -3
  32. data/lib/sequel/dataset/prepared_statements.rb +11 -11
  33. data/lib/sequel/dataset/query.rb +28 -7
  34. data/lib/sequel/dataset/sql.rb +2 -2
  35. data/lib/sequel/extensions/migration.rb +1 -0
  36. data/lib/sequel/model.rb +5 -4
  37. data/lib/sequel/model/associations.rb +487 -328
  38. data/lib/sequel/model/base.rb +43 -26
  39. data/lib/sequel/model/exceptions.rb +2 -0
  40. data/lib/sequel/plugins/identity_map.rb +111 -4
  41. data/lib/sequel/plugins/sharding.rb +12 -20
  42. data/lib/sequel/plugins/xml_serializer.rb +2 -2
  43. data/lib/sequel/version.rb +1 -1
  44. data/spec/adapters/postgres_spec.rb +0 -6
  45. data/spec/core/connection_pool_spec.rb +6 -0
  46. data/spec/core/database_spec.rb +12 -0
  47. data/spec/core/schema_spec.rb +9 -2
  48. data/spec/extensions/identity_map_spec.rb +162 -0
  49. data/spec/extensions/many_through_many_spec.rb +3 -19
  50. data/spec/extensions/xml_serializer_spec.rb +4 -4
  51. data/spec/model/eager_loading_spec.rb +7 -21
  52. data/spec/model/record_spec.rb +23 -0
  53. metadata +36 -34
@@ -13,6 +13,11 @@ describe "Sequel::Plugins::IdentityMap" do
13
13
  execute(sql)
14
14
  yield h
15
15
  end
16
+ def self.waw_identity_map(&block) # with and without
17
+ with_identity_map(&block)
18
+ db.reset
19
+ yield
20
+ end
16
21
  end
17
22
  class ::IdentityMapAlbum < ::IdentityMapModel
18
23
  columns :artist_id
@@ -216,4 +221,161 @@ describe "Sequel::Plugins::IdentityMap" do
216
221
  MODEL_DB.sqls.length.should == 2
217
222
  end
218
223
  end
224
+
225
+ it "should not override custom :eager_loaders for many_to_many associations" do
226
+ @c1.columns :id
227
+ @c2.columns :id
228
+ c = @c2
229
+ @c1.many_to_many :artists, :class=>@c2, :left_key=>:album_id, :right_key=>:artist_id, :join_table=>:aa, :eager_loader=>(proc do |eo|
230
+ eo[:rows].each{|object| object.associations[:artists] = [c.load(:id=>object.id)]}
231
+ end)
232
+ ds = @c1.dataset
233
+ def ds.fetch_rows(sql)
234
+ execute(sql)
235
+ yield({:id=>1})
236
+ yield({:id=>2})
237
+ yield({:id=>3})
238
+ end
239
+
240
+ @c.waw_identity_map do
241
+ MODEL_DB.sqls.length.should == 0
242
+ a = @c1.eager(:artists).all
243
+ MODEL_DB.sqls.length.should == 1
244
+ a.should == [@c1.load(:id=>1), @c1.load(:id=>2), @c1.load(:id=>3)]
245
+ a.map{|x| x.artists}.should == [[@c2.load(:id=>1)], [@c2.load(:id=>2)], [@c2.load(:id=>3)]]
246
+ MODEL_DB.sqls.length.should == 1
247
+ end
248
+ end
249
+
250
+ it "should work correctly when eagerly loading many_to_many associations" do
251
+ @c1.columns :id
252
+ @c2.columns :id
253
+ @c1.many_to_many :artists, :class=>@c2, :left_key=>:album_id, :right_key=>:artist_id, :join_table=>:aa
254
+ ds = @c1.dataset
255
+ def ds.fetch_rows(sql)
256
+ execute(sql)
257
+ yield({:id=>1})
258
+ yield({:id=>2})
259
+ yield({:id=>3})
260
+ end
261
+ ds = @c2.dataset
262
+ def ds.fetch_rows(sql)
263
+ execute(sql)
264
+ yield({:id=>1, :x_foreign_key_x=>1})
265
+ yield({:id=>1, :x_foreign_key_x=>2})
266
+ yield({:id=>2, :x_foreign_key_x=>1})
267
+ yield({:id=>2, :x_foreign_key_x=>2})
268
+ yield({:id=>3, :x_foreign_key_x=>1})
269
+ yield({:id=>3, :x_foreign_key_x=>1})
270
+ end
271
+
272
+ @c.waw_identity_map do
273
+ MODEL_DB.sqls.length.should == 0
274
+ a = @c1.eager(:artists).all
275
+ MODEL_DB.sqls.length.should == 2
276
+ a.should == [@c1.load(:id=>1), @c1.load(:id=>2), @c1.load(:id=>3)]
277
+ a.map{|x| x.artists}.should == [[@c2.load(:id=>1), @c2.load(:id=>2), @c2.load(:id=>3), @c2.load(:id=>3)], [@c2.load(:id=>1), @c2.load(:id=>2)], []]
278
+ MODEL_DB.sqls.length.should == 2
279
+ end
280
+ end
281
+
282
+ it "should work correctly when eagerly loading many_to_many associations with composite keys" do
283
+ @c1.columns :id, :id2
284
+ @c2.columns :id
285
+ @c1.set_primary_key :id, :id2
286
+ @c1.many_to_many :artists, :class=>@c2, :left_key=>[:album_id1, :album_id2], :right_key=>:artist_id, :join_table=>:aa
287
+ ds = @c1.dataset
288
+ def ds.fetch_rows(sql)
289
+ execute(sql)
290
+ yield({:id=>1, :id2=>4})
291
+ yield({:id=>2, :id2=>5})
292
+ yield({:id=>3, :id2=>6})
293
+ end
294
+ ds = @c2.dataset
295
+ def ds.fetch_rows(sql)
296
+ execute(sql)
297
+ yield({:id=>1, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
298
+ yield({:id=>1, :x_foreign_key_0_x=>2, :x_foreign_key_1_x=>5})
299
+ yield({:id=>2, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
300
+ yield({:id=>2, :x_foreign_key_0_x=>2, :x_foreign_key_1_x=>5})
301
+ yield({:id=>3, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
302
+ yield({:id=>3, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
303
+ end
304
+
305
+ @c.waw_identity_map do
306
+ MODEL_DB.sqls.length.should == 0
307
+ a = @c1.eager(:artists).all
308
+ MODEL_DB.sqls.length.should == 2
309
+ a.should == [@c1.load(:id=>1, :id2=>4), @c1.load(:id=>2, :id2=>5), @c1.load(:id=>3, :id2=>6)]
310
+ a.map{|x| x.artists}.should == [[@c2.load(:id=>1), @c2.load(:id=>2), @c2.load(:id=>3), @c2.load(:id=>3)], [@c2.load(:id=>1), @c2.load(:id=>2)], []]
311
+ MODEL_DB.sqls.length.should == 2
312
+ end
313
+ end
314
+
315
+ it "should work correctly when eagerly loading many_through_many associations" do
316
+ @c1.columns :id
317
+ @c2.columns :id
318
+ @c1.plugin :many_through_many
319
+ @c1.many_through_many :artists, [[:aa, :album_id, :artist_id]], :class=>@c2
320
+ ds = @c1.dataset
321
+ def ds.fetch_rows(sql)
322
+ execute(sql)
323
+ yield({:id=>1})
324
+ yield({:id=>2})
325
+ yield({:id=>3})
326
+ end
327
+ ds = @c2.dataset
328
+ def ds.fetch_rows(sql)
329
+ execute(sql)
330
+ yield({:id=>1, :x_foreign_key_x=>1})
331
+ yield({:id=>1, :x_foreign_key_x=>2})
332
+ yield({:id=>2, :x_foreign_key_x=>1})
333
+ yield({:id=>2, :x_foreign_key_x=>2})
334
+ yield({:id=>3, :x_foreign_key_x=>1})
335
+ yield({:id=>3, :x_foreign_key_x=>1})
336
+ end
337
+
338
+ @c.waw_identity_map do
339
+ MODEL_DB.sqls.length.should == 0
340
+ a = @c1.eager(:artists).all
341
+ MODEL_DB.sqls.length.should == 2
342
+ a.should == [@c1.load(:id=>1), @c1.load(:id=>2), @c1.load(:id=>3)]
343
+ a.map{|x| x.artists}.should == [[@c2.load(:id=>1), @c2.load(:id=>2), @c2.load(:id=>3), @c2.load(:id=>3)], [@c2.load(:id=>1), @c2.load(:id=>2)], []]
344
+ MODEL_DB.sqls.length.should == 2
345
+ end
346
+ end
347
+
348
+ it "should work correctly when eagerly loading many_to_many associations with composite keys" do
349
+ @c1.columns :id, :id2
350
+ @c2.columns :id
351
+ @c1.set_primary_key :id, :id2
352
+ @c1.plugin :many_through_many
353
+ @c1.many_through_many :artists, [[:aa, [:album_id1, :album_id2], :artist_id]], :class=>@c2
354
+ ds = @c1.dataset
355
+ def ds.fetch_rows(sql)
356
+ execute(sql)
357
+ yield({:id=>1, :id2=>4})
358
+ yield({:id=>2, :id2=>5})
359
+ yield({:id=>3, :id2=>6})
360
+ end
361
+ ds = @c2.dataset
362
+ def ds.fetch_rows(sql)
363
+ execute(sql)
364
+ yield({:id=>1, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
365
+ yield({:id=>1, :x_foreign_key_0_x=>2, :x_foreign_key_1_x=>5})
366
+ yield({:id=>2, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
367
+ yield({:id=>2, :x_foreign_key_0_x=>2, :x_foreign_key_1_x=>5})
368
+ yield({:id=>3, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
369
+ yield({:id=>3, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
370
+ end
371
+
372
+ @c.waw_identity_map do
373
+ MODEL_DB.sqls.length.should == 0
374
+ a = @c1.eager(:artists).all
375
+ MODEL_DB.sqls.length.should == 2
376
+ a.should == [@c1.load(:id=>1, :id2=>4), @c1.load(:id=>2, :id2=>5), @c1.load(:id=>3, :id2=>6)]
377
+ a.map{|x| x.artists}.should == [[@c2.load(:id=>1), @c2.load(:id=>2), @c2.load(:id=>3), @c2.load(:id=>3)], [@c2.load(:id=>1), @c2.load(:id=>2)], []]
378
+ MODEL_DB.sqls.length.should == 2
379
+ end
380
+ end
219
381
  end
@@ -558,24 +558,8 @@ describe "Sequel::Plugins::ManyThroughMany eager loading methods" do
558
558
  end
559
559
 
560
560
  it "should cascade eagerly loading when the :eager_graph association option is used" do
561
- Tag.dataset.extend(Module.new {
562
- def columns
563
- [:id]
564
- end
565
- def fetch_rows(sql)
566
- @db << sql
567
- yield({:id=>2, :tracks_id=>4, :x_foreign_key_x=>1})
568
- end
569
- })
570
561
  @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager_graph=>:tracks
571
- a = @c1.eager(:tags).all
572
- a.should == [@c1.load(:id=>1)]
573
- MODEL_DB.sqls.should == ['SELECT * FROM artists',
574
- 'SELECT tags.id, tracks.id AS tracks_id, albums_artists.artist_id AS x_foreign_key_x FROM (SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON ((albums_artists.album_id = albums.id) AND (albums_artists.artist_id IN (1)))) AS tags LEFT OUTER JOIN albums_tags AS albums_tags_0 ON (albums_tags_0.tag_id = tags.id) LEFT OUTER JOIN albums ON (albums.id = albums_tags_0.album_id) LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id)']
575
- a = a.first
576
- a.tags.should == [Tag.load(:id=>2)]
577
- a.tags.first.tracks.should == [Track.load(:id=>4)]
578
- MODEL_DB.sqls.length.should == 2
562
+ proc{@c1.eager(:tags).all}.should raise_error(Sequel::Error)
579
563
  end
580
564
 
581
565
  it "should respect :eager_graph when lazily loading an association" do
@@ -782,8 +766,8 @@ describe "Sequel::Plugins::ManyThroughMany eager loading methods" do
782
766
  MODEL_DB.sqls.length.should == 1
783
767
  end
784
768
 
785
- it "eager graphing should give you a graph of tables when called without .all" do
786
- @c1.eager_graph(:tags, :artists).first.should == {:artists=>@c1.load(:id=>1), :artists_0=>@c1.load(:id=>10), :tags=>Tag.load(:id=>2)}
769
+ it "eager graphing should give you a plain hash when called without .all" do
770
+ @c1.eager_graph(:tags, :artists).first.should == {:albums_0_id=>3, :artists_0_id=>10, :id=>1, :tags_id=>2}
787
771
  end
788
772
 
789
773
  it "should be able to use eager and eager_graph together" do
@@ -118,13 +118,13 @@ describe "Sequel::Plugins::XmlSerializer" do
118
118
  end
119
119
 
120
120
  it "should support an :encoding option when serializing" do
121
- ["<?xml version=\"1.0\" encoding=\"utf-8\"?><artist><id>2</id><name>YJM</name></artist>",
122
- "<?xml version=\"1.0\" encoding=\"utf-8\"?><artist><name>YJM</name><id>2</id></artist>"].should include(@artist.to_xml(:encoding=>'utf-8').gsub(/\n */m, ''))
121
+ ["<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><id>2</id><name>YJM</name></artist>",
122
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><name>YJM</name><id>2</id></artist>"].should include(@artist.to_xml(:encoding=>'UTF-8').gsub(/\n */m, ''))
123
123
  end
124
124
 
125
125
  it "should support a :builder_opts option when serializing" do
126
- ["<?xml version=\"1.0\" encoding=\"utf-8\"?><artist><id>2</id><name>YJM</name></artist>",
127
- "<?xml version=\"1.0\" encoding=\"utf-8\"?><artist><name>YJM</name><id>2</id></artist>"].should include(@artist.to_xml(:builder_opts=>{:encoding=>'utf-8'}).gsub(/\n */m, ''))
126
+ ["<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><id>2</id><name>YJM</name></artist>",
127
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><name>YJM</name><id>2</id></artist>"].should include(@artist.to_xml(:builder_opts=>{:encoding=>'UTF-8'}).gsub(/\n */m, ''))
128
128
  end
129
129
 
130
130
  it "should support an :types option when serializing" do
@@ -106,6 +106,9 @@ describe Sequel::Model, "#eager" do
106
106
  end
107
107
  })
108
108
  end
109
+ after do
110
+ [:EagerAlbum, :EagerBand, :EagerTrack, :EagerGenre, :EagerBandMember].each{|x| Object.send(:remove_const, x)}
111
+ end
109
112
 
110
113
  it "should raise an error if called without a symbol or hash" do
111
114
  proc{EagerAlbum.eager(Object.new)}.should raise_error(Sequel::Error)
@@ -315,25 +318,8 @@ describe Sequel::Model, "#eager" do
315
318
  MODEL_DB.sqls.length.should == 2
316
319
  end
317
320
 
318
- it "should cascade eagerly loading when the :eager_graph association option is used with a many_to_many association" do
319
- EagerBandMember.dataset.extend(Module.new {
320
- def columns
321
- [:id]
322
- end
323
- def fetch_rows(sql)
324
- @db << sql
325
- yield({:id=>5, :bands_id=>2, :p_k=>6, :x_foreign_key_x=>2})
326
- yield({:id=>5, :bands_id=>3, :p_k=>6, :x_foreign_key_x=>2})
327
- end
328
- })
329
- a = EagerBand.eager(:graph_members).all
330
- a.should == [EagerBand.load(:id=>2)]
331
- MODEL_DB.sqls.should == ['SELECT * FROM bands',
332
- 'SELECT members.id, bands.id AS bands_id, bands.p_k, bm.band_id AS x_foreign_key_x FROM (SELECT members.* FROM members INNER JOIN bm ON ((bm.member_id = members.id) AND (bm.band_id IN (2)))) AS members LEFT OUTER JOIN bm AS bm_0 ON (bm_0.member_id = members.id) LEFT OUTER JOIN bands ON (bands.id = bm_0.band_id) ORDER BY bands.id']
333
- a = a.first
334
- a.graph_members.should == [EagerBandMember.load(:id=>5)]
335
- a.graph_members.first.bands.should == [EagerBand.load(:id=>2, :p_k=>6), EagerBand.load(:id=>3, :p_k=>6)]
336
- MODEL_DB.sqls.length.should == 2
321
+ it "should raise an Error when eager loading a many_to_many association with the :eager_graph option" do
322
+ proc{EagerBand.eager(:graph_members).all}.should raise_error(Sequel::Error)
337
323
  end
338
324
 
339
325
  it "should respect :eager_graph when lazily loading an association" do
@@ -1077,13 +1063,13 @@ describe Sequel::Model, "#eager_graph" do
1077
1063
  a.members.first.values.should == {:id => 5}
1078
1064
  end
1079
1065
 
1080
- it "should give you a graph of tables when called without .all" do
1066
+ it "should give you a plain hash when called without .all" do
1081
1067
  ds = GraphAlbum.eager_graph(:band)
1082
1068
  ds.sql.should == 'SELECT albums.id, albums.band_id, band.id AS band_id_0, band.vocalist_id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id)'
1083
1069
  def ds.fetch_rows(sql, &block)
1084
1070
  yield({:id=>1, :band_id=>2, :band_id_0=>2, :vocalist_id=>3})
1085
1071
  end
1086
- ds.first.should == {:albums=>GraphAlbum.load(:id => 1, :band_id => 2), :band=>GraphBand.load(:id => 2, :vocalist_id=>3)}
1072
+ ds.first.should == {:id=>1, :band_id=>2, :band_id_0=>2, :vocalist_id=>3}
1087
1073
  end
1088
1074
 
1089
1075
  it "should not drop any associated objects if the graph could not be a cartesian product" do
@@ -723,6 +723,29 @@ describe Sequel::Model, "#set" do
723
723
  MODEL_DB.sqls.should == []
724
724
  end
725
725
 
726
+ it "should raise error if strict_param_setting is true and method does not exist" do
727
+ @o1.strict_param_setting = true
728
+ proc{@o1.set('foo' => 1)}.should raise_error(Sequel::Error)
729
+ end
730
+
731
+ it "should raise error if strict_param_setting is true and column is a primary key" do
732
+ @o1.strict_param_setting = true
733
+ proc{@o1.set('id' => 1)}.should raise_error(Sequel::Error)
734
+ end
735
+
736
+ it "should raise error if strict_param_setting is true and column is restricted" do
737
+ @o1.strict_param_setting = true
738
+ @c.set_restricted_columns :x
739
+ proc{@o1.set('x' => 1)}.should raise_error(Sequel::Error)
740
+ end
741
+
742
+ it "should not create a symbol if strict_param_setting is true and string is given" do
743
+ @o1.strict_param_setting = true
744
+ l = Symbol.all_symbols.length
745
+ proc{@o1.set('sadojafdso' => 1)}.should raise_error(Sequel::Error)
746
+ Symbol.all_symbols.length.should == l
747
+ end
748
+
726
749
  it "#set should correctly handle cases where an instance method is added to the class" do
727
750
  @o1.set(:x => 1)
728
751
  @o1.values.should == {:x => 1}
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel
3
3
  version: !ruby/object:Gem::Version
4
- hash: 99
4
+ hash: 111
5
5
  prerelease: false
6
6
  segments:
7
7
  - 3
8
- - 25
8
+ - 26
9
9
  - 0
10
- version: 3.25.0
10
+ version: 3.26.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jeremy Evans
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-07-01 00:00:00 -07:00
18
+ date: 2011-08-01 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -29,22 +29,22 @@ extra_rdoc_files:
29
29
  - README.rdoc
30
30
  - CHANGELOG
31
31
  - MIT-LICENSE
32
+ - doc/active_record.rdoc
32
33
  - doc/advanced_associations.rdoc
34
+ - doc/association_basics.rdoc
33
35
  - doc/cheat_sheet.rdoc
36
+ - doc/dataset_basics.rdoc
34
37
  - doc/dataset_filtering.rdoc
38
+ - doc/migration.rdoc
39
+ - doc/model_hooks.rdoc
35
40
  - doc/opening_databases.rdoc
36
41
  - doc/prepared_statements.rdoc
42
+ - doc/querying.rdoc
37
43
  - doc/reflection.rdoc
38
44
  - doc/sharding.rdoc
39
45
  - doc/sql.rdoc
40
- - doc/virtual_rows.rdoc
41
- - doc/dataset_basics.rdoc
42
- - doc/association_basics.rdoc
43
- - doc/querying.rdoc
44
- - doc/migration.rdoc
45
46
  - doc/validations.rdoc
46
- - doc/model_hooks.rdoc
47
- - doc/active_record.rdoc
47
+ - doc/virtual_rows.rdoc
48
48
  - doc/release_notes/1.0.txt
49
49
  - doc/release_notes/1.1.txt
50
50
  - doc/release_notes/1.3.txt
@@ -65,14 +65,6 @@ extra_rdoc_files:
65
65
  - doc/release_notes/2.9.0.txt
66
66
  - doc/release_notes/3.0.0.txt
67
67
  - doc/release_notes/3.1.0.txt
68
- - doc/release_notes/3.2.0.txt
69
- - doc/release_notes/3.3.0.txt
70
- - doc/release_notes/3.4.0.txt
71
- - doc/release_notes/3.5.0.txt
72
- - doc/release_notes/3.6.0.txt
73
- - doc/release_notes/3.7.0.txt
74
- - doc/release_notes/3.8.0.txt
75
- - doc/release_notes/3.9.0.txt
76
68
  - doc/release_notes/3.10.0.txt
77
69
  - doc/release_notes/3.11.0.txt
78
70
  - doc/release_notes/3.12.0.txt
@@ -83,23 +75,38 @@ extra_rdoc_files:
83
75
  - doc/release_notes/3.17.0.txt
84
76
  - doc/release_notes/3.18.0.txt
85
77
  - doc/release_notes/3.19.0.txt
78
+ - doc/release_notes/3.2.0.txt
86
79
  - doc/release_notes/3.20.0.txt
87
80
  - doc/release_notes/3.21.0.txt
88
81
  - doc/release_notes/3.22.0.txt
89
82
  - doc/release_notes/3.23.0.txt
90
83
  - doc/release_notes/3.24.0.txt
91
84
  - doc/release_notes/3.25.0.txt
85
+ - doc/release_notes/3.3.0.txt
86
+ - doc/release_notes/3.4.0.txt
87
+ - doc/release_notes/3.5.0.txt
88
+ - doc/release_notes/3.6.0.txt
89
+ - doc/release_notes/3.7.0.txt
90
+ - doc/release_notes/3.8.0.txt
91
+ - doc/release_notes/3.9.0.txt
92
+ - doc/release_notes/3.26.0.txt
92
93
  files:
93
94
  - MIT-LICENSE
94
95
  - CHANGELOG
95
96
  - README.rdoc
96
97
  - Rakefile
97
98
  - bin/sequel
99
+ - doc/active_record.rdoc
98
100
  - doc/advanced_associations.rdoc
101
+ - doc/association_basics.rdoc
99
102
  - doc/cheat_sheet.rdoc
103
+ - doc/dataset_basics.rdoc
100
104
  - doc/dataset_filtering.rdoc
105
+ - doc/migration.rdoc
106
+ - doc/model_hooks.rdoc
101
107
  - doc/opening_databases.rdoc
102
108
  - doc/prepared_statements.rdoc
109
+ - doc/querying.rdoc
103
110
  - doc/reflection.rdoc
104
111
  - doc/release_notes/1.0.txt
105
112
  - doc/release_notes/1.1.txt
@@ -121,14 +128,6 @@ files:
121
128
  - doc/release_notes/2.9.0.txt
122
129
  - doc/release_notes/3.0.0.txt
123
130
  - doc/release_notes/3.1.0.txt
124
- - doc/release_notes/3.2.0.txt
125
- - doc/release_notes/3.3.0.txt
126
- - doc/release_notes/3.4.0.txt
127
- - doc/release_notes/3.5.0.txt
128
- - doc/release_notes/3.6.0.txt
129
- - doc/release_notes/3.7.0.txt
130
- - doc/release_notes/3.8.0.txt
131
- - doc/release_notes/3.9.0.txt
132
131
  - doc/release_notes/3.10.0.txt
133
132
  - doc/release_notes/3.11.0.txt
134
133
  - doc/release_notes/3.12.0.txt
@@ -139,22 +138,25 @@ files:
139
138
  - doc/release_notes/3.17.0.txt
140
139
  - doc/release_notes/3.18.0.txt
141
140
  - doc/release_notes/3.19.0.txt
141
+ - doc/release_notes/3.2.0.txt
142
142
  - doc/release_notes/3.20.0.txt
143
143
  - doc/release_notes/3.21.0.txt
144
144
  - doc/release_notes/3.22.0.txt
145
145
  - doc/release_notes/3.23.0.txt
146
146
  - doc/release_notes/3.24.0.txt
147
147
  - doc/release_notes/3.25.0.txt
148
+ - doc/release_notes/3.3.0.txt
149
+ - doc/release_notes/3.4.0.txt
150
+ - doc/release_notes/3.5.0.txt
151
+ - doc/release_notes/3.6.0.txt
152
+ - doc/release_notes/3.7.0.txt
153
+ - doc/release_notes/3.8.0.txt
154
+ - doc/release_notes/3.9.0.txt
155
+ - doc/release_notes/3.26.0.txt
148
156
  - doc/sharding.rdoc
149
157
  - doc/sql.rdoc
150
- - doc/virtual_rows.rdoc
151
- - doc/dataset_basics.rdoc
152
- - doc/association_basics.rdoc
153
- - doc/querying.rdoc
154
- - doc/migration.rdoc
155
158
  - doc/validations.rdoc
156
- - doc/model_hooks.rdoc
157
- - doc/active_record.rdoc
159
+ - doc/virtual_rows.rdoc
158
160
  - spec/adapters/firebird_spec.rb
159
161
  - spec/adapters/informix_spec.rb
160
162
  - spec/adapters/mssql_spec.rb