sequel 3.28.0 → 3.29.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 (148) hide show
  1. data/CHANGELOG +119 -3
  2. data/Rakefile +5 -3
  3. data/bin/sequel +1 -5
  4. data/doc/model_hooks.rdoc +9 -1
  5. data/doc/opening_databases.rdoc +49 -40
  6. data/doc/prepared_statements.rdoc +27 -6
  7. data/doc/release_notes/3.28.0.txt +2 -2
  8. data/doc/release_notes/3.29.0.txt +459 -0
  9. data/doc/sharding.rdoc +7 -1
  10. data/doc/testing.rdoc +18 -9
  11. data/doc/transactions.rdoc +41 -1
  12. data/lib/sequel/adapters/ado.rb +28 -17
  13. data/lib/sequel/adapters/ado/mssql.rb +18 -6
  14. data/lib/sequel/adapters/amalgalite.rb +11 -7
  15. data/lib/sequel/adapters/db2.rb +122 -70
  16. data/lib/sequel/adapters/dbi.rb +15 -15
  17. data/lib/sequel/adapters/do.rb +5 -36
  18. data/lib/sequel/adapters/do/mysql.rb +0 -5
  19. data/lib/sequel/adapters/do/postgres.rb +0 -5
  20. data/lib/sequel/adapters/do/sqlite.rb +0 -5
  21. data/lib/sequel/adapters/firebird.rb +3 -6
  22. data/lib/sequel/adapters/ibmdb.rb +24 -16
  23. data/lib/sequel/adapters/informix.rb +2 -4
  24. data/lib/sequel/adapters/jdbc.rb +47 -11
  25. data/lib/sequel/adapters/jdbc/as400.rb +5 -24
  26. data/lib/sequel/adapters/jdbc/db2.rb +0 -5
  27. data/lib/sequel/adapters/jdbc/derby.rb +217 -0
  28. data/lib/sequel/adapters/jdbc/firebird.rb +0 -5
  29. data/lib/sequel/adapters/jdbc/h2.rb +10 -12
  30. data/lib/sequel/adapters/jdbc/hsqldb.rb +166 -0
  31. data/lib/sequel/adapters/jdbc/informix.rb +0 -5
  32. data/lib/sequel/adapters/jdbc/jtds.rb +0 -5
  33. data/lib/sequel/adapters/jdbc/mysql.rb +0 -10
  34. data/lib/sequel/adapters/jdbc/oracle.rb +70 -3
  35. data/lib/sequel/adapters/jdbc/postgresql.rb +0 -11
  36. data/lib/sequel/adapters/jdbc/sqlite.rb +0 -5
  37. data/lib/sequel/adapters/jdbc/sqlserver.rb +0 -5
  38. data/lib/sequel/adapters/jdbc/transactions.rb +56 -7
  39. data/lib/sequel/adapters/mock.rb +315 -0
  40. data/lib/sequel/adapters/mysql.rb +64 -51
  41. data/lib/sequel/adapters/mysql2.rb +15 -9
  42. data/lib/sequel/adapters/odbc.rb +13 -6
  43. data/lib/sequel/adapters/odbc/db2.rb +0 -4
  44. data/lib/sequel/adapters/odbc/mssql.rb +0 -5
  45. data/lib/sequel/adapters/openbase.rb +2 -4
  46. data/lib/sequel/adapters/oracle.rb +333 -51
  47. data/lib/sequel/adapters/postgres.rb +80 -27
  48. data/lib/sequel/adapters/shared/access.rb +0 -6
  49. data/lib/sequel/adapters/shared/db2.rb +13 -15
  50. data/lib/sequel/adapters/shared/firebird.rb +6 -6
  51. data/lib/sequel/adapters/shared/mssql.rb +23 -18
  52. data/lib/sequel/adapters/shared/mysql.rb +6 -6
  53. data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +6 -0
  54. data/lib/sequel/adapters/shared/oracle.rb +185 -30
  55. data/lib/sequel/adapters/shared/postgres.rb +35 -18
  56. data/lib/sequel/adapters/shared/progress.rb +0 -6
  57. data/lib/sequel/adapters/shared/sqlite.rb +116 -37
  58. data/lib/sequel/adapters/sqlite.rb +16 -8
  59. data/lib/sequel/adapters/swift.rb +5 -5
  60. data/lib/sequel/adapters/swift/mysql.rb +0 -5
  61. data/lib/sequel/adapters/swift/postgres.rb +0 -5
  62. data/lib/sequel/adapters/swift/sqlite.rb +6 -4
  63. data/lib/sequel/adapters/tinytds.rb +13 -10
  64. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +8 -0
  65. data/lib/sequel/core.rb +40 -0
  66. data/lib/sequel/database/connecting.rb +1 -2
  67. data/lib/sequel/database/dataset.rb +3 -3
  68. data/lib/sequel/database/dataset_defaults.rb +58 -0
  69. data/lib/sequel/database/misc.rb +62 -2
  70. data/lib/sequel/database/query.rb +113 -49
  71. data/lib/sequel/database/schema_methods.rb +7 -2
  72. data/lib/sequel/dataset/actions.rb +37 -19
  73. data/lib/sequel/dataset/features.rb +24 -0
  74. data/lib/sequel/dataset/graph.rb +7 -6
  75. data/lib/sequel/dataset/misc.rb +11 -3
  76. data/lib/sequel/dataset/mutation.rb +2 -3
  77. data/lib/sequel/dataset/prepared_statements.rb +6 -4
  78. data/lib/sequel/dataset/query.rb +46 -15
  79. data/lib/sequel/dataset/sql.rb +28 -4
  80. data/lib/sequel/extensions/named_timezones.rb +5 -0
  81. data/lib/sequel/extensions/thread_local_timezones.rb +1 -1
  82. data/lib/sequel/model.rb +2 -1
  83. data/lib/sequel/model/associations.rb +115 -33
  84. data/lib/sequel/model/base.rb +91 -31
  85. data/lib/sequel/plugins/class_table_inheritance.rb +4 -4
  86. data/lib/sequel/plugins/dataset_associations.rb +100 -0
  87. data/lib/sequel/plugins/force_encoding.rb +6 -6
  88. data/lib/sequel/plugins/identity_map.rb +1 -1
  89. data/lib/sequel/plugins/many_through_many.rb +6 -10
  90. data/lib/sequel/plugins/prepared_statements.rb +12 -1
  91. data/lib/sequel/plugins/prepared_statements_associations.rb +1 -1
  92. data/lib/sequel/plugins/rcte_tree.rb +29 -15
  93. data/lib/sequel/plugins/serialization.rb +6 -1
  94. data/lib/sequel/plugins/sharding.rb +0 -5
  95. data/lib/sequel/plugins/single_table_inheritance.rb +1 -1
  96. data/lib/sequel/plugins/typecast_on_load.rb +9 -12
  97. data/lib/sequel/plugins/update_primary_key.rb +1 -1
  98. data/lib/sequel/timezones.rb +42 -42
  99. data/lib/sequel/version.rb +1 -1
  100. data/spec/adapters/mssql_spec.rb +29 -29
  101. data/spec/adapters/mysql_spec.rb +86 -104
  102. data/spec/adapters/oracle_spec.rb +48 -76
  103. data/spec/adapters/postgres_spec.rb +98 -33
  104. data/spec/adapters/spec_helper.rb +0 -5
  105. data/spec/adapters/sqlite_spec.rb +24 -21
  106. data/spec/core/connection_pool_spec.rb +9 -15
  107. data/spec/core/core_sql_spec.rb +20 -31
  108. data/spec/core/database_spec.rb +491 -227
  109. data/spec/core/dataset_spec.rb +638 -1051
  110. data/spec/core/expression_filters_spec.rb +0 -1
  111. data/spec/core/mock_adapter_spec.rb +378 -0
  112. data/spec/core/object_graph_spec.rb +48 -114
  113. data/spec/core/schema_generator_spec.rb +3 -3
  114. data/spec/core/schema_spec.rb +51 -114
  115. data/spec/core/spec_helper.rb +3 -90
  116. data/spec/extensions/class_table_inheritance_spec.rb +1 -1
  117. data/spec/extensions/dataset_associations_spec.rb +199 -0
  118. data/spec/extensions/instance_hooks_spec.rb +71 -0
  119. data/spec/extensions/named_timezones_spec.rb +22 -2
  120. data/spec/extensions/nested_attributes_spec.rb +3 -0
  121. data/spec/extensions/schema_spec.rb +1 -1
  122. data/spec/extensions/serialization_modification_detection_spec.rb +1 -0
  123. data/spec/extensions/serialization_spec.rb +5 -8
  124. data/spec/extensions/spec_helper.rb +4 -0
  125. data/spec/extensions/thread_local_timezones_spec.rb +22 -2
  126. data/spec/extensions/typecast_on_load_spec.rb +1 -6
  127. data/spec/integration/associations_test.rb +123 -12
  128. data/spec/integration/dataset_test.rb +140 -47
  129. data/spec/integration/eager_loader_test.rb +19 -21
  130. data/spec/integration/model_test.rb +80 -1
  131. data/spec/integration/plugin_test.rb +179 -128
  132. data/spec/integration/prepared_statement_test.rb +92 -91
  133. data/spec/integration/schema_test.rb +42 -23
  134. data/spec/integration/spec_helper.rb +25 -31
  135. data/spec/integration/timezone_test.rb +38 -12
  136. data/spec/integration/transaction_test.rb +161 -34
  137. data/spec/integration/type_test.rb +3 -3
  138. data/spec/model/association_reflection_spec.rb +83 -7
  139. data/spec/model/associations_spec.rb +393 -676
  140. data/spec/model/base_spec.rb +186 -116
  141. data/spec/model/dataset_methods_spec.rb +7 -27
  142. data/spec/model/eager_loading_spec.rb +343 -867
  143. data/spec/model/hooks_spec.rb +160 -79
  144. data/spec/model/model_spec.rb +118 -165
  145. data/spec/model/plugins_spec.rb +7 -13
  146. data/spec/model/record_spec.rb +138 -207
  147. data/spec/model/spec_helper.rb +10 -73
  148. metadata +14 -8
@@ -13,79 +13,15 @@ if ENV['SEQUEL_COLUMNS_INTROSPECTION']
13
13
  Sequel::Dataset.introspect_all_columns
14
14
  end
15
15
 
16
- class MockDataset < Sequel::Dataset
17
- def insert(*args)
18
- @db.execute insert_sql(*args)
19
- end
20
-
21
- def update(*args)
22
- @db.execute update_sql(*args)
23
- 1
24
- end
25
-
26
- def delete(*args)
27
- @db.execute delete_sql(*args)
28
- 1
29
- end
30
-
31
- def fetch_rows(sql)
32
- return if sql =~ /information_schema/
33
- @db.execute(sql)
34
- yield({:id => 1, :x => 1})
35
- end
36
-
37
- def quoted_identifier(c)
38
- "\"#{c}\""
39
- end
40
- end
41
-
42
- class MockDatabase < Sequel::Database
43
- @@quote_identifiers = false
44
- self.identifier_input_method = nil
45
- self.identifier_output_method = nil
46
- attr_reader :sqls
47
-
48
- def execute(sql, opts={})
49
- @sqls ||= []
50
- @sqls << sql
51
- end
52
-
53
- def reset
54
- @sqls = []
55
- end
56
-
57
- def schema(table_name, opts)
58
- if table_name
59
- [[:id, {:primary_key=>true}]]
60
- else
61
- {table_name=>[[:id, {:primary_key=>true}]]}
62
- end
63
- end
64
-
65
- def transaction(opts={})
66
- return yield if @transactions.include?(Thread.current)
67
- execute('BEGIN')
68
- begin
69
- @transactions << Thread.current
70
- yield
71
- rescue Exception => e
72
- execute('ROLLBACK')
73
- transaction_error(e)
74
- ensure
75
- unless e
76
- execute('COMMIT')
77
- end
78
- @transactions.delete(Thread.current)
79
- end
80
- end
81
-
82
- def dataset(opts=nil); MockDataset.new(self, opts); end
83
- end
16
+ Sequel.quote_identifiers = false
17
+ Sequel.identifier_input_method = nil
18
+ Sequel.identifier_output_method = nil
84
19
 
85
20
  class << Sequel::Model
21
+ attr_writer :db_schema
86
22
  alias orig_columns columns
87
23
  def columns(*cols)
88
- return if cols.empty?
24
+ return super if cols.empty?
89
25
  define_method(:columns){cols}
90
26
  @dataset.instance_variable_set(:@columns, cols) if @dataset
91
27
  def_column_accessor(*cols)
@@ -93,10 +29,11 @@ class << Sequel::Model
93
29
  @db_schema = {}
94
30
  cols.each{|c| @db_schema[c] = {}}
95
31
  end
96
- def simple_table
97
- nil
98
- end
99
32
  end
100
33
 
101
34
  Sequel::Model.use_transactions = false
102
- Sequel::Model.db = MODEL_DB = MockDatabase.new
35
+
36
+ db = Sequel.mock(:fetch=>{:id => 1, :x => 1}, :numrows=>1, :autoid=>proc{|sql| 10})
37
+ def db.schema(*) [[:id, {:primary_key=>true}]] end
38
+ def db.reset() sqls end
39
+ Sequel::Model.db = MODEL_DB = db
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: 119
5
- prerelease: false
4
+ hash: 115
5
+ prerelease:
6
6
  segments:
7
7
  - 3
8
- - 28
8
+ - 29
9
9
  - 0
10
- version: 3.28.0
10
+ version: 3.29.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jeremy Evans
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-10-03 00:00:00 -07:00
19
- default_executable:
18
+ date: 2011-11-01 00:00:00 Z
20
19
  dependencies: []
21
20
 
22
21
  description: The Database Toolkit for Ruby
@@ -96,6 +95,7 @@ extra_rdoc_files:
96
95
  - doc/release_notes/3.26.0.txt
97
96
  - doc/release_notes/3.27.0.txt
98
97
  - doc/release_notes/3.28.0.txt
98
+ - doc/release_notes/3.29.0.txt
99
99
  files:
100
100
  - MIT-LICENSE
101
101
  - CHANGELOG
@@ -161,6 +161,7 @@ files:
161
161
  - doc/release_notes/3.26.0.txt
162
162
  - doc/release_notes/3.27.0.txt
163
163
  - doc/release_notes/3.28.0.txt
164
+ - doc/release_notes/3.29.0.txt
164
165
  - doc/sharding.rdoc
165
166
  - doc/sql.rdoc
166
167
  - doc/validations.rdoc
@@ -188,6 +189,7 @@ files:
188
189
  - spec/core/schema_spec.rb
189
190
  - spec/core/spec_helper.rb
190
191
  - spec/core/version_spec.rb
192
+ - spec/core/mock_adapter_spec.rb
191
193
  - spec/extensions/active_model_spec.rb
192
194
  - spec/extensions/association_dependencies_spec.rb
193
195
  - spec/extensions/association_proxies_spec.rb
@@ -245,6 +247,7 @@ files:
245
247
  - spec/extensions/prepared_statements_safe_spec.rb
246
248
  - spec/extensions/prepared_statements_with_pk_spec.rb
247
249
  - spec/extensions/prepared_statements_associations_spec.rb
250
+ - spec/extensions/dataset_associations_spec.rb
248
251
  - spec/extensions/columns_introspection_spec.rb
249
252
  - spec/integration/associations_test.rb
250
253
  - spec/integration/database_test.rb
@@ -340,6 +343,8 @@ files:
340
343
  - lib/sequel/adapters/jdbc/db2.rb
341
344
  - lib/sequel/adapters/jdbc/transactions.rb
342
345
  - lib/sequel/adapters/jdbc/firebird.rb
346
+ - lib/sequel/adapters/jdbc/hsqldb.rb
347
+ - lib/sequel/adapters/jdbc/derby.rb
343
348
  - lib/sequel/adapters/mysql.rb
344
349
  - lib/sequel/adapters/odbc.rb
345
350
  - lib/sequel/adapters/odbc/mssql.rb
@@ -368,6 +373,7 @@ files:
368
373
  - lib/sequel/adapters/swift/sqlite.rb
369
374
  - lib/sequel/adapters/tinytds.rb
370
375
  - lib/sequel/adapters/ibmdb.rb
376
+ - lib/sequel/adapters/mock.rb
371
377
  - lib/sequel/connection_pool.rb
372
378
  - lib/sequel/connection_pool/sharded_single.rb
373
379
  - lib/sequel/connection_pool/sharded_threaded.rb
@@ -460,13 +466,13 @@ files:
460
466
  - lib/sequel/plugins/prepared_statements_safe.rb
461
467
  - lib/sequel/plugins/prepared_statements_with_pk.rb
462
468
  - lib/sequel/plugins/prepared_statements_associations.rb
469
+ - lib/sequel/plugins/dataset_associations.rb
463
470
  - lib/sequel/sql.rb
464
471
  - lib/sequel/timezones.rb
465
472
  - lib/sequel/version.rb
466
473
  - lib/sequel/ast_transformer.rb
467
474
  - lib/sequel_core.rb
468
475
  - lib/sequel_model.rb
469
- has_rdoc: true
470
476
  homepage: http://sequel.rubyforge.org
471
477
  licenses: []
472
478
 
@@ -504,7 +510,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
504
510
  requirements: []
505
511
 
506
512
  rubyforge_project: sequel
507
- rubygems_version: 1.3.7
513
+ rubygems_version: 1.8.10
508
514
  signing_key:
509
515
  specification_version: 3
510
516
  summary: The Database Toolkit for Ruby