sequel 4.48.0 → 4.49.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +56 -0
- data/doc/advanced_associations.rdoc +1 -1
- data/doc/opening_databases.rdoc +3 -2
- data/doc/release_notes/4.49.0.txt +222 -0
- data/lib/sequel/adapters/ibmdb.rb +6 -1
- data/lib/sequel/adapters/jdbc.rb +3 -1
- data/lib/sequel/adapters/jdbc/h2.rb +10 -1
- data/lib/sequel/adapters/jdbc/postgresql.rb +3 -2
- data/lib/sequel/adapters/jdbc/sqlserver.rb +9 -2
- data/lib/sequel/adapters/mock.rb +3 -0
- data/lib/sequel/adapters/mysql2.rb +1 -1
- data/lib/sequel/adapters/postgres.rb +2 -1
- data/lib/sequel/adapters/shared/mysql.rb +4 -1
- data/lib/sequel/adapters/shared/oracle.rb +26 -3
- data/lib/sequel/connection_pool.rb +9 -2
- data/lib/sequel/connection_pool/sharded_single.rb +1 -1
- data/lib/sequel/connection_pool/sharded_threaded.rb +1 -1
- data/lib/sequel/connection_pool/single.rb +2 -2
- data/lib/sequel/connection_pool/threaded.rb +2 -2
- data/lib/sequel/database/connecting.rb +3 -3
- data/lib/sequel/database/dataset_defaults.rb +14 -1
- data/lib/sequel/dataset.rb +1 -1
- data/lib/sequel/dataset/actions.rb +54 -0
- data/lib/sequel/dataset/dataset_module.rb +58 -0
- data/lib/sequel/dataset/query.rb +3 -3
- data/lib/sequel/exceptions.rb +8 -0
- data/lib/sequel/extensions/_model_pg_row.rb +5 -2
- data/lib/sequel/extensions/current_datetime_timestamp.rb +2 -1
- data/lib/sequel/extensions/date_arithmetic.rb +1 -0
- data/lib/sequel/extensions/duplicate_columns_handler.rb +2 -2
- data/lib/sequel/extensions/migration.rb +5 -2
- data/lib/sequel/extensions/null_dataset.rb +1 -0
- data/lib/sequel/model/associations.rb +3 -0
- data/lib/sequel/model/base.rb +10 -55
- data/lib/sequel/model/dataset_module.rb +5 -43
- data/lib/sequel/model/errors.rb +2 -1
- data/lib/sequel/model/inflections.rb +17 -5
- data/lib/sequel/plugins/active_model.rb +2 -2
- data/lib/sequel/plugins/class_table_inheritance.rb +1 -0
- data/lib/sequel/plugins/composition.rb +2 -2
- data/lib/sequel/plugins/dataset_associations.rb +25 -13
- data/lib/sequel/plugins/json_serializer.rb +2 -2
- data/lib/sequel/plugins/pg_row.rb +4 -2
- data/lib/sequel/plugins/serialization.rb +1 -0
- data/lib/sequel/plugins/single_table_inheritance.rb +6 -1
- data/lib/sequel/plugins/touch.rb +2 -1
- data/lib/sequel/plugins/validation_helpers.rb +10 -2
- data/lib/sequel/sql.rb +16 -7
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/mssql_spec.rb +4 -4
- data/spec/adapters/mysql_spec.rb +5 -1
- data/spec/adapters/oracle_spec.rb +4 -0
- data/spec/bin_spec.rb +7 -1
- data/spec/core/connection_pool_spec.rb +28 -14
- data/spec/core/database_spec.rb +149 -0
- data/spec/core/dataset_spec.rb +173 -0
- data/spec/extensions/class_table_inheritance_spec.rb +58 -17
- data/spec/extensions/composition_spec.rb +13 -0
- data/spec/extensions/dataset_associations_spec.rb +12 -0
- data/spec/extensions/many_through_many_spec.rb +4 -4
- data/spec/extensions/null_dataset_spec.rb +1 -1
- data/spec/extensions/serialization_spec.rb +1 -1
- data/spec/extensions/single_table_inheritance_spec.rb +16 -0
- data/spec/extensions/validation_helpers_spec.rb +1 -2
- data/spec/integration/associations_test.rb +8 -0
- data/spec/integration/plugin_test.rb +8 -3
- data/spec/model/association_reflection_spec.rb +1 -1
- data/spec/model/associations_spec.rb +29 -9
- data/spec/model/class_dataset_methods_spec.rb +6 -0
- data/spec/model/eager_loading_spec.rb +8 -8
- data/spec/model/plugins_spec.rb +34 -0
- data/spec/model/record_spec.rb +1 -1
- data/spec/spec_config.rb +2 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 272cf6bec70bfd569e735839c6e7dce242527188
|
4
|
+
data.tar.gz: 8fac2b669b6d97264ef870f601a882a833d2abeb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d1fffb914a7352c99aceb0d0ae222a36a6a48c3fef47aa9b10d1ffc494ae625e53f1f0435d009aa050e13fbf8e1296b6bb15110e19e1762bce0f8f77ce4621e
|
7
|
+
data.tar.gz: f79ce483f64c7fbf4df674c374e2bac0009b6f1b479b8bb6e008921dd08ae2b88b16226427b26ce7bb3241c96ad0c2bbb55c6b66202efe4fa01e8813662a644e
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,59 @@
|
|
1
|
+
=== 4.49.0 (2017-08-01)
|
2
|
+
|
3
|
+
* Make dataset_associations plugin automatically alias tables when using many_through_many associations that join the same table multiple times (jeremyevans)
|
4
|
+
|
5
|
+
* Deprecate using a :pool_class Database that is not a class or a symbol for a supported pool class (jeremyevans)
|
6
|
+
|
7
|
+
* Deprecate :eager_loading_predicate_key association option and association reflection method (jeremyevans)
|
8
|
+
|
9
|
+
* Deprecate Model.serialized_columns in the serialization plugin (jeremyevans)
|
10
|
+
|
11
|
+
* Deprecate Model.cti_columns in the class_table_inheritance plugin (jeremyevans)
|
12
|
+
|
13
|
+
* Deprecate SQL::AliasedExpression#aliaz, use #alias instead (jeremyevans)
|
14
|
+
|
15
|
+
* Deprecate SQL::Function#f, use #name instead (jeremyevans)
|
16
|
+
|
17
|
+
* Deprecate treating cross join with conditions as inner join on MySQL (jeremyevans)
|
18
|
+
|
19
|
+
* Deprecate ConnectionPool#created_count, use #size instead (jeremyevans)
|
20
|
+
|
21
|
+
* Deprecate ConnectionPool::CONNECTION_POOL_MAP, use the :pool_class option to specify a non-default connection pool (jeremyevans)
|
22
|
+
|
23
|
+
* Deprecate Sequel::IBMDB::Connection#prepared_statements= in the ibmdb adapter (jeremyevans)
|
24
|
+
|
25
|
+
* Deprecate DEFAULT_OPTIONS in validation_helpers, override default_validation_helpers_options private method instead (jeremyevans)
|
26
|
+
|
27
|
+
* Deprecate model association before callbacks returning false to cancel the action (jeremyevans)
|
28
|
+
|
29
|
+
* Support native offset syntax on Oracle 12 (timon) (#1397)
|
30
|
+
|
31
|
+
* Deprecate Dataset#nullify! in the null_dataset extension (jeremyevans)
|
32
|
+
|
33
|
+
* Deprecate Dataset#autoid=, #_fetch=, and #numrows= in the mock adapter (jeremyevans)
|
34
|
+
|
35
|
+
* Deprecate loading plugins by requiring sequel_#{plugin} (jeremyevans)
|
36
|
+
|
37
|
+
* Add Model.sti_class_from_sti_key in the single_table_inheritance plugin to get the appropriate class to use (Aryk) (#1396)
|
38
|
+
|
39
|
+
* Make Sequel::Error#cause use #wrapped_exception if it exists on ruby 2.1+ (jeremyevans)
|
40
|
+
|
41
|
+
* Make Dataset#where_all, #where_each, #where_single_value core dataset methods instead of just model dataset methods (jeremyevans)
|
42
|
+
|
43
|
+
* Make Database#extend_datasets and Dataset#with_extend now use a Dataset::DatasetModule instance if given a block (jeremyevans)
|
44
|
+
|
45
|
+
* Add Sequel::Dataset::DatasetModule, now a superclass of Sequel::Model::DatasetModule (jeremyevans)
|
46
|
+
|
47
|
+
* Make composition plugin with :mapping option work correctly if Model#get_column_value is overridden (jeremyevans)
|
48
|
+
|
49
|
+
* Support Dataset#paged_each :stream => false option on mysql2 to disable streaming (Aryk) (#1395)
|
50
|
+
|
51
|
+
* Make datetimeoffset handling in the jdbc/sqlserver adapter work on more drivers (jeremyevans)
|
52
|
+
|
53
|
+
* Make alter_table add_primary_key work correctly on H2 1.4+ (jeremyevans)
|
54
|
+
|
55
|
+
* Support :sslrootcert Database option in the postgres adapter (dleavitt) (#1391)
|
56
|
+
|
1
57
|
=== 4.48.0 (2017-07-01)
|
2
58
|
|
3
59
|
* Deprecate Model.<< (jeremyevans)
|
@@ -211,7 +211,7 @@ and the tracks eager loader looks like:
|
|
211
211
|
Album.one_to_many :tracks, :eager_loader=>(proc do |eo_opts|
|
212
212
|
eo_opts[:rows].each{|album| album.associations[:tracks] = []}
|
213
213
|
id_map = eo_opts[:id_map]
|
214
|
-
Track.where(:
|
214
|
+
Track.where(:album_id=>id_map.keys).all do |track|
|
215
215
|
if albums = id_map[track.album_id]
|
216
216
|
albums.each do |album|
|
217
217
|
album.associations[:tracks] << track
|
data/doc/opening_databases.rdoc
CHANGED
@@ -284,7 +284,7 @@ The following additional options are supported:
|
|
284
284
|
|
285
285
|
=== postgres
|
286
286
|
|
287
|
-
Requires: pg (or postgres if pg is not available)
|
287
|
+
Requires: pg (or postgres-pr/postgres-compat if pg is not available)
|
288
288
|
|
289
289
|
The Sequel postgres adapter works with the pg, postgres, and postgres-pr ruby libraries.
|
290
290
|
The pg library is the best supported, as it supports real bound variables and prepared statements.
|
@@ -308,8 +308,9 @@ The following additional options are supported:
|
|
308
308
|
:notice_receiver :: A proc that be called with the PGresult objects that have notice or warning messages.
|
309
309
|
The default notice receiver just prints the messages to stderr, but this can be used
|
310
310
|
to handle notice/warning messages differently. Only respected if using the pg library).
|
311
|
-
:sslmode :: Set to 'disable', 'allow', 'prefer', 'require' to choose how to treat SSL (only
|
311
|
+
:sslmode :: Set to 'disable', 'allow', 'prefer', 'require', 'verify-ca', or 'verify-full' to choose how to treat SSL (only
|
312
312
|
respected if using the pg library)
|
313
|
+
:sslrootcert :: Specify the path to the root SSL certificate to use.
|
313
314
|
:search_path :: Set to the schema search_path. This can either be a single string containing the schemas
|
314
315
|
separated by commas (for use via a URL: <tt>postgres:///?search_path=schema1,schema2</tt>), or it
|
315
316
|
can be an array of strings (for use via an option:
|
@@ -0,0 +1,222 @@
|
|
1
|
+
= Forward Compatibility
|
2
|
+
|
3
|
+
Sequel 4.49.0 will be the last minor release of Sequel 4. While the
|
4
|
+
vast majority of backwards incompatible changes in Sequel 5 have
|
5
|
+
deprecation warnings in 4.49.0, there are a few changes that do
|
6
|
+
not. Here is a brief list of changes coming in Sequel 5 that
|
7
|
+
do not have deprecation warnings (note that this list may not be
|
8
|
+
exhaustive):
|
9
|
+
|
10
|
+
* The {before,after,around}_validation hooks will always be called
|
11
|
+
when saving, even if the validate: false option is used. This
|
12
|
+
will allow you to use the before_validation hook to make changes
|
13
|
+
to the model instance that are required before validation and
|
14
|
+
before saving even if not validating. Currently, you would have
|
15
|
+
to use both a before_save and before_validation hook, which would
|
16
|
+
both be run on normal instance saving.
|
17
|
+
|
18
|
+
* Getting values for newly created model instances after insertion
|
19
|
+
now happens before after_create is called, instead of after.
|
20
|
+
This behavior is currently available via the before_after_save
|
21
|
+
plugin, and and will become the default behavior.
|
22
|
+
|
23
|
+
* Sequel will now immediately attempt to the connect to the database
|
24
|
+
when a Database instance is created, in order to fail fast. This
|
25
|
+
behavior is currently available via the test: true option, and
|
26
|
+
will become the default behavior. You can force not testing the
|
27
|
+
connection by using the test: false option.
|
28
|
+
|
29
|
+
* The validates_unique method in the validation_helpers plugin will
|
30
|
+
now only check for uniqueness by default if the record is new or
|
31
|
+
one of the related columns has been modified by default. You can
|
32
|
+
use only_if_modified: false to force the uniqueness check.
|
33
|
+
|
34
|
+
* Database schema methods and schema generator methods will return
|
35
|
+
nil instead of some internal value.
|
36
|
+
|
37
|
+
* Many cases where Sequel uses send internally will be switched to
|
38
|
+
public_send so they only call public methods, unless it is
|
39
|
+
specifically expected that they will call private methods.
|
40
|
+
|
41
|
+
* Model association hooks will be nil instead of empty arrays by
|
42
|
+
default. They will only be arrays if that hook has been set for
|
43
|
+
the association.
|
44
|
+
|
45
|
+
* Internal uses of instance_eval with a block will be changed to
|
46
|
+
instance_exec. This will allow them to be used with lambdas that
|
47
|
+
take no arguments. Unfortunately, it will break the case where a
|
48
|
+
lambda is currently used that takes one argument.
|
49
|
+
|
50
|
+
* Most internal constants will be frozen, unless there is a
|
51
|
+
requirement that they be modified at runtime.
|
52
|
+
|
53
|
+
* The @was_new instance variable set during model instance creation
|
54
|
+
will be removed.
|
55
|
+
|
56
|
+
= Deprecated Features
|
57
|
+
|
58
|
+
* Model association before callbacks returning false canceling the
|
59
|
+
action is now deprecated. The callbacks should now call
|
60
|
+
Model#cancel_action to cancel the action.
|
61
|
+
|
62
|
+
* Loading plugins by requiring them via sequel_#{plugin} is now
|
63
|
+
deprecated. Affected plugins should move the plugin file so it can
|
64
|
+
be required via sequel/plugins/#{plugin}.
|
65
|
+
|
66
|
+
* In the mock adapter, Dataset#autoid=, #_fetch=, and #numrows= are
|
67
|
+
now deprecated. They modified the dataset itself, which would not
|
68
|
+
work for frozen datasets. Dataset#with_autoid, #with_fetch,
|
69
|
+
and #with_numrows should be used instead, which return a modified
|
70
|
+
copy.
|
71
|
+
|
72
|
+
* In the null_dataset extension, Dataset#nullify! is now deprecated.
|
73
|
+
It modified the dataset itself, which would not work for frozen
|
74
|
+
datasets. Dataset#nullify should be used instead, which returns a
|
75
|
+
modified copy.
|
76
|
+
|
77
|
+
* Modifying the validation_helpers plugin DEFAULT_OPTIONS hash is now
|
78
|
+
deprecated. Any change to the default options should be done by
|
79
|
+
overriding the Model#default_validation_helpers_options private
|
80
|
+
method.
|
81
|
+
|
82
|
+
* Modifying ConnectionPool::CONNECTION_POOL_MAP to support an
|
83
|
+
external connection pool is now deprecated. To use an external
|
84
|
+
connection pool, pass the pool class via the :pool_class
|
85
|
+
Database option. Additionally, using a :pool_class option that
|
86
|
+
is not a class or a symbol for one of the default connection
|
87
|
+
pools is also deprecated.
|
88
|
+
|
89
|
+
* ConnectionPool#created_count is now deprecated. This method was
|
90
|
+
misnamed, as it was in alias to size, but the name implies it
|
91
|
+
returns how many connections have been created, as opposed to how
|
92
|
+
many connections are still in the pool.
|
93
|
+
|
94
|
+
* Sequel::SQL::Function#f is now deprecated, switch to using #name
|
95
|
+
instead.
|
96
|
+
|
97
|
+
* Sequel::SQL::AliasedExpression#aliaz is now deprecated, switch
|
98
|
+
to using #alias instead.
|
99
|
+
|
100
|
+
* The :eager_loading_predicate_key association option and
|
101
|
+
eager_loading_predicate_key association method are now deprecated.
|
102
|
+
The predicate_key option and method should be used instead.
|
103
|
+
|
104
|
+
* The cti_columns class method in the class_table_inheritance plugin
|
105
|
+
is now deprecated.
|
106
|
+
|
107
|
+
* The serialized_columns class method in the serialization plugin
|
108
|
+
is now deprecated.
|
109
|
+
|
110
|
+
* Having ds.join_table(:table, :cross, :a=>:b) be treated as an
|
111
|
+
inner join on MySQL is now deprecated.
|
112
|
+
|
113
|
+
* Sequel::IBMDB::Connection#prepared_statements= in the ibmdb
|
114
|
+
adapter is now deprecated.
|
115
|
+
|
116
|
+
* Additional internal constants are now deprecated.
|
117
|
+
|
118
|
+
= New Features
|
119
|
+
|
120
|
+
* Database#extend_datasets and Database#with_extend if given a block
|
121
|
+
now use a Dataset::DatasetModule instance instead of a plain Module
|
122
|
+
instance. Dataset::DatasetModule is a subset of
|
123
|
+
Model::DatasetModule, and allows for the easy creation of dataset
|
124
|
+
methods that can perform caching for frozen datasets.
|
125
|
+
|
126
|
+
Defining dataset methods is done by calling methods with the same
|
127
|
+
name as dataset methods inside the extend_datasets or with_extend
|
128
|
+
block:
|
129
|
+
|
130
|
+
DB.extend_datasets do
|
131
|
+
order :by_id, :id
|
132
|
+
select :with_id_and_name, :id, :name
|
133
|
+
where :active, :active
|
134
|
+
end
|
135
|
+
|
136
|
+
This is equivalent to:
|
137
|
+
|
138
|
+
DB.extend_datasets do
|
139
|
+
def by_id
|
140
|
+
order(:id)
|
141
|
+
end
|
142
|
+
|
143
|
+
def with_id_and_name
|
144
|
+
select(:id, :name)
|
145
|
+
end
|
146
|
+
|
147
|
+
def active
|
148
|
+
where(:active)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
Except that for frozen datasets (the default in Sequel 5),
|
153
|
+
code like:
|
154
|
+
|
155
|
+
100.times do
|
156
|
+
DB[:table].active.with_id_and_name.by_id
|
157
|
+
end
|
158
|
+
|
159
|
+
will only allocate 4 datasets instead of 400, and can be
|
160
|
+
3-4 times faster.
|
161
|
+
|
162
|
+
* Dataset#where_{all,each,single_value} are now core dataset methods
|
163
|
+
instead of just model dataset methods. These methods allow you to
|
164
|
+
replace:
|
165
|
+
|
166
|
+
dataset.where(cond).all
|
167
|
+
dataset.where(cond).each{}
|
168
|
+
dataset.where(cond).single_value
|
169
|
+
|
170
|
+
with:
|
171
|
+
|
172
|
+
dataset.where_all(cond)
|
173
|
+
dataset.where_each(cond){}
|
174
|
+
dataset.where_single_value(cond)
|
175
|
+
|
176
|
+
The advantage of #where_{all,each,single_value} is that frozen
|
177
|
+
datasets can take potentially advantage of caching and perform
|
178
|
+
70%-300% faster.
|
179
|
+
|
180
|
+
* Oracle 12 native limit/offset support is now supported, which
|
181
|
+
in particular makes offset queries much faster as they don't
|
182
|
+
have to be emulated using the row_number window function.
|
183
|
+
|
184
|
+
* Dataset#paged_each in the mysql2 adapter now supports a
|
185
|
+
:stream=>false option to disable streaming and fallback to
|
186
|
+
the default implementation.
|
187
|
+
|
188
|
+
* The postgres adapter now supports the :sslrootcert option
|
189
|
+
directly, you no longer need to specify it using the
|
190
|
+
:driver_options hash.
|
191
|
+
|
192
|
+
* The single_table_inheritance plugin now supports an
|
193
|
+
sti_class_from_sti_key method for getting the appropriate
|
194
|
+
subclass for the given key.
|
195
|
+
|
196
|
+
= Other Improvements
|
197
|
+
|
198
|
+
* Using the dataset_associations plugin with a many_through_many
|
199
|
+
association that joins to the same table multiple times is now
|
200
|
+
handled correctly by automatically aliasing the table
|
201
|
+
appropriately.
|
202
|
+
|
203
|
+
* On Ruby 2.1+, Sequel::Error#cause will use wrapped_exception
|
204
|
+
if one is set. This doesn't result in different behavior in
|
205
|
+
most cases, but it can in cases where nested exception handling
|
206
|
+
is done and Sequel tries to raise the most relevant exception.
|
207
|
+
|
208
|
+
* Using the composition plugin with the :mapping option now works
|
209
|
+
correctly when using the column_conflicts plugin.
|
210
|
+
|
211
|
+
* The validation_helpers plugin's validates_max_length method
|
212
|
+
now correctly gets the default :nil_message option from
|
213
|
+
the default_validation_helpers_options method instead of
|
214
|
+
looking at the plugin defaults.
|
215
|
+
|
216
|
+
* The duplicate_columns_handler extension no longer makes the
|
217
|
+
Dataset#columns= method public.
|
218
|
+
|
219
|
+
* On H2 1.4+, alter_table add_primary_key now works correctly.
|
220
|
+
|
221
|
+
* The jdbc/sqlserver adapter's datetimeoffset type handling now
|
222
|
+
works with more JDBC driver versions.
|
@@ -37,7 +37,12 @@ module Sequel
|
|
37
37
|
class Connection
|
38
38
|
# A hash with prepared statement name symbol keys, where each value is
|
39
39
|
# a two element array with an sql string and cached Statement value.
|
40
|
-
|
40
|
+
attr_reader :prepared_statements
|
41
|
+
|
42
|
+
def prepared_statements=(v)
|
43
|
+
Sequel::Deprecation.deprecate("Sequel::IBMDB::Connection#prepared_statements=", "Use replace on the hash instead of reassigning it")
|
44
|
+
@prepared_statements = v
|
45
|
+
end
|
41
46
|
|
42
47
|
# Error class for exceptions raised by the connection.
|
43
48
|
class Error < StandardError
|
data/lib/sequel/adapters/jdbc.rb
CHANGED
@@ -10,6 +10,7 @@ module Sequel
|
|
10
10
|
module JavaLang
|
11
11
|
include_package 'java.lang'
|
12
12
|
end
|
13
|
+
Sequel::Deprecation.deprecate_constant(self, :JavaLang)
|
13
14
|
|
14
15
|
# Make it accesing the java.sql hierarchy more ruby friendly.
|
15
16
|
module JavaSQL
|
@@ -20,6 +21,7 @@ module Sequel
|
|
20
21
|
module JavaxNaming
|
21
22
|
include_package 'javax.naming'
|
22
23
|
end
|
24
|
+
Sequel::Deprecation.deprecate_constant(self, :JavaxNaming)
|
23
25
|
|
24
26
|
# Used to identify a jndi connection and to extract the jndi
|
25
27
|
# resource name.
|
@@ -488,7 +490,7 @@ module Sequel
|
|
488
490
|
# Gets the connection from JNDI.
|
489
491
|
def get_connection_from_jndi
|
490
492
|
jndi_name = JNDI_URI_REGEXP.match(uri)[1]
|
491
|
-
|
493
|
+
javax.naming.InitialContext.new.lookup(jndi_name).connection
|
492
494
|
end
|
493
495
|
|
494
496
|
# Gets the JDBC connection uri from the JNDI resource.
|
@@ -30,6 +30,15 @@ module Sequel
|
|
30
30
|
:h2
|
31
31
|
end
|
32
32
|
|
33
|
+
def freeze
|
34
|
+
h2_version
|
35
|
+
super
|
36
|
+
end
|
37
|
+
|
38
|
+
def h2_version
|
39
|
+
@h2_version ||= get(Sequel.function(:H2VERSION))
|
40
|
+
end
|
41
|
+
|
33
42
|
# Rollback an existing prepared transaction with the given transaction
|
34
43
|
# identifier string.
|
35
44
|
def rollback_prepared_transaction(transaction_id, opts=OPTS)
|
@@ -84,7 +93,7 @@ module Sequel
|
|
84
93
|
|
85
94
|
sqls = [super(table, op)]
|
86
95
|
|
87
|
-
if pk && op[:type] != :identity
|
96
|
+
if pk && (h2_version >= '1.4' || op[:type] != :identity)
|
88
97
|
sqls << "ALTER TABLE #{quote_schema_table(table)} ADD PRIMARY KEY (#{quote_identifier(op[:name])})"
|
89
98
|
end
|
90
99
|
|
@@ -211,6 +211,8 @@ module Sequel
|
|
211
211
|
include Sequel::Postgres::DatasetMethods
|
212
212
|
APOS = "'".freeze
|
213
213
|
Sequel::Deprecation.deprecate_constant(self, :APOS)
|
214
|
+
HSTORE_TYPE = 'hstore'.freeze
|
215
|
+
Sequel::Deprecation.deprecate_constant(self, :HSTORE_TYPE)
|
214
216
|
|
215
217
|
private
|
216
218
|
|
@@ -228,7 +230,6 @@ module Sequel
|
|
228
230
|
ARRAY_TYPE = Java::JavaSQL::Types::ARRAY
|
229
231
|
ARRAY_METHOD = Postgres.method(:RubyPGArray)
|
230
232
|
PG_SPECIFIC_TYPES = [ARRAY_TYPE, Java::JavaSQL::Types::OTHER, Java::JavaSQL::Types::STRUCT]#.freeze # SEQUEL5
|
231
|
-
HSTORE_TYPE = 'hstore'.freeze
|
232
233
|
HSTORE_METHOD = Postgres.method(:RubyPGHstore)
|
233
234
|
|
234
235
|
def type_convertor(map, meta, type, i)
|
@@ -241,7 +242,7 @@ module Sequel
|
|
241
242
|
ARRAY_METHOD
|
242
243
|
elsif oid == 2950 # UUID
|
243
244
|
map[STRING_TYPE]
|
244
|
-
elsif meta.getPGType(i) ==
|
245
|
+
elsif meta.getPGType(i) == 'hstore'
|
245
246
|
HSTORE_METHOD
|
246
247
|
else
|
247
248
|
super
|
@@ -42,8 +42,15 @@ module Sequel
|
|
42
42
|
super
|
43
43
|
map = @type_convertor_map
|
44
44
|
map[Java::JavaSQL::Types::TIME] = SQLServer.method(:MSSQLRubyTime)
|
45
|
-
|
46
|
-
|
45
|
+
|
46
|
+
# Work around constant lazy loading in some drivers
|
47
|
+
begin
|
48
|
+
dto = Java::MicrosoftSql::Types::DATETIMEOFFSET
|
49
|
+
rescue NameError
|
50
|
+
end
|
51
|
+
|
52
|
+
if dto
|
53
|
+
map[dto] = lambda do |r, i|
|
47
54
|
if v = r.getDateTimeOffset(i)
|
48
55
|
to_application_timestamp(v.to_s)
|
49
56
|
end
|
data/lib/sequel/adapters/mock.rb
CHANGED
@@ -321,6 +321,7 @@ module Sequel
|
|
321
321
|
|
322
322
|
# Override the databases's autoid setting for this dataset
|
323
323
|
def autoid=(v)
|
324
|
+
Sequel::Deprecation.deprecate("Sequel::Mock::Dataset#autoid=", "Use with_autoid to return a modified dataset")
|
324
325
|
cache_set(:_autoid, nil)
|
325
326
|
@opts[:autoid] = v
|
326
327
|
end
|
@@ -332,6 +333,7 @@ module Sequel
|
|
332
333
|
|
333
334
|
# Override the databases's fetch setting for this dataset
|
334
335
|
def _fetch=(v)
|
336
|
+
Sequel::Deprecation.deprecate("Sequel::Mock::Dataset#_fetch=", "Use with_fetch to return a modified dataset")
|
335
337
|
cache_set(:_fetch, nil)
|
336
338
|
@opts[:fetch] = v
|
337
339
|
end
|
@@ -343,6 +345,7 @@ module Sequel
|
|
343
345
|
|
344
346
|
# Override the databases's numrows setting for this dataset
|
345
347
|
def numrows=(v)
|
348
|
+
Sequel::Deprecation.deprecate("Sequel::Mock::Dataset#_numrows=", "Use with_numrows to return a modified dataset")
|
346
349
|
cache_set(:_numrows, nil)
|
347
350
|
@opts[:numrows] = v
|
348
351
|
end
|