sequel 5.6.0 → 5.7.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 (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.