sequel 5.6.0 → 5.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +30 -5099
  3. data/Rakefile +1 -1
  4. data/doc/opening_databases.rdoc +0 -2
  5. data/doc/postgresql.rdoc +31 -0
  6. data/doc/querying.rdoc +2 -2
  7. data/doc/release_notes/5.7.0.txt +108 -0
  8. data/doc/testing.rdoc +1 -0
  9. data/lib/sequel/adapters/jdbc/derby.rb +1 -1
  10. data/lib/sequel/adapters/jdbc/oracle.rb +11 -0
  11. data/lib/sequel/adapters/postgres.rb +1 -0
  12. data/lib/sequel/adapters/shared/postgres.rb +117 -13
  13. data/lib/sequel/connection_pool/sharded_threaded.rb +7 -6
  14. data/lib/sequel/connection_pool/threaded.rb +6 -6
  15. data/lib/sequel/core.rb +20 -0
  16. data/lib/sequel/database/logging.rb +3 -2
  17. data/lib/sequel/database/schema_generator.rb +1 -2
  18. data/lib/sequel/dataset/actions.rb +15 -5
  19. data/lib/sequel/extensions/connection_expiration.rb +3 -3
  20. data/lib/sequel/extensions/connection_validator.rb +3 -3
  21. data/lib/sequel/extensions/integer64.rb +30 -0
  22. data/lib/sequel/extensions/migration.rb +2 -3
  23. data/lib/sequel/plugins/pg_array_associations.rb +5 -3
  24. data/lib/sequel/plugins/validate_associated.rb +18 -0
  25. data/lib/sequel/version.rb +1 -1
  26. data/spec/adapters/mssql_spec.rb +6 -6
  27. data/spec/adapters/mysql_spec.rb +1 -1
  28. data/spec/adapters/oracle_spec.rb +15 -1
  29. data/spec/adapters/postgres_spec.rb +78 -1
  30. data/spec/adapters/spec_helper.rb +3 -1
  31. data/spec/bin_spec.rb +1 -0
  32. data/spec/core/dataset_spec.rb +10 -0
  33. data/spec/extensions/integer64_spec.rb +22 -0
  34. data/spec/extensions/pg_array_associations_spec.rb +14 -2
  35. data/spec/extensions/spec_helper.rb +1 -0
  36. data/spec/integration/associations_test.rb +4 -4
  37. data/spec/integration/dataset_test.rb +2 -0
  38. data/spec/integration/spec_helper.rb +5 -11
  39. data/spec/model/spec_helper.rb +1 -0
  40. metadata +35 -165
  41. data/doc/release_notes/1.0.txt +0 -38
  42. data/doc/release_notes/1.1.txt +0 -143
  43. data/doc/release_notes/1.3.txt +0 -101
  44. data/doc/release_notes/1.4.0.txt +0 -53
  45. data/doc/release_notes/1.5.0.txt +0 -155
  46. data/doc/release_notes/2.0.0.txt +0 -298
  47. data/doc/release_notes/2.1.0.txt +0 -271
  48. data/doc/release_notes/2.10.0.txt +0 -328
  49. data/doc/release_notes/2.11.0.txt +0 -215
  50. data/doc/release_notes/2.12.0.txt +0 -534
  51. data/doc/release_notes/2.2.0.txt +0 -253
  52. data/doc/release_notes/2.3.0.txt +0 -88
  53. data/doc/release_notes/2.4.0.txt +0 -106
  54. data/doc/release_notes/2.5.0.txt +0 -137
  55. data/doc/release_notes/2.6.0.txt +0 -157
  56. data/doc/release_notes/2.7.0.txt +0 -166
  57. data/doc/release_notes/2.8.0.txt +0 -171
  58. data/doc/release_notes/2.9.0.txt +0 -97
  59. data/doc/release_notes/3.0.0.txt +0 -221
  60. data/doc/release_notes/3.1.0.txt +0 -406
  61. data/doc/release_notes/3.10.0.txt +0 -286
  62. data/doc/release_notes/3.11.0.txt +0 -254
  63. data/doc/release_notes/3.12.0.txt +0 -304
  64. data/doc/release_notes/3.13.0.txt +0 -210
  65. data/doc/release_notes/3.14.0.txt +0 -118
  66. data/doc/release_notes/3.15.0.txt +0 -78
  67. data/doc/release_notes/3.16.0.txt +0 -45
  68. data/doc/release_notes/3.17.0.txt +0 -58
  69. data/doc/release_notes/3.18.0.txt +0 -120
  70. data/doc/release_notes/3.19.0.txt +0 -67
  71. data/doc/release_notes/3.2.0.txt +0 -268
  72. data/doc/release_notes/3.20.0.txt +0 -41
  73. data/doc/release_notes/3.21.0.txt +0 -87
  74. data/doc/release_notes/3.22.0.txt +0 -39
  75. data/doc/release_notes/3.23.0.txt +0 -172
  76. data/doc/release_notes/3.24.0.txt +0 -420
  77. data/doc/release_notes/3.25.0.txt +0 -88
  78. data/doc/release_notes/3.26.0.txt +0 -88
  79. data/doc/release_notes/3.27.0.txt +0 -82
  80. data/doc/release_notes/3.28.0.txt +0 -304
  81. data/doc/release_notes/3.29.0.txt +0 -459
  82. data/doc/release_notes/3.3.0.txt +0 -192
  83. data/doc/release_notes/3.30.0.txt +0 -135
  84. data/doc/release_notes/3.31.0.txt +0 -146
  85. data/doc/release_notes/3.32.0.txt +0 -202
  86. data/doc/release_notes/3.33.0.txt +0 -157
  87. data/doc/release_notes/3.34.0.txt +0 -671
  88. data/doc/release_notes/3.35.0.txt +0 -144
  89. data/doc/release_notes/3.36.0.txt +0 -245
  90. data/doc/release_notes/3.37.0.txt +0 -338
  91. data/doc/release_notes/3.38.0.txt +0 -234
  92. data/doc/release_notes/3.39.0.txt +0 -237
  93. data/doc/release_notes/3.4.0.txt +0 -325
  94. data/doc/release_notes/3.40.0.txt +0 -73
  95. data/doc/release_notes/3.41.0.txt +0 -155
  96. data/doc/release_notes/3.42.0.txt +0 -74
  97. data/doc/release_notes/3.43.0.txt +0 -105
  98. data/doc/release_notes/3.44.0.txt +0 -152
  99. data/doc/release_notes/3.45.0.txt +0 -179
  100. data/doc/release_notes/3.46.0.txt +0 -122
  101. data/doc/release_notes/3.47.0.txt +0 -270
  102. data/doc/release_notes/3.48.0.txt +0 -477
  103. data/doc/release_notes/3.5.0.txt +0 -510
  104. data/doc/release_notes/3.6.0.txt +0 -366
  105. data/doc/release_notes/3.7.0.txt +0 -179
  106. data/doc/release_notes/3.8.0.txt +0 -151
  107. data/doc/release_notes/3.9.0.txt +0 -233
@@ -1,88 +0,0 @@
1
- = Performance Enhancements
2
-
3
- * The internal implementation of eager_graph has been made 75% to
4
- 225% faster than before, with greater benefits to more complex
5
- graphs.
6
-
7
- * Dataset creation has been made much faster (2.5x on 1.8 and 4.4x on
8
- 1.9), and dataset cloning has been made significantly faster (40%
9
- on 1.8 and 20% on 1.9).
10
-
11
- = Other Improvements
12
-
13
- * Strings passed to setter methods for integer columns are no longer
14
- considered to be in octal format if they include leading zeroes.
15
- The previous behavior was never intended, but was a side effect of
16
- using Kernel#Integer. Strings with leading zeroes are now treated
17
- as decimal, and you can still use the 0x prefix to treat them as
18
- hexidecimal. If anyone was relying on the old octal behavior, let
19
- me know and I'll add an extension that restores the octal behavior.
20
-
21
- * The identity_map plugin now works with the standard eager loading
22
- of many_to_many and many_through_many associations.
23
-
24
- * Database#create_table! now only attempts to drop the table if it
25
- already exists. Previously, it attempted to drop the table
26
- unconditionally ignoring any errors, which resulted in misleading
27
- error messages if dropping the table raised an error caused by
28
- permissions or referential integrity issues.
29
-
30
- * The default connection pool now correctly handles the case where a
31
- disconnect error is raised and an exception is raised while
32
- running the disconnection proc.
33
-
34
- * Disconnection errors are now detected when issuing transaction
35
- statements such as BEGIN/ROLLBACK/COMMIT. Previously, these
36
- statements did not handle disconnect errors on most adapters.
37
-
38
- * More disconnection errors are now detected. Specifically, the ado
39
- adapter and do postgres subadapter now handle disconnect errors,
40
- and the postgres adapter handles more types of disconnect errors.
41
-
42
- * Database#table_exists? now always issues a query to select from the
43
- table, it no longer attempts to parse the schema to determine the
44
- information on PostgreSQL and Oracle.
45
-
46
- * Date, DateTime, and Time values are now literalized correctly on
47
- Microsoft Access.
48
-
49
- * Connecting with the mysql adapter with an options hash now works if
50
- the :port option is a string, which makes it easier to use when the
51
- connection information is stored in YAML.
52
-
53
- * The xml_serializer plugin now works around a bug in pure-Java
54
- nokogiri regarding the handling of nil values.
55
-
56
- * Nicer error messages are now used if there is an attempt to call
57
- an invalid or restricted setter method.
58
-
59
- * The RDocs are now formatted with hanna-nouveau, which allows for
60
- section ordering, so the Database and Dataset RDoc pages are
61
- more friendly.
62
-
63
- = Backwards Compatibility
64
-
65
- * If you call a Dataset method such as #each on an eager_graphed
66
- dataset, you now get plain hashes that have column alias symbol
67
- keys and their values. Previously, you got a graphed response with
68
- table alias keys and model values. It's not wise to depend on the
69
- behavior, the only supported way of returning records when eager
70
- loading is to use #all.
71
-
72
- * An error is now raised if you attempt to eager load via
73
- Dataset#eager a many_to_many association that includes an
74
- :eager_graph option. Previously, incorrect SQL would have been
75
- generated and an error raised by the database.
76
-
77
- * Datasets are no longer guaranteed to have @row_proc,
78
- @indentifier_input_method, and @identifier_output_method defined
79
- as instance variables. You should be be using methods to access
80
- them anyway.
81
-
82
- * Database#table_exists? on PostgreSQL no longer accepts an options
83
- hash. Previously, you could use a :schema option. You must now
84
- provide the schema inside the table argument (e.g. :schema__table).
85
-
86
- * If you want to use the rdoc tasks in Sequel's Rakefile, and you are
87
- still using the hanna RDoc template with RDoc 2.3, you need to
88
- upgrade to using hanna-nouveau with RDoc 3.8+.
@@ -1,82 +0,0 @@
1
- = New Features
2
-
3
- * Model.dataset_module has been added for easily adding methods to
4
- a model's dataset:
5
-
6
- Album.dataset_module do
7
- def with_name_like(x)
8
- filter(:name.like(x))
9
- end
10
- def selling_at_least(x)
11
- filter{copies_sold > x}
12
- end
13
- end
14
- Album.with_name_like('Foo%').selling_at_least(100000).all
15
-
16
- Previously, you could use def_dataset_method to accomplish the
17
- same thing. dataset_module is generally cleaner, plus you are
18
- using actual methods instead of blocks, so calling the methods
19
- is faster on some ruby implementations.
20
-
21
- * Sequel now uses a Sequel::SQLTime class (a subclass of Time) when
22
- dealing with values for SQL time columns (which don't have a date
23
- component). These values are handled correctly when used in
24
- filters or insert/update statements (using only the time
25
- component), so Sequel can now successfully round trip values for
26
- time columns. Not all adapters support returning time column
27
- values as SQLTime instances, but the most common ones do.
28
-
29
- * You can now drop foreign key, primary key, and unique constraints
30
- on MySQL by passing the :type=>(:foreign_key|:primary_key|:unique)
31
- option to Database#drop_constraint.
32
-
33
- * The ODBC adapter now has initial support for the DB2 database, use
34
- the :db_type=>'db2' option to load the support.
35
-
36
- = Other Improvements
37
-
38
- * The mysql2 adapter now uses native prepared statements.
39
-
40
- * The tinytds adapter now uses uses sp_executesql for prepared
41
- statements.
42
-
43
- * DateTime and Time objects are now converted to Date objects when
44
- they are assigned to a date column in a Model instance.
45
-
46
- * When converting a Date object to a DateTime object, the resulting
47
- DateTime object now has no fractional day components. Previously,
48
- depending on your timezone settings, it could have had fractional
49
- day components.
50
-
51
- * The mysql2 adapter now supports stored procedures, as long as they
52
- don't return results.
53
-
54
- * Mass assignment protection now handles including modules in model
55
- classes and extending model instances with modules. Previously, if
56
- you defined a setter method in a module, access to it may have been
57
- restricted.
58
-
59
- * The prepared_statements_safe plugin now works on classes without
60
- datasets, so you can now do the following to load it for all models:
61
-
62
- Sequel::Model.plugin :prepared_statements_safe
63
-
64
- * Dataset#hash now works correctly when handling SQL::Expression
65
- instances.
66
-
67
- * Model#hash now correctly handles classes with no primary key or with
68
- a composite primary key.
69
-
70
- * Model#exists? now always returns false for new model objects.
71
-
72
- = Backwards Compatibility
73
-
74
- * If you were previously setting primary key values manually for new
75
- model objects and then calling exists? to see if the instance is
76
- already in the database, you need to change your code from:
77
-
78
- model.exists?
79
-
80
- to:
81
-
82
- model.this.get(1).nil?
@@ -1,304 +0,0 @@
1
- = New Adapter Support
2
-
3
- * Sequel now has much better support for the DB2 database.
4
-
5
- * An ibmdb adapter has been added, and is the recommended adapter to
6
- to use if you want to connect to DB2 from MRI.
7
-
8
- * A jdbc db2 subadapter has been added, allowing good DB2 support on
9
- JRuby.
10
-
11
- * The db2 adapter has been cleaned up substantially, and now works
12
- well, but it is still recommended that you switch to ibmdb if you
13
- are using the db2 adapter.
14
-
15
- * The firebird adapter has been split into shared and specific parts,
16
- and quite a few fixes were made to it.
17
-
18
- * A jdbc firebird subadapter has been added, allowing connection to
19
- firebird databases from JRuby.
20
-
21
- = New PostgreSQL 9.1 Features
22
-
23
- * Dataset#returning has been added for using the RETURNING clause on
24
- INSERT/UPDATE/DELETE queries. RETURNING allows such queries to
25
- return results in much the same way as a SELECT query works.
26
- When Dataset#returning is used, Dataset #insert, #update, and
27
- #delete now accept a block that is passed to Dataset #fetch_rows
28
- which is yielded plain ruby hashes for each row inserted, updated,
29
- or deleted. If Dataset#returning is used and a block is not given
30
- to those methods, those methods will return an array of plain hashes
31
- for all rows inserted, updated, and deleted.
32
-
33
- * Dataset#with_sql now treats a symbol as a first argument as a method
34
- name to call to get the SQL. The expected use case for this is with
35
- Dataset#returning and insert/update/delete:
36
-
37
- DB[:items].
38
- returning(:id).
39
- with_sql(:update_sql, :b => :b + 1).
40
- map(:id)
41
-
42
- Basically, it makes it more easily to statically set the
43
- insert/update/delete SQL, and then be able to use the full
44
- dataset API for returning results. As mentioned above, using
45
- Dataset#returning with #insert, #update, and #delete yields plain
46
- hashes, so if you want to have the row_proc applied (e.g. you are
47
- using models), you need to use this method instead, since you can
48
- then call #each or #all to make sure the row_proc is called on all
49
- returned rows.
50
-
51
- * Dataset#with (common table expressions) now affects
52
- INSERT/UPDATE/DELETE queries.
53
-
54
- * Database#create_table? now uses CREATE TABLE IF NOT EXISTS on
55
- PostgreSQL 9.1.
56
-
57
- = Other New Features
58
-
59
- * The :limit option is now respected when eager loading via either
60
- eager or eager_graph. By default, Sequel will just do an array
61
- slice of the resulting ruby array, which gets the correct answer,
62
- but does not offer any performance improvements. Sequel also
63
- offers a new :eager_limit_strategy option for using more advanced
64
- query types that only load the related records from the database.
65
- The available values for the :eager_limit_strategy option are:
66
-
67
- :window_function - This uses the row_number window function
68
- partitioned by the related key fields. It can only be used
69
- on databases that support window functions (PostgreSQL 8.4+,
70
- Microsoft SQL Server 2005+, DB2).
71
- :correlated_subquery - This uses a correlated subquery that is
72
- limited. It works on most databases except MySQL and DB2.
73
-
74
- You can provide a value of true as the option to have Sequel
75
- pick a strategy to use. Sequel will never use a correlated
76
- subquery for true, since in some cases it can perform worse than
77
- loading all related records and doing the array slice in ruby.
78
-
79
- If you want to enable an eager_limit_strategy globally, you can
80
- set Sequel::Model.default_eager_limit_strategy to a value, and
81
- all associations that use :limit will default to using that
82
- strategy.
83
-
84
- * one_to_one associations that do not represent true one-to-one
85
- database relationships, but represent one-to-many relationships
86
- where you are only returning the first object based on a given
87
- order are also now handled correctly when eager loading.
88
- Previously, eager loading such associations resulted in the last
89
- matching object being associated instead of the first matching
90
- object being associated.
91
-
92
- You can also use an :eager_limit_strategy for one_to_one
93
- associations. In addition to the :window_function and
94
- :correlated_subquery values, there is also a :distinct_on value
95
- that is available on PostgreSQL for using DISTINCT ON, which is
96
- the fastest strategy if you are using PostgreSQL.
97
-
98
- * Dataset#map, #to_hash, #select_map, #select_order_map, and
99
- #select_hash now accept arrays of symbols, and if given arrays
100
- of symbols, use arrays of results. For example:
101
-
102
- DB[:items].map([:id, :name])
103
- # => [[1, 'foo'], [2, 'bar'], ...]
104
- DB[:items].to_hash([:id, :foo_id], [:name, :bar_id])
105
- # => {[1, 3]=>['foo', 5], [2, 4]=>['bar', 6], ...}
106
-
107
- * For SQL expression objects where Sequel cannot deduce the type
108
- of the object, it now will consider the type of the argument
109
- when a &, |, or + operator is used. For example:
110
-
111
- :x & 1
112
-
113
- Previously, this did "x AND 1", now it does "x & 1". Using a
114
- logical operator on an integer doesn't make sense, but it's
115
- possible people did so if the database uses 1/0 for true/false.
116
- Likewise:
117
-
118
- :x + 'foo'
119
-
120
- Previously, this did "x + 'foo'" (addition), now it does
121
- "x || 'foo'" (string concatenation).
122
-
123
- * The sql_string, sql_number, and sql_boolean methods are now
124
- available on SQL::ComplexExpressions, so you can do:
125
-
126
- (:x + 1).sql_string + ' foos'
127
- # (x + 1) || ' foos'
128
-
129
- Previously, there was not an easy way to generate such SQL
130
- expressions.
131
-
132
- * :after_load association hooks are now applied when using
133
- eager_graph. Previously, they were only applied when using
134
- eager, not when using eager_graph.
135
-
136
- * Database#copy_table has been added to the postgres adapter if pg
137
- is used as the underlying driver. It allows you to get very
138
- fast exports of table data in text or CSV format. It also
139
- accepts datasets, allowing fast exports of arbitrary queries
140
- in text or CSV format.
141
-
142
- * SQL extract support (:timestamp.extract(:year)) is now emulated
143
- on the databases that don't natively support it, such as SQLite,
144
- Microsoft SQL Server, and DB2. At least the following values are
145
- supported for extraction: :year, :month, :day, :hour, :minute,
146
- and :second.
147
-
148
- * The bitwise XOR operator is now emulated on SQLite. Previously,
149
- attempting to use it would cause the database to raise an error.
150
-
151
- * A Database#use_timestamp_timezones accessor has been added on
152
- SQLite. This allows you to turn off the use of timezones in
153
- timestamps by setting the value to false. This is necessary if you
154
- want you want to use the SQLite datetime functions, or the new
155
- ability to emulate extract.
156
-
157
- Note that this setting does not affect the current database
158
- content. To convert old databases to the new format, you'll
159
- have to resave all rows that have timestamps.
160
-
161
- At some point in the future, Sequel may default to not using
162
- timezones in timestamps by default on SQLite, so if you would
163
- like to rely on the current behavior, you should set this
164
- accessor to true now.
165
-
166
- * Sequel now works around bugs in MySQL when using a subselect with
167
- a LIMIT by using a nested subselect.
168
-
169
- * Sequel now works around issues in Microsoft SQL Server and DB2 when
170
- using a subselect with IN/NOT IN that uses the emulated offset
171
- support.
172
-
173
- * The jdbc adapter now returns java.sql.Clob objects as
174
- Sequel::SQL::Blobs.
175
-
176
- * Sequel now considers database clob types as the :blob schema type.
177
-
178
- * Sequel::SQLTime.create has been added for more easily creating
179
- instances:
180
-
181
- Sequel::SQLTime.create(hour, minute, second, usec)
182
-
183
- * Dataset#select_all now accepts SQL::AliasedExpression and
184
- SQL::JoinClause arguments and returns the appropriate
185
- SQL::ColumnAll value that selects all columns from the related
186
- table.
187
-
188
- * Model.set_dataset now accepts Sequel::LiteralString objects that
189
- represent table names. This usage is not encouraged except in
190
- rare cases such as using a set returning function in PostgreSQL.
191
-
192
- * Dataset#supports_cte? now takes an optional argument specifying the
193
- type of query (:insert, :update, :delete, :select). It defaults to
194
- :select.
195
-
196
- * Dataset#supports_returning? has been added. It requires an
197
- argument specifying the type of query (:insert, :update, or
198
- :delete).
199
-
200
- * Dataset#supports_cte_in_subqueries? has been added for checking
201
- for support for this ability. Apparently, only PostgreSQL
202
- currently supports this. For other adapters that support CTEs but
203
- not in subqueries, if a subquery with a CTE is used in a JOIN, the
204
- CTE is moved from the subquery to the main query.
205
-
206
- * Dataset#supports_select_all_and_column has been added for seeing
207
- if "SELECT *, foo ..." style queries are supported. This is false
208
- on DB2, which doesn't allow such queries. When it is false, using
209
- select_append on a dataset that doesn't specifically select columns
210
- will now change the query to do "SELECT table.*, foo ..." instead,
211
- working around the limitation on DB2.
212
-
213
- * Dataset#supports_ordered_distinct_on? has been added. Currently,
214
- this is only true on PostgreSQL. MySQL can emulate DISTINCT ON
215
- using GROUP BY, but it doesn't respect ORDER BY, so it some
216
- cases it cannot be used equivalently.
217
-
218
- * Dataset#supports_where_true? has been added for checking for support
219
- of WHERE TRUE (or WHERE 1 if 1 is true). Not all databases support
220
- using such a construct, and on the databases that do not, you have
221
- to use WHERE (1 = 1) or something similar.
222
-
223
- = Other Improvements
224
-
225
- * Sequel 3.27.0 was negatively affected by a serious bug in
226
- ActiveSupport's Time.=== that has still not been fixed, which
227
- broke the literalization of Time objects. In spite of the bad
228
- precedent it sets, Sequel now avoids using Time.=== on a
229
- subclass of Time to work around this ActiveSupport bug.
230
-
231
- * Dataset#with_pk now uses a qualified primary key instead of an
232
- unqualified primary key, which means it can now be used correctly
233
- after joining to a separate table.
234
-
235
- * Association after_load hooks when lazy loading are now called
236
- after the association has been loaded, which allows them to change
237
- which records are cached. This makes the lazy load case more
238
- similar to the eager load case.
239
-
240
- * The metaprogrammatically created methods that implement Sequel's
241
- DSL support have been made significantly faster by using
242
- module_eval instead of define_method.
243
-
244
- * The type translation in the postgres, mysql, and sqlite adapters
245
- has been made faster by using Method objects that result in more
246
- direct processing.
247
-
248
- * Typecasting values for time columns from Time values to
249
- Sequel::SQLTime values now correctly handles fractional seconds on
250
- ruby 1.9.
251
-
252
- = Backwards Compatibility
253
-
254
- * Dataset#insert_returning_sql has been changed to a private method
255
- in the PostgreSQL and Firebird adapters, and it operates
256
- differently than it did previously. The private
257
- #insert_returning_pk_sql and #insert_returning_select_sql methods
258
- have been removed.
259
-
260
- * Dataset#with_pk no longer does some defensive checking for misuse of
261
- primary keys (e.g. providing a composite key when the model uses
262
- a single key). Previously, Sequel would raise an Error
263
- immediately, now such behavior is undefined, with the most likely
264
- behavior being the database raising an Error.
265
-
266
- * The :alias_association_type_map and :alias_association_name_map
267
- settings have been removed from the :eager_graph dataset option,
268
- in favor of just storing the related association reflection.
269
-
270
- * The internals of the db2 adapter have changed substantially, if you
271
- were relying on some of the private methods defined in it, you will
272
- probably have to modify your code.
273
-
274
- * The firebird adapter was substanially modified, specifically parts
275
- related to insert returning autogenerated primary key values, so if
276
- you were previously using the adapter you should probably take more
277
- care than usual when testing your upgrade.
278
-
279
- * The Dataset::WITH_SUPPORTED constant has been removed.
280
-
281
- * The Dataset#supports_cte? method now accepts an optional argument.
282
- If you overrode this method, your overridden method now must
283
- accept an optional argument.
284
-
285
- * If you were previously doing:
286
-
287
- :x & 1
288
-
289
- and wanting "x AND 1", you have to switch to:
290
-
291
- :x.sql_boolean & 1
292
-
293
- Likewise, if you were previously doing:
294
-
295
- :x + 'foo'
296
-
297
- and wanting "x + 'foo'", you need to switch to:
298
-
299
- :x.sql_number + 'foo'
300
-
301
- * Sequel no longer does defensive type checking in the SQL expression
302
- support, as it was often more strict than the database and would
303
- not allow the creation of expressions that were valid for the
304
- database.