sequel 3.34.1 → 3.35.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 (101) hide show
  1. data/CHANGELOG +52 -0
  2. data/README.rdoc +3 -1
  3. data/Rakefile +2 -10
  4. data/doc/active_record.rdoc +1 -0
  5. data/doc/migration.rdoc +18 -7
  6. data/doc/model_hooks.rdoc +6 -0
  7. data/doc/opening_databases.rdoc +3 -0
  8. data/doc/prepared_statements.rdoc +0 -1
  9. data/doc/release_notes/3.35.0.txt +144 -0
  10. data/doc/schema_modification.rdoc +16 -1
  11. data/doc/thread_safety.rdoc +17 -0
  12. data/lib/sequel/adapters/do.rb +2 -2
  13. data/lib/sequel/adapters/do/postgres.rb +1 -52
  14. data/lib/sequel/adapters/do/sqlite.rb +0 -5
  15. data/lib/sequel/adapters/firebird.rb +1 -1
  16. data/lib/sequel/adapters/ibmdb.rb +2 -2
  17. data/lib/sequel/adapters/jdbc.rb +23 -19
  18. data/lib/sequel/adapters/jdbc/db2.rb +0 -5
  19. data/lib/sequel/adapters/jdbc/derby.rb +29 -2
  20. data/lib/sequel/adapters/jdbc/firebird.rb +0 -5
  21. data/lib/sequel/adapters/jdbc/h2.rb +1 -1
  22. data/lib/sequel/adapters/jdbc/hsqldb.rb +7 -0
  23. data/lib/sequel/adapters/jdbc/informix.rb +0 -5
  24. data/lib/sequel/adapters/jdbc/jtds.rb +0 -5
  25. data/lib/sequel/adapters/jdbc/mysql.rb +0 -5
  26. data/lib/sequel/adapters/jdbc/postgresql.rb +4 -35
  27. data/lib/sequel/adapters/jdbc/sqlite.rb +0 -5
  28. data/lib/sequel/adapters/jdbc/sqlserver.rb +0 -5
  29. data/lib/sequel/adapters/jdbc/transactions.rb +4 -4
  30. data/lib/sequel/adapters/mysql2.rb +1 -1
  31. data/lib/sequel/adapters/odbc.rb +3 -3
  32. data/lib/sequel/adapters/odbc/mssql.rb +14 -1
  33. data/lib/sequel/adapters/oracle.rb +6 -18
  34. data/lib/sequel/adapters/postgres.rb +36 -53
  35. data/lib/sequel/adapters/shared/db2.rb +16 -2
  36. data/lib/sequel/adapters/shared/mssql.rb +40 -9
  37. data/lib/sequel/adapters/shared/mysql.rb +16 -4
  38. data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +2 -2
  39. data/lib/sequel/adapters/shared/oracle.rb +2 -0
  40. data/lib/sequel/adapters/shared/postgres.rb +135 -211
  41. data/lib/sequel/adapters/sqlite.rb +2 -2
  42. data/lib/sequel/adapters/swift.rb +1 -1
  43. data/lib/sequel/adapters/swift/postgres.rb +1 -71
  44. data/lib/sequel/adapters/tinytds.rb +3 -3
  45. data/lib/sequel/core.rb +27 -4
  46. data/lib/sequel/database/connecting.rb +7 -8
  47. data/lib/sequel/database/logging.rb +6 -1
  48. data/lib/sequel/database/misc.rb +20 -4
  49. data/lib/sequel/database/query.rb +38 -18
  50. data/lib/sequel/database/schema_generator.rb +5 -2
  51. data/lib/sequel/database/schema_methods.rb +34 -8
  52. data/lib/sequel/dataset/prepared_statements.rb +1 -1
  53. data/lib/sequel/dataset/sql.rb +18 -24
  54. data/lib/sequel/extensions/core_extensions.rb +0 -23
  55. data/lib/sequel/extensions/migration.rb +22 -8
  56. data/lib/sequel/extensions/pg_auto_parameterize.rb +4 -0
  57. data/lib/sequel/extensions/schema_dumper.rb +1 -1
  58. data/lib/sequel/model.rb +2 -2
  59. data/lib/sequel/model/associations.rb +95 -70
  60. data/lib/sequel/model/base.rb +16 -18
  61. data/lib/sequel/plugins/dirty.rb +214 -0
  62. data/lib/sequel/plugins/identity_map.rb +1 -1
  63. data/lib/sequel/plugins/json_serializer.rb +16 -1
  64. data/lib/sequel/plugins/many_through_many.rb +22 -32
  65. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +2 -2
  66. data/lib/sequel/plugins/prepared_statements.rb +22 -8
  67. data/lib/sequel/plugins/prepared_statements_associations.rb +2 -3
  68. data/lib/sequel/plugins/prepared_statements_with_pk.rb +1 -1
  69. data/lib/sequel/plugins/single_table_inheritance.rb +1 -1
  70. data/lib/sequel/plugins/subclasses.rb +10 -2
  71. data/lib/sequel/plugins/timestamps.rb +1 -1
  72. data/lib/sequel/plugins/xml_serializer.rb +12 -1
  73. data/lib/sequel/sql.rb +1 -1
  74. data/lib/sequel/version.rb +2 -2
  75. data/spec/adapters/postgres_spec.rb +30 -79
  76. data/spec/core/database_spec.rb +46 -2
  77. data/spec/core/dataset_spec.rb +28 -22
  78. data/spec/core/schema_generator_spec.rb +1 -1
  79. data/spec/core/schema_spec.rb +51 -0
  80. data/spec/extensions/arbitrary_servers_spec.rb +0 -4
  81. data/spec/extensions/association_autoreloading_spec.rb +17 -0
  82. data/spec/extensions/association_proxies_spec.rb +4 -4
  83. data/spec/extensions/core_extensions_spec.rb +1 -24
  84. data/spec/extensions/dirty_spec.rb +155 -0
  85. data/spec/extensions/json_serializer_spec.rb +13 -0
  86. data/spec/extensions/migration_spec.rb +28 -15
  87. data/spec/extensions/named_timezones_spec.rb +6 -8
  88. data/spec/extensions/pg_auto_parameterize_spec.rb +6 -5
  89. data/spec/extensions/schema_dumper_spec.rb +3 -1
  90. data/spec/extensions/xml_serializer_spec.rb +13 -0
  91. data/spec/files/{transactionless_migrations → transaction_specified_migrations}/001_create_alt_basic.rb +1 -1
  92. data/spec/files/{transactionless_migrations → transaction_specified_migrations}/002_create_basic.rb +0 -0
  93. data/spec/files/{transaction_migrations → transaction_unspecified_migrations}/001_create_alt_basic.rb +0 -0
  94. data/spec/files/{transaction_migrations → transaction_unspecified_migrations}/002_create_basic.rb +0 -0
  95. data/spec/integration/associations_test.rb +5 -7
  96. data/spec/integration/dataset_test.rb +25 -7
  97. data/spec/integration/plugin_test.rb +1 -1
  98. data/spec/integration/schema_test.rb +16 -1
  99. data/spec/model/associations_spec.rb +2 -2
  100. metadata +14 -9
  101. data/lib/sequel/adapters/odbc/db2.rb +0 -17
@@ -3,8 +3,9 @@ require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
3
3
  describe "pg_auto_parameterize extension" do
4
4
  before do
5
5
  @db = Sequel.connect('mock://postgres', :quote_identifiers=>false)
6
- @db.extend Sequel::Postgres::AutoParameterize::DatabaseMethods
7
6
  @db.synchronize{|c| def c.escape_bytea(v) v*2 end}
7
+ @db.extend_datasets{def use_cursor(*) clone end}
8
+ @db.extend Sequel::Postgres::AutoParameterize::DatabaseMethods
8
9
  end
9
10
 
10
11
  it "should automatically parameterize queries strings, blobs, numerics, dates, and times" do
@@ -44,10 +45,6 @@ describe "pg_auto_parameterize extension" do
44
45
 
45
46
  @db[:table].insert(:a=>1).should == 1
46
47
  @db.sqls.should == ['INSERT INTO table (a) VALUES ($1::int4) RETURNING id -- args: [1]']
47
-
48
- @db.server_version = 80000
49
- @db[:table].insert(:a=>1).should == 1
50
- @db.sqls.should == ['INSERT INTO table (a) VALUES ($1::int4) -- args: [1]']
51
48
  end
52
49
 
53
50
  it "should not automatically paramiterize if no_auto_parameterize is used" do
@@ -61,4 +58,8 @@ describe "pg_auto_parameterize extension" do
61
58
  it "should show args with string when inspecting SQL " do
62
59
  @db[:table].filter(:a=>1).sql.inspect.should == '"SELECT * FROM table WHERE (a = $1::int4); [1]"'
63
60
  end
61
+
62
+ it "should not auto parameterize when using cursors" do
63
+ @db[:table].filter(:a=>1).use_cursor.opts[:no_auto_parameterize].should be_true
64
+ end
64
65
  end
@@ -508,7 +508,7 @@ END_MIG
508
508
  ["double precision", "timestamp with time zone", "timestamp without time zone",
509
509
  "time with time zone", "time without time zone", "character varying(20)"] +
510
510
  %w"nvarchar ntext smalldatetime smallmoney binary varbinary nchar" +
511
- ["timestamp(6) without time zone", "timestamp(6) with time zone", "int(12) unsigned", 'bigint unsigned', 'tinyint(3) unsigned']
511
+ ["timestamp(6) without time zone", "timestamp(6) with time zone", "int(12) unsigned", 'bigint unsigned', 'tinyint(3) unsigned', 'identity', 'int identity']
512
512
  @d.meta_def(:schema) do |t, *o|
513
513
  i = 0
514
514
  types.map{|x| [:"c#{i+=1}", {:db_type=>x, :allow_null=>true}]}
@@ -581,6 +581,8 @@ create_table(:x) do
581
581
  Integer :c64
582
582
  Bignum :c65
583
583
  Integer :c66
584
+ Integer :c67
585
+ Integer :c68
584
586
  end
585
587
  END_MIG
586
588
  end
@@ -157,6 +157,19 @@ describe "Sequel::Plugins::XmlSerializer" do
157
157
  Album.array_from_xml(Album.dataset.to_xml(:only=>:name)).should == [Album.load(:name=>@album.name)]
158
158
  end
159
159
 
160
+ it "should have to_xml dataset method respect an :array option" do
161
+ a = Album.load(:id=>1, :name=>'RF', :artist_id=>3)
162
+ Album.array_from_xml(Album.to_xml(:array=>[a])).should == [a]
163
+
164
+ a.associations[:artist] = artist = Artist.load(:id=>3, :name=>'YJM')
165
+ Album.array_from_xml(Album.to_xml(:array=>[a], :include=>:artist)).first.artist.should == artist
166
+
167
+ artist.associations[:albums] = [a]
168
+ x = Artist.array_from_xml(Artist.to_xml(:array=>[artist], :include=>:albums))
169
+ x.should == [artist]
170
+ x.first.albums.should == [a]
171
+ end
172
+
160
173
  it "should raise an error if the dataset does not have a row_proc" do
161
174
  proc{Album.dataset.naked.to_xml}.should raise_error(Sequel::Error)
162
175
  end
@@ -1,4 +1,4 @@
1
1
  Sequel.migration do
2
- no_transaction
2
+ transaction
3
3
  change{create_table(:sm11111){Integer :smc1}}
4
4
  end
@@ -608,7 +608,7 @@ describe "Sequel::Model Simple Associations" do
608
608
  @els = {:eager_limit_strategy=>:correlated_subquery}
609
609
  end
610
610
  it_should_behave_like "eager limit strategies"
611
- end unless Sequel.guarded?(:mysql, :db2, :oracle)
611
+ end unless Sequel.guarded?(:mysql, :db2, :oracle, :h2)
612
612
 
613
613
  specify "should handle many_to_one associations with same name as :key" do
614
614
  Album.def_column_alias(:artist_id_id, :artist_id)
@@ -693,12 +693,10 @@ describe "Sequel::Model Simple Associations" do
693
693
  @album.artist(proc{|ds| ds.exclude(:id=>@artist.id)}).should == nil
694
694
  @album.artist(proc{|ds| ds.filter(:id=>@artist.id)}).should == @artist
695
695
 
696
- if RUBY_VERSION >= '1.8.7'
697
- @artist.albums{|ds| ds.exclude(:id=>@album.id)}.should == []
698
- @artist.albums{|ds| ds.filter(:id=>@album.id)}.should == [@album]
699
- @album.artist{|ds| ds.exclude(:id=>@artist.id)}.should == nil
700
- @album.artist{|ds| ds.filter(:id=>@artist.id)}.should == @artist
701
- end
696
+ @artist.albums{|ds| ds.exclude(:id=>@album.id)}.should == []
697
+ @artist.albums{|ds| ds.filter(:id=>@album.id)}.should == [@album]
698
+ @album.artist{|ds| ds.exclude(:id=>@artist.id)}.should == nil
699
+ @album.artist{|ds| ds.filter(:id=>@artist.id)}.should == @artist
702
700
  end
703
701
 
704
702
  specify "should handle dynamic callbacks for eager loading via eager and eager_graph" do
@@ -291,15 +291,26 @@ end
291
291
 
292
292
  describe Sequel::Database do
293
293
  specify "should correctly escape strings" do
294
- INTEGRATION_DB.get("\\dingo".as(:a)) == "\\dingo"
295
- end
296
-
297
- specify "should correctly escape strings with quotes" do
298
- INTEGRATION_DB.get("\\'dingo".as(:a)) == "\\'dingo"
294
+ ["\\\n",
295
+ "\\\\\n",
296
+ "\\\r\n",
297
+ "\\\\\r\n",
298
+ "\\\\\n\n",
299
+ "\\\\\r\n\r\n",
300
+ "\\dingo",
301
+ "\\'dingo",
302
+ "\\\\''dingo",
303
+ ].each do |str|
304
+ INTEGRATION_DB.get(str.as(:a)).should == str
305
+ str = "1#{str}1"
306
+ INTEGRATION_DB.get(str.as(:a)).should == str
307
+ str = "#{str}#{str}"
308
+ INTEGRATION_DB.get(str.as(:a)).should == str
309
+ end
299
310
  end
300
311
 
301
- specify "should properly escape binary data" do
302
- INTEGRATION_DB.get("\1\2\3".to_sequel_blob.as(:a)) == "\1\2\3"
312
+ cspecify "should properly escape binary data", [:odbc], [:jdbc, :hsqldb], [:swift], :oracle do
313
+ INTEGRATION_DB.get("\1\2\3".to_sequel_blob.cast(File).as(:a)).should == "\1\2\3"
303
314
  end
304
315
 
305
316
  specify "should have a working table_exists?" do
@@ -1115,6 +1126,13 @@ describe "Sequel::Dataset DSL support" do
1115
1126
  @ds.get{a.sql_number ^ b ^ 1}.to_i.should == 7
1116
1127
  end
1117
1128
 
1129
+ specify "should work with the modulus operator" do
1130
+ @ds.insert(3, 5)
1131
+ @ds.get{a.sql_number % 4}.to_i.should == 3
1132
+ @ds.get{b.sql_number % 4}.to_i.should == 1
1133
+ @ds.get{a.sql_number % 4 % 2}.to_i.should == 1
1134
+ end
1135
+
1118
1136
  specify "should work with inequality operators" do
1119
1137
  @ds.insert(10, 11)
1120
1138
  @ds.insert(11, 11)
@@ -914,7 +914,7 @@ if INTEGRATION_DB.dataset.supports_cte? and !Sequel.guarded?(:db2)
914
914
  nodes[0].associations.fetch(:parent, 1).should == nil
915
915
  nodes[1].associations[:parent].should == @aa
916
916
  nodes[1].associations[:parent].associations[:parent].should == @a
917
- nodes[1].associations[:parent].associations[:parent].associations.fetch(:parent, 1) == nil
917
+ nodes[1].associations[:parent].associations[:parent].associations.fetch(:parent, 1).should == nil
918
918
  nodes[2].associations[:parent].should == @aaaa
919
919
  nodes[2].associations[:parent].associations[:parent].should == @aaa
920
920
  nodes[2].associations[:parent].associations[:parent].associations[:parent].should == @aa
@@ -239,7 +239,7 @@ describe "Database schema modifiers" do
239
239
  @ds = @db[:items]
240
240
  end
241
241
  after do
242
- @db.drop_table?(:items)
242
+ @db.drop_table?(:items, :items2)
243
243
  end
244
244
 
245
245
  specify "should create tables correctly" do
@@ -250,6 +250,21 @@ describe "Database schema modifiers" do
250
250
  @ds.columns!.should == [:number]
251
251
  end
252
252
 
253
+ specify "should create tables from select statements correctly" do
254
+ @db.create_table!(:items){Integer :number}
255
+ @ds.insert([10])
256
+ @db.create_table(:items2, :as=>@db[:items])
257
+ @db.schema(:items2, :reload=>true).map{|x| x.first}.should == [:number]
258
+ @db[:items2].columns.should == [:number]
259
+ @db[:items2].all.should == [{:number=>10}]
260
+ end
261
+
262
+ specify "should handle create table in a rolled back transaction" do
263
+ @db.drop_table?(:items)
264
+ @db.transaction(:rollback=>:always){@db.create_table(:items){Integer :number}}
265
+ @db.table_exists?(:items).should be_false
266
+ end if INTEGRATION_DB.supports_transactional_ddl?
267
+
253
268
  describe "join tables" do
254
269
  after do
255
270
  @db.drop_join_table(:cat_id=>:cats, :dog_id=>:dogs) if @db.table_exists?(:cats_dogs)
@@ -382,7 +382,7 @@ describe Sequel::Model, "many_to_one" do
382
382
  MODEL_DB.sqls.should == ["SELECT * FROM nodes WHERE ((nodes.id = 234) AND (name > 'M')) LIMIT 1"]
383
383
  end
384
384
 
385
- it "should use a block given to the association method as a callback on ruby 1.8.7+" do
385
+ it "should use a block given to the association method as a callback" do
386
386
  @c2.many_to_one :parent, :class => @c2
387
387
 
388
388
  d = @c2.create(:id => 1)
@@ -391,7 +391,7 @@ describe Sequel::Model, "many_to_one" do
391
391
  d.associations[:parent] = 42
392
392
  d.parent{|ds| ds.filter{name > 'M'}}.should_not == 42
393
393
  MODEL_DB.sqls.should == ["SELECT * FROM nodes WHERE ((nodes.id = 234) AND (name > 'M')) LIMIT 1"]
394
- end if RUBY_VERSION >= '1.8.7'
394
+ end
395
395
 
396
396
  it "should have the setter add to the reciprocal one_to_many cached association list if it exists" do
397
397
  @c2.many_to_one :parent, :class => @c2
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.34.1
4
+ version: 3.35.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-04-02 00:00:00.000000000 Z
12
+ date: 2012-05-01 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: The Database Toolkit for Ruby
15
15
  email: code@jeremyevans.net
@@ -40,6 +40,7 @@ extra_rdoc_files:
40
40
  - doc/testing.rdoc
41
41
  - doc/schema_modification.rdoc
42
42
  - doc/transactions.rdoc
43
+ - doc/thread_safety.rdoc
43
44
  - doc/release_notes/1.0.txt
44
45
  - doc/release_notes/1.1.txt
45
46
  - doc/release_notes/1.3.txt
@@ -93,6 +94,7 @@ extra_rdoc_files:
93
94
  - doc/release_notes/3.32.0.txt
94
95
  - doc/release_notes/3.33.0.txt
95
96
  - doc/release_notes/3.34.0.txt
97
+ - doc/release_notes/3.35.0.txt
96
98
  files:
97
99
  - MIT-LICENSE
98
100
  - CHANGELOG
@@ -164,6 +166,7 @@ files:
164
166
  - doc/release_notes/3.32.0.txt
165
167
  - doc/release_notes/3.33.0.txt
166
168
  - doc/release_notes/3.34.0.txt
169
+ - doc/release_notes/3.35.0.txt
167
170
  - doc/sharding.rdoc
168
171
  - doc/sql.rdoc
169
172
  - doc/validations.rdoc
@@ -172,6 +175,7 @@ files:
172
175
  - doc/testing.rdoc
173
176
  - doc/schema_modification.rdoc
174
177
  - doc/transactions.rdoc
178
+ - doc/thread_safety.rdoc
175
179
  - spec/adapters/firebird_spec.rb
176
180
  - spec/adapters/informix_spec.rb
177
181
  - spec/adapters/mssql_spec.rb
@@ -185,9 +189,9 @@ files:
185
189
  - spec/core/dataset_spec.rb
186
190
  - spec/core/database_spec.rb
187
191
  - spec/core/expression_filters_spec.rb
192
+ - spec/core/schema_spec.rb
188
193
  - spec/core/object_graph_spec.rb
189
194
  - spec/core/schema_generator_spec.rb
190
- - spec/core/schema_spec.rb
191
195
  - spec/core/spec_helper.rb
192
196
  - spec/core/version_spec.rb
193
197
  - spec/core/mock_adapter_spec.rb
@@ -264,6 +268,7 @@ files:
264
268
  - spec/extensions/select_remove_spec.rb
265
269
  - spec/extensions/static_cache_spec.rb
266
270
  - spec/extensions/query_literals_spec.rb
271
+ - spec/extensions/dirty_spec.rb
267
272
  - spec/extensions/columns_introspection_spec.rb
268
273
  - spec/integration/associations_test.rb
269
274
  - spec/integration/database_test.rb
@@ -333,10 +338,10 @@ files:
333
338
  - spec/files/reversible_migrations/003_reversible.rb
334
339
  - spec/files/reversible_migrations/004_reversible.rb
335
340
  - spec/files/reversible_migrations/005_reversible.rb
336
- - spec/files/transaction_migrations/001_create_alt_basic.rb
337
- - spec/files/transaction_migrations/002_create_basic.rb
338
- - spec/files/transactionless_migrations/001_create_alt_basic.rb
339
- - spec/files/transactionless_migrations/002_create_basic.rb
341
+ - spec/files/transaction_specified_migrations/001_create_alt_basic.rb
342
+ - spec/files/transaction_specified_migrations/002_create_basic.rb
343
+ - spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb
344
+ - spec/files/transaction_unspecified_migrations/002_create_basic.rb
340
345
  - lib/sequel.rb
341
346
  - lib/sequel/adapters/ado.rb
342
347
  - lib/sequel/adapters/ado/mssql.rb
@@ -368,7 +373,6 @@ files:
368
373
  - lib/sequel/adapters/mysql.rb
369
374
  - lib/sequel/adapters/odbc.rb
370
375
  - lib/sequel/adapters/odbc/mssql.rb
371
- - lib/sequel/adapters/odbc/db2.rb
372
376
  - lib/sequel/adapters/openbase.rb
373
377
  - lib/sequel/adapters/oracle.rb
374
378
  - lib/sequel/adapters/postgres.rb
@@ -503,6 +507,7 @@ files:
503
507
  - lib/sequel/plugins/prepared_statements_associations.rb
504
508
  - lib/sequel/plugins/dataset_associations.rb
505
509
  - lib/sequel/plugins/many_to_one_pk_lookup.rb
510
+ - lib/sequel/plugins/dirty.rb
506
511
  - lib/sequel/timezones.rb
507
512
  - lib/sequel/version.rb
508
513
  - lib/sequel/ast_transformer.rb
@@ -527,7 +532,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
527
532
  requirements:
528
533
  - - ! '>='
529
534
  - !ruby/object:Gem::Version
530
- version: 1.8.4
535
+ version: 1.8.7
531
536
  required_rubygems_version: !ruby/object:Gem::Requirement
532
537
  none: false
533
538
  requirements:
@@ -1,17 +0,0 @@
1
- Sequel.require 'adapters/shared/db2'
2
-
3
- module Sequel
4
- module ODBC
5
- # Database and Dataset instance methods for DB2 specific
6
- # support via ODBC.
7
- module DB2
8
- module DatabaseMethods
9
- include ::Sequel::DB2::DatabaseMethods
10
- end
11
-
12
- class Dataset < ODBC::Dataset
13
- include ::Sequel::DB2::DatasetMethods
14
- end
15
- end
16
- end
17
- end