rom-sql 3.0.1 → 3.3.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +428 -297
- data/LICENSE +20 -0
- data/README.md +14 -56
- data/lib/rom-sql.rb +2 -0
- data/lib/rom/plugins/relation/sql/auto_restrictions.rb +2 -0
- data/lib/rom/plugins/relation/sql/instrumentation.rb +2 -0
- data/lib/rom/plugins/relation/sql/postgres/explain.rb +6 -7
- data/lib/rom/plugins/relation/sql/postgres/full_text_search.rb +53 -0
- data/lib/rom/plugins/relation/sql/postgres/streaming.rb +97 -0
- data/lib/rom/sql.rb +2 -0
- data/lib/rom/sql/associations.rb +2 -0
- data/lib/rom/sql/associations/core.rb +10 -0
- data/lib/rom/sql/associations/many_to_many.rb +3 -1
- data/lib/rom/sql/associations/many_to_one.rb +2 -0
- data/lib/rom/sql/associations/one_to_many.rb +2 -0
- data/lib/rom/sql/associations/one_to_one.rb +2 -0
- data/lib/rom/sql/associations/one_to_one_through.rb +2 -0
- data/lib/rom/sql/associations/self_ref.rb +2 -0
- data/lib/rom/sql/attribute.rb +31 -22
- data/lib/rom/sql/attribute_aliasing.rb +88 -0
- data/lib/rom/sql/attribute_wrapping.rb +30 -0
- data/lib/rom/sql/commands.rb +2 -0
- data/lib/rom/sql/commands/create.rb +2 -0
- data/lib/rom/sql/commands/delete.rb +2 -0
- data/lib/rom/sql/commands/error_wrapper.rb +2 -0
- data/lib/rom/sql/commands/update.rb +2 -0
- data/lib/rom/sql/dsl.rb +11 -3
- data/lib/rom/sql/error.rb +2 -0
- data/lib/rom/sql/errors.rb +2 -0
- data/lib/rom/sql/extensions.rb +2 -0
- data/lib/rom/sql/extensions/active_support_notifications.rb +2 -0
- data/lib/rom/sql/extensions/mysql.rb +2 -0
- data/lib/rom/sql/extensions/mysql/type_builder.rb +2 -0
- data/lib/rom/sql/extensions/postgres.rb +3 -0
- data/lib/rom/sql/extensions/postgres/commands.rb +3 -1
- data/lib/rom/sql/extensions/postgres/type_builder.rb +6 -4
- data/lib/rom/sql/extensions/postgres/type_serializer.rb +2 -0
- data/lib/rom/sql/extensions/postgres/types.rb +2 -0
- data/lib/rom/sql/extensions/postgres/types/array.rb +7 -6
- data/lib/rom/sql/extensions/postgres/types/array_types.rb +3 -1
- data/lib/rom/sql/extensions/postgres/types/geometric.rb +2 -0
- data/lib/rom/sql/extensions/postgres/types/json.rb +76 -19
- data/lib/rom/sql/extensions/postgres/types/ltree.rb +25 -23
- data/lib/rom/sql/extensions/postgres/types/network.rb +2 -0
- data/lib/rom/sql/extensions/postgres/types/range.rb +2 -0
- data/lib/rom/sql/extensions/rails_log_subscriber.rb +2 -0
- data/lib/rom/sql/extensions/sqlite.rb +2 -0
- data/lib/rom/sql/extensions/sqlite/type_builder.rb +2 -0
- data/lib/rom/sql/extensions/sqlite/types.rb +2 -0
- data/lib/rom/sql/foreign_key.rb +3 -1
- data/lib/rom/sql/function.rb +38 -6
- data/lib/rom/sql/gateway.rb +9 -1
- data/lib/rom/sql/group_dsl.rb +2 -0
- data/lib/rom/sql/index.rb +2 -0
- data/lib/rom/sql/join_dsl.rb +2 -0
- data/lib/rom/sql/mapper_compiler.rb +12 -1
- data/lib/rom/sql/migration.rb +5 -3
- data/lib/rom/sql/migration/inline_runner.rb +2 -0
- data/lib/rom/sql/migration/migrator.rb +4 -2
- data/lib/rom/sql/migration/recorder.rb +2 -0
- data/lib/rom/sql/migration/runner.rb +4 -2
- data/lib/rom/sql/migration/schema_diff.rb +2 -0
- data/lib/rom/sql/migration/template.rb +2 -0
- data/lib/rom/sql/migration/writer.rb +12 -4
- data/lib/rom/sql/order_dsl.rb +2 -0
- data/lib/rom/sql/plugin/associates.rb +4 -2
- data/lib/rom/sql/plugin/nullify.rb +37 -0
- data/lib/rom/sql/plugin/pagination.rb +2 -0
- data/lib/rom/sql/plugins.rb +4 -0
- data/lib/rom/sql/projection_dsl.rb +3 -1
- data/lib/rom/sql/rake_task.rb +2 -0
- data/lib/rom/sql/relation.rb +3 -1
- data/lib/rom/sql/relation/reading.rb +32 -6
- data/lib/rom/sql/relation/writing.rb +2 -0
- data/lib/rom/sql/restriction_dsl.rb +9 -1
- data/lib/rom/sql/schema.rb +16 -2
- data/lib/rom/sql/schema/attributes_inferrer.rb +5 -3
- data/lib/rom/sql/schema/dsl.rb +3 -1
- data/lib/rom/sql/schema/index_dsl.rb +5 -2
- data/lib/rom/sql/schema/inferrer.rb +12 -8
- data/lib/rom/sql/schema/type_builder.rb +4 -2
- data/lib/rom/sql/spec/support.rb +5 -3
- data/lib/rom/sql/tasks/migration_tasks.rake +16 -11
- data/lib/rom/sql/transaction.rb +2 -0
- data/lib/rom/sql/type_dsl.rb +2 -0
- data/lib/rom/sql/type_extensions.rb +4 -4
- data/lib/rom/sql/type_serializer.rb +2 -0
- data/lib/rom/sql/types.rb +2 -0
- data/lib/rom/sql/version.rb +3 -1
- data/lib/rom/sql/wrap.rb +2 -0
- data/lib/rom/types/values.rb +2 -0
- metadata +34 -32
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ddc33a4e8bd74212636e3c07be5ee12ab1e8947d4e5f76a3981c31c577140697
|
|
4
|
+
data.tar.gz: '097637bec7bac21c61128ed798ae0038e7f19ffed9579e89d596243f4b3f8bc0'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 279b99442b0b5b6434c2d5cbf9817e1e04b62897cdf485cbbc1164259336d47bf621e98a2b2a5f648d61ef0e0fa7f5c9f7dfcec2b448f33db49f41b1e1295352
|
|
7
|
+
data.tar.gz: 466bbb815b90464ada9de31e040e36d91e75c9a34d9d36d8bb85f639fc1808318d87ab91e037bf0ee69a03433a4326ef6640eda323b6bceaf5b0f473cbffa4e6
|
data/CHANGELOG.md
CHANGED
|
@@ -1,16 +1,102 @@
|
|
|
1
|
+
<!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
|
|
2
|
+
|
|
3
|
+
## 3.3.2 2020-01-06
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Fixed
|
|
7
|
+
|
|
8
|
+
- Function qualification methods no longer lose options (issue #390 fixed via #391) (@solnic)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
[Compare v3.3.1...v3.3.2](https://github.com/rom-rb/rom-sql/compare/v3.3.1...v3.3.2)
|
|
12
|
+
|
|
13
|
+
## 3.3.1 2020-12-29
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- `:pg_streaming` plugin no longer crashes when there's no sequel_pg and now you need to require the plugin explicitly (@solnic)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
[Compare v3.3.0...v3.3.1](https://github.com/rom-rb/rom-sql/compare/v3.3.0...v3.3.1)
|
|
22
|
+
|
|
23
|
+
## 3.3.0 2020-12-28
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- `Relation#full_text_search` that provides an API for [PostgreSQL's Full Text Search](https://www.postgresql.org/docs/9.5/textsearch.html) (@ianks)
|
|
29
|
+
|
|
30
|
+
```ruby
|
|
31
|
+
# Don't forget to activate the plugin
|
|
32
|
+
conf.plugin(:sql, relations: :pg_full_text_search)
|
|
33
|
+
|
|
34
|
+
posts.full_text_search([:title], 'tutorials', language: 'english')
|
|
35
|
+
# => [{ title: 'A Tutorial about SQL', ... }]
|
|
36
|
+
```
|
|
37
|
+
- Support for `:pg_streaming` extension (@ianks)
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
|
|
41
|
+
- `Relation#join` no longer crashes when aliased relation is used with a block (issue #369) (@abrthel)
|
|
42
|
+
- Attributes aliases are properly handled when constructing queries with SQL functions (issue #370 fixed via #373) (@abrthel)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
[Compare v3.2.0...v3.3.0](https://github.com/rom-rb/rom-sql/compare/v3.2.0...v3.3.0)
|
|
46
|
+
|
|
47
|
+
## 3.2.0 2020-01-11
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### Fixed
|
|
51
|
+
|
|
52
|
+
- Keyword warnings on Ruby 2.7 (@flash-gordon)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
[Compare v3.1.0...v3.2.0](https://github.com/rom-rb/rom-sql/compare/v3.1.0...v3.2.0)
|
|
56
|
+
|
|
57
|
+
## 3.1.0 2019-12-16
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
### Added
|
|
61
|
+
|
|
62
|
+
- `.nullify` that turns the result set of any relation into an empty set. Analogue of `ActiveRecord#none` (@ianks + @flash-gordon)
|
|
63
|
+
|
|
64
|
+
```ruby
|
|
65
|
+
# Don't forget to activate the plugin
|
|
66
|
+
conf.relation(:users) do
|
|
67
|
+
use :nullify
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
users.nullify.count # => will always be 0
|
|
71
|
+
users.nullify.to_a # => will always be empty ([])
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Fixed
|
|
75
|
+
|
|
76
|
+
- Make `Relation#wrap` respect association views (@ianks)
|
|
77
|
+
- Primitive JSON-compatible values such as Integer and String are automatically coerced to correct JSONB values and back if you're using a recent Sequel version (>= 5.2.0) (@flash-gordon)
|
|
78
|
+
- Properly qualify relations when in `Relation#union` (@ianks)
|
|
79
|
+
- `Relation#query` no longer removes order in the relation (@DNNX)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
[Compare v3.0.1...v3.1.0](https://github.com/rom-rb/rom-sql/compare/v3.0.1...v3.1.0)
|
|
83
|
+
|
|
1
84
|
## 3.0.1 2019-05-05
|
|
2
85
|
|
|
86
|
+
|
|
3
87
|
### Fixed
|
|
4
88
|
|
|
5
|
-
|
|
89
|
+
- Using joins with a relation object as the target and a block-based conditions produces correct query now (issue #331) (solnic)
|
|
90
|
+
|
|
6
91
|
|
|
7
92
|
[Compare v3.0.0...v3.0.1](https://github.com/rom-rb/rom-sql/compare/v3.0.0...v3.0.1)
|
|
8
93
|
|
|
9
94
|
## 3.0.0 2019-04-24
|
|
10
95
|
|
|
96
|
+
|
|
11
97
|
### Added
|
|
12
98
|
|
|
13
|
-
|
|
99
|
+
- Join DSL so that you can use arbitrary conditions when joining relations (flash-gordon)
|
|
14
100
|
```ruby
|
|
15
101
|
users.join(tasks) { |users:, tasks:|
|
|
16
102
|
tasks[:user_id].is(users[:id]) & users[:name].is('John')
|
|
@@ -24,7 +110,8 @@
|
|
|
24
110
|
users[:id].is(authors[:id])
|
|
25
111
|
}.select(:name)
|
|
26
112
|
```
|
|
27
|
-
|
|
113
|
+
- Support for `CASE` expression (wmaciejak + flash-gordon)
|
|
114
|
+
|
|
28
115
|
```ruby
|
|
29
116
|
# matching expression result
|
|
30
117
|
users.select_append { id.case(1 => string('one'), else: string('something else')).as(:one_or_else) }
|
|
@@ -32,129 +119,137 @@
|
|
|
32
119
|
# searching for `true` result
|
|
33
120
|
users.select_append { string::case(id.is(1) => 'one', else: 'else').as(:one_or_else) }
|
|
34
121
|
```
|
|
35
|
-
|
|
122
|
+
- Relations can be accessed in DSLs with keyword arguments (flash-gordon)
|
|
36
123
|
```ruby
|
|
37
124
|
users.join(posts).select_append { |posts: | posts[:title] }
|
|
38
125
|
```
|
|
39
|
-
|
|
126
|
+
- Support for `.exists` in the projection DSL (flash-gordon)
|
|
40
127
|
```ruby
|
|
41
128
|
users.select_append { |posts: |
|
|
42
129
|
exists(posts.where(posts[:user_id] => id)).as(:has_posts)
|
|
43
130
|
}
|
|
44
131
|
```
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
```ruby
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
### Changed
|
|
57
|
-
|
|
58
|
-
* [BREAKING] Updated to work with `dry-types 1.0.0` (flash-gordon)
|
|
59
|
-
* [BREAKING] `Types::Int` is now `Types::Integer` (GustavoCaso)
|
|
132
|
+
- `Relation#unfiltered` returns an unrestricted relation (removes restrictions from `WHERE` and `HAVING`) (flash-gordon)
|
|
133
|
+
- Support for `WITHIN GROUP` in the function DSL has been enhanced with block syntax (flash-gordon)
|
|
134
|
+
- ```ruby
|
|
135
|
+
- # previously available version
|
|
136
|
+
- households.project { float::percentile_cont(0.5).within_group(income).as(:percentile) }
|
|
137
|
+
- # using the new syntax
|
|
138
|
+
- households.project { float::percentile_cont(0.5).within_group { income }.as(:percentile) }
|
|
139
|
+
- ```
|
|
140
|
+
- Support for migrator options ie `ROM::Configuration.new(:sql, migrator: { path: "my_migrations" })` (rawburt)
|
|
141
|
+
- `Relation#pluck` works with multiple args too (timriley)
|
|
60
142
|
|
|
61
143
|
### Fixed
|
|
62
144
|
|
|
63
145
|
- Using `Relation#inner_join` with has-many-through produces correct query (issue #279) (doriantaylor + solnic)
|
|
64
146
|
- Aliased attributes are handled correctly in `Relation#where` (waiting-for-dev)
|
|
65
147
|
|
|
148
|
+
### Changed
|
|
149
|
+
|
|
150
|
+
- [BREAKING] Updated to work with `dry-types 1.0.0` (flash-gordon)
|
|
151
|
+
- [BREAKING] `Types::Int` is now `Types::Integer` (GustavoCaso)
|
|
152
|
+
|
|
66
153
|
[Compare v2.5.0...v3.0.0](https://github.com/rom-rb/rom-sql/compare/v2.5.0...v3.0.0)
|
|
67
154
|
|
|
68
|
-
##
|
|
155
|
+
## 2.5.0 2018-06-08
|
|
156
|
+
|
|
69
157
|
|
|
70
158
|
### Added
|
|
71
159
|
|
|
72
|
-
|
|
160
|
+
- Support for subqueries in `SELECT` and `WHERE` :tada: (flash-gordon)
|
|
73
161
|
```ruby
|
|
74
162
|
tasks = relations[:tasks]
|
|
75
163
|
users = relations[:users]
|
|
76
164
|
user_tasks = tasks.where(tasks[:user_id].is(users[:id])
|
|
77
|
-
tasks_count = user_tasks.select { integer::count(id) }
|
|
165
|
+
tasks_count = user_tasks.select { integer::count(id) }.query
|
|
78
166
|
users.select_append(tasks_count.as(:tasks_count))
|
|
79
167
|
```
|
|
80
168
|
|
|
169
|
+
|
|
81
170
|
[Compare v2.4.0...v2.5.0](https://github.com/rom-rb/rom-sql/compare/v2.4.0...v2.5.0)
|
|
82
171
|
|
|
83
|
-
##
|
|
172
|
+
## 2.4.0 2018-02-18
|
|
173
|
+
|
|
84
174
|
|
|
85
175
|
### Added
|
|
86
176
|
|
|
87
|
-
|
|
88
|
-
|
|
177
|
+
- Support for functions with `Any` return type (GustavoCaso)
|
|
178
|
+
- New `Relation#as_hash` method (GustavoCaso)
|
|
179
|
+
|
|
89
180
|
|
|
90
181
|
[Compare v2.3.0...v2.4.0](https://github.com/rom-rb/rom-sql/compare/v2.3.0...v2.4.0)
|
|
91
182
|
|
|
92
|
-
##
|
|
183
|
+
## 2.3.0 2017-11-17
|
|
184
|
+
|
|
93
185
|
|
|
94
186
|
### Added
|
|
95
187
|
|
|
96
|
-
|
|
97
|
-
|
|
188
|
+
- Command's `:timestamp` plugin now supports passing options (GustavoCaso)
|
|
189
|
+
- Configuration supports hash with connection options (Kjarrigan + solnic)
|
|
98
190
|
|
|
99
191
|
### Fixed
|
|
100
192
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
### Internal
|
|
193
|
+
- Aliased attributes are handled correctly in PG's commands (cflipse)
|
|
194
|
+
- Command extensions are properly applied in multi-adapter setups (solnic)
|
|
105
195
|
|
|
106
|
-
* Custom SQL-specific mapper compiler was added, which is used starting from rom-core 4.1.0 (solnic)
|
|
107
|
-
* Command's `:timestamp` plugin was removed, as it was moved to rom-core (GustavoCaso)
|
|
108
196
|
|
|
109
197
|
[Compare v2.2.1...v2.3.0](https://github.com/rom-rb/rom-sql/compare/v2.2.1...v2.3.0)
|
|
110
198
|
|
|
111
|
-
##
|
|
199
|
+
## 2.2.1 2017-11-10
|
|
200
|
+
|
|
112
201
|
|
|
113
202
|
### Fixed
|
|
114
203
|
|
|
115
|
-
|
|
116
|
-
|
|
204
|
+
- Instrumentation works with all db interactions (not just queries that materialize relations) (solnic)
|
|
205
|
+
- Typo in `MissingEnv` exception message (romatr)
|
|
206
|
+
|
|
117
207
|
|
|
118
208
|
[Compare v2.2.0...v2.2.1](https://github.com/rom-rb/rom-sql/compare/v2.2.0...v2.2.1)
|
|
119
209
|
|
|
120
|
-
##
|
|
210
|
+
## 2.2.0 2017-11-02
|
|
211
|
+
|
|
121
212
|
|
|
122
213
|
### Added
|
|
123
214
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
215
|
+
- Relation registry is passed as an argument to DSL blocks (in `select`, `where`, `order` etc.), which enables syntax like `select { |r| [id, r.tasks[:title]] }` (solnic)
|
|
216
|
+
- Support for self-referenced many-to-many associations (solnic)
|
|
217
|
+
- PG's geometric types include meta data about db types (GustavoCaso)
|
|
127
218
|
|
|
128
219
|
### Fixed
|
|
129
220
|
|
|
130
|
-
|
|
131
|
-
|
|
221
|
+
- Custom schema is used correctly in command results (solnic)
|
|
222
|
+
- Schemas no longer finalize PKs (this is done in core schema already) (solnic)
|
|
223
|
+
|
|
132
224
|
|
|
133
225
|
[Compare v2.1.0...v2.2.0](https://github.com/rom-rb/rom-sql/compare/v2.1.0...v2.2.0)
|
|
134
226
|
|
|
135
|
-
##
|
|
227
|
+
## 2.1.0 2017-10-23
|
|
228
|
+
|
|
136
229
|
|
|
137
230
|
### Added
|
|
138
231
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
232
|
+
- Support for PG's range types (v-kolesnikov)
|
|
233
|
+
- Support for PG's `ltree` (GustavoCaso + solnic)
|
|
234
|
+
- Support for the `FILTER` clause (flash-gordon)
|
|
235
|
+
- PG's array types will use custom types for processing members ie `ltree[]` will use `LTree` type (solnic)
|
|
143
236
|
|
|
144
237
|
### Fixed
|
|
145
238
|
|
|
146
|
-
|
|
147
|
-
|
|
239
|
+
- Schema inference works with primary keys that have custom types (ie an enum PK column) (v-kolesnikov)
|
|
240
|
+
- Ruby warnings are gone (solnic)
|
|
241
|
+
|
|
148
242
|
|
|
149
243
|
[Compare v2.0.0...v2.1.0](https://github.com/rom-rb/rom-sql/compare/v2.0.0...v2.1.0)
|
|
150
244
|
|
|
151
|
-
##
|
|
245
|
+
## 2.0.0 2017-10-18
|
|
246
|
+
|
|
152
247
|
|
|
153
248
|
### Added
|
|
154
249
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
250
|
+
- Support for schema plugins (flash-gordon)
|
|
251
|
+
- Support for auto migrations (flash-gordon)
|
|
252
|
+
- Add DLS for describing table indexes (flash-gordon)
|
|
158
253
|
|
|
159
254
|
```ruby
|
|
160
255
|
schema do
|
|
@@ -166,28 +261,24 @@
|
|
|
166
261
|
end
|
|
167
262
|
end
|
|
168
263
|
```
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
* `SQL::Gateway#call` calls a SQL function (flash-gordon)
|
|
264
|
+
- Support for composite indexes in the auto-restrictions plugin (flash-gordon)
|
|
265
|
+
- `SQL::Gateway#call` calls a SQL function (flash-gordon)
|
|
172
266
|
|
|
173
267
|
```ruby
|
|
174
268
|
gateway.(:upper, 'foo') # => "FOO"
|
|
175
269
|
gateway.(:pg_advisory_xact_lock, 1234) # => nil
|
|
176
270
|
```
|
|
177
|
-
|
|
178
|
-
* `SQL::Gateway#run` executes a SQL string, e.g. a DDL statement (flash-gordon)
|
|
271
|
+
- `SQL::Gateway#run` executes a SQL string, e.g. a DDL statement (flash-gordon)
|
|
179
272
|
|
|
180
273
|
```ruby
|
|
181
274
|
gateway.run('set session IntervalStyle to default')
|
|
182
275
|
```
|
|
183
|
-
|
|
184
|
-
* `SQL::Relation#exists` joins a relation with the `EXISTS` operator (flash-gordon)
|
|
276
|
+
- `SQL::Relation#exists` joins a relation with the `EXISTS` operator (flash-gordon)
|
|
185
277
|
|
|
186
278
|
```ruby
|
|
187
279
|
users.exists(posts) # => users with posts
|
|
188
280
|
```
|
|
189
|
-
|
|
190
|
-
* Support for processing a relation in batches (flash-gordon)
|
|
281
|
+
- Support for processing a relation in batches (flash-gordon)
|
|
191
282
|
|
|
192
283
|
```ruby
|
|
193
284
|
users.each_batch(size: 100) do |rel|
|
|
@@ -196,69 +287,64 @@
|
|
|
196
287
|
call(name: users[:first_name].concat(users[:last_name])
|
|
197
288
|
end
|
|
198
289
|
```
|
|
199
|
-
|
|
200
|
-
* `SQL::Relation#import` inserts data from another relation using the `INSERT ... AS SELECT` syntax which is often far more effective than row-by-row processing and an ordinary multi-insert. Relations defined on another gateway are also supported, and in this case, the implementation falls back to the multi-insert strategy (flash-gordon)
|
|
290
|
+
- `SQL::Relation#import` inserts data from another relation using the `INSERT ... AS SELECT` syntax which is often far more effective than row-by-row processing and an ordinary multi-insert. Relations defined on another gateway are also supported, and in this case, the implementation falls back to the multi-insert strategy (flash-gordon)
|
|
201
291
|
|
|
202
292
|
```ruby
|
|
203
293
|
users.import(authors.select { first_name.concat(last_name).as(:name) })
|
|
204
294
|
```
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
* The new `pg_explain` plugin for getting query plans on PostgreSQL (flash-gordon)
|
|
295
|
+
- Support for `tinytext`, `text`, `mediumtext`, and `longtext data types in MySQL (panthomakos)
|
|
296
|
+
- The new `pg_explain` plugin for getting query plans on PostgreSQL (flash-gordon)
|
|
208
297
|
|
|
209
298
|
```ruby
|
|
210
299
|
users.by_pk(1).explain(format: :json, analyze: true)
|
|
211
300
|
```
|
|
212
|
-
|
|
213
|
-
* Support for window function calls
|
|
301
|
+
- Support for window function calls
|
|
214
302
|
|
|
215
303
|
```ruby
|
|
216
304
|
employees.select { [dep_no, salary, integer::avg(salary).over(partition: dep_no, order: id).as(:avg_salary)] }
|
|
217
305
|
```
|
|
218
|
-
|
|
219
|
-
* Function result can be negated, also `ROM::SQL::Function#not` was added (flash-gordon)
|
|
306
|
+
- Function result can be negated, also `ROM::SQL::Function#not` was added (flash-gordon)
|
|
220
307
|
|
|
221
308
|
```ruby
|
|
222
309
|
users.where { !lower(name).is('John') }
|
|
223
310
|
users.where { lower(name).not('John') }
|
|
224
311
|
```
|
|
225
312
|
|
|
313
|
+
### Fixed
|
|
226
314
|
|
|
227
|
-
|
|
315
|
+
- Self-ref associations work correctly with custom FKs (solnic)
|
|
316
|
+
- Aliased associations with custom FKs work correctly (solnic)
|
|
317
|
+
- Defining a custom dataset block no longer prevents default views like `by_pk` to be defined (solnic)
|
|
318
|
+
- `Relation#group` uses canonical schema now (solnic)
|
|
228
319
|
|
|
229
|
-
|
|
230
|
-
* [BREAKING] `Associates` command plugin requires associations now (solnic)
|
|
231
|
-
* [BREAKING] `Command#transaction` is gone in favor of `Relation#transaction` (solnic)
|
|
232
|
-
* [BREAKING] `PG::JSONArray`, `PG::JSONBArray`, `PG::JSONHash`, and `PG::JSONBHash` types were dropped, use `PG::JSON` and `PG::JSONB` instead (flash-gordon)
|
|
233
|
-
* [BREAKING] The `pg_hstore` extension now doesn't get loaded automatically, use the `:extension` option to load it on config initialization (flash-gordon)
|
|
234
|
-
* `ManyToOne` no longer uses a join (solnic)
|
|
235
|
-
* `AutoCombine` and `AutoWrap` plugins were removed as this functionality is provided by core API (solnic)
|
|
236
|
-
* Foreign keys are indexed by default (flash-gordon)
|
|
237
|
-
* Schemas are qualified by default (solnic)
|
|
238
|
-
* `PG::JSON`, `PG::JSONB`, and `PG::Array` now all have read types so that they return plain Hash/Array values instead of Sequel's wrappers (flash-gordon)
|
|
320
|
+
### Changed
|
|
239
321
|
|
|
240
|
-
|
|
322
|
+
- [BREAKING] based on rom 4.0 now (flash-gordon + solnic)
|
|
323
|
+
- [BREAKING] `Associates` command plugin requires associations now (solnic)
|
|
324
|
+
- [BREAKING] `Command#transaction` is gone in favor of `Relation#transaction` (solnic)
|
|
325
|
+
- [BREAKING] `PG::JSONArray`, `PG::JSONBArray`, `PG::JSONHash`, and `PG::JSONBHash` types were dropped, use `PG::JSON` and `PG::JSONB` instead (flash-gordon)
|
|
326
|
+
- [BREAKING] The `pg_hstore` extension now doesn't get loaded automatically, use the `:extension` option to load it on config initialization (flash-gordon)
|
|
327
|
+
- `ManyToOne` no longer uses a join (solnic)
|
|
328
|
+
- `AutoCombine` and `AutoWrap` plugins were removed as this functionality is provided by core API (solnic)
|
|
329
|
+
- Foreign keys are indexed by default (flash-gordon)
|
|
330
|
+
- Schemas are qualified by default (solnic)
|
|
331
|
+
- `PG::JSON`, `PG::JSONB`, and `PG::Array` now all have read types so that they return plain Hash/Array values instead of Sequel's wrappers (flash-gordon)
|
|
241
332
|
|
|
242
|
-
|
|
243
|
-
* Aliased associations with custom FKs work correctly (solnic)
|
|
244
|
-
* Defining a custom dataset block no longer prevents default views like `by_pk` to be defined (solnic)
|
|
245
|
-
* `Relation#group` uses canonical schema now (solnic)
|
|
333
|
+
[Compare v1.3.3...v2.0.0](https://github.com/rom-rb/rom-sql/compare/v1.3.3...v2.0.0)
|
|
246
334
|
|
|
247
|
-
|
|
335
|
+
## 1.3.3 2017-05-30
|
|
248
336
|
|
|
249
|
-
## v1.3.3 2017-05-30
|
|
250
337
|
|
|
251
338
|
### Added
|
|
252
339
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
340
|
+
- `Relation#lock`, row-level locking using the `SELECT FOR UPDATE` clause (flash-gordon)
|
|
341
|
+
- `get` and `get_text` methods for the `PG::JSON` type (flash-gordon)
|
|
342
|
+
- Support for converting data type with `CAST` using the function DSL (flash-gordon)
|
|
256
343
|
|
|
257
344
|
```ruby
|
|
258
345
|
users.select { string::cast(id, 'varchar').as(:id_str) }
|
|
259
346
|
```
|
|
260
|
-
|
|
261
|
-
* Support for`EXISTS` (v-kolesnikov)
|
|
347
|
+
- Support for`EXISTS` (v-kolesnikov)
|
|
262
348
|
|
|
263
349
|
```ruby
|
|
264
350
|
subquery = tasks.where(tasks[:user_id].qualified => users[:id].qualified)
|
|
@@ -267,52 +353,57 @@
|
|
|
267
353
|
|
|
268
354
|
### Fixed
|
|
269
355
|
|
|
270
|
-
|
|
356
|
+
- Fixed a regression introduced in v1.3.2 caused by doing way more work processing the default dataset (flash-gordon)
|
|
357
|
+
|
|
271
358
|
|
|
272
359
|
[Compare v1.3.2...v1.3.3](https://github.com/rom-rb/rom-sql/compare/v1.3.2...v1.3.3)
|
|
273
360
|
|
|
274
|
-
##
|
|
361
|
+
## 1.3.2 2017-05-13
|
|
362
|
+
|
|
275
363
|
|
|
276
364
|
### Added
|
|
277
365
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
366
|
+
- Support for filtering with a SQL function in the `WHERE` clause. Be sure you're using it wisely and don't call it on large datasets ;) (flash-gordon)
|
|
367
|
+
- `Void` type for calling functions without returning value (flash-gordon)
|
|
368
|
+
- Support for [`PG::Array` transformations and queries](https://github.com/rom-rb/rom-sql/blob/15019a40e2cf2a224476184c4cddab4062a2cc01/lib/rom/sql/extensions/postgres/types.rb#L23-L148) (flash-gordon)
|
|
281
369
|
|
|
282
370
|
### Fixed
|
|
283
371
|
|
|
284
|
-
|
|
372
|
+
- A bunch of warnings from Sequel 4.46
|
|
373
|
+
|
|
285
374
|
|
|
286
375
|
[Compare v1.3.1...v1.3.2](https://github.com/rom-rb/rom-sql/compare/v1.3.1...v1.3.2)
|
|
287
376
|
|
|
288
|
-
##
|
|
377
|
+
## 1.3.1 2017-05-05
|
|
378
|
+
|
|
289
379
|
|
|
290
380
|
### Changed
|
|
291
381
|
|
|
292
|
-
|
|
382
|
+
- [internal] Compatibility with `dry-core` v0.3.0 (flash-gordon)
|
|
293
383
|
|
|
294
384
|
[Compare v1.3.0...v1.3.1](https://github.com/rom-rb/rom-sql/compare/v1.3.0...v1.3.1)
|
|
295
385
|
|
|
296
|
-
##
|
|
386
|
+
## 1.3.0 2017-05-02
|
|
387
|
+
|
|
297
388
|
|
|
298
389
|
### Added
|
|
299
390
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
391
|
+
- New `Relation#exist?` predicate checks if the relation has at least one tuple (flash-gordon)
|
|
392
|
+
- Support for [JSONB transformations and queries](https://github.com/rom-rb/rom-sql/blob/15019a40e2cf2a224476184c4cddab4062a2cc01/lib/rom/sql/extensions/postgres/types.rb#L170-L353) using native DSL (flash-gordon)
|
|
393
|
+
- Add `ROM::SQL::Attribute#not` for negated boolean equality expressions (AMHOL)
|
|
394
|
+
- Add `ROM::SQL::Attribute#!` for negated attribute's sql expressions (solnic)
|
|
395
|
+
- Inferrer gets limit constraints for string data types and stores them in type's meta (v-kolesnikov)
|
|
305
396
|
|
|
306
397
|
### Fixed
|
|
307
398
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
399
|
+
- Fixed usage of PostgreSQL's commands with a composite relation (flash-gordon)
|
|
400
|
+
- Translation of `true/false/nil` equality checks to `is/is not` SQL statements in `ROM::SQL::Attribute#is` (AMHOL)
|
|
401
|
+
- `associates` command plugin coerces parent collections to hashes correctly (aarek+solnic)
|
|
402
|
+
- `by_pk` works correctly even when PK is not projected (solnic)
|
|
312
403
|
|
|
313
404
|
### Changed
|
|
314
405
|
|
|
315
|
-
|
|
406
|
+
- Global private interface `SQL::Gateway.instance` has been deprecated. Now if you run migrations
|
|
316
407
|
with ROM you should set up a ROM config in the `db:setup` task with something similar to
|
|
317
408
|
|
|
318
409
|
```ruby
|
|
@@ -325,410 +416,450 @@
|
|
|
325
416
|
|
|
326
417
|
[Compare v1.2.2...v1.3.0](https://github.com/rom-rb/rom-sql/compare/v1.2.2...v1.3.0)
|
|
327
418
|
|
|
328
|
-
##
|
|
419
|
+
## 1.2.2 2017-03-25
|
|
420
|
+
|
|
329
421
|
|
|
330
422
|
### Changed
|
|
331
423
|
|
|
332
|
-
|
|
424
|
+
- Updated `dry-initializer` (flash-gordon)
|
|
333
425
|
|
|
334
426
|
[Compare v1.2.1...v1.2.2](https://github.com/rom-rb/rom-sql/compare/v1.2.1...v1.2.2)
|
|
335
427
|
|
|
336
|
-
##
|
|
428
|
+
## 1.2.1 2017-03-09
|
|
429
|
+
|
|
337
430
|
|
|
338
431
|
### Fixed
|
|
339
432
|
|
|
340
|
-
|
|
433
|
+
- Allow for joining by a `RelationProxy` instance from `rom-repository` (davydovanton)
|
|
434
|
+
|
|
341
435
|
|
|
342
436
|
[Compare v1.2.0...v1.2.1](https://github.com/rom-rb/rom-sql/compare/v1.2.0...v1.2.1)
|
|
343
437
|
|
|
344
|
-
##
|
|
438
|
+
## 1.2.0 2017-03-07
|
|
439
|
+
|
|
345
440
|
|
|
346
441
|
### Added
|
|
347
442
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
443
|
+
- Support for configuring multiple associations for a command (solnic)
|
|
444
|
+
- Support for passing parent tuple(s) as `parent` option in `Command#with_association` (solnic)
|
|
445
|
+
- Support for join using assocation name (flash-gordon)
|
|
446
|
+
|
|
351
447
|
|
|
352
448
|
[Compare v1.1.2...v1.2.0](https://github.com/rom-rb/rom-sql/compare/v1.1.2...v1.2.0)
|
|
353
449
|
|
|
354
|
-
##
|
|
450
|
+
## 1.1.2 2017-03-02
|
|
451
|
+
|
|
355
452
|
|
|
356
453
|
### Fixed
|
|
357
454
|
|
|
358
|
-
|
|
455
|
+
- Fix grouping by a function in the block DSL (flash-gordon)
|
|
456
|
+
|
|
359
457
|
|
|
360
458
|
[Compare v1.1.1...v1.1.2](https://github.com/rom-rb/rom-sql/compare/v1.1.1...v1.1.2)
|
|
361
459
|
|
|
362
|
-
##
|
|
460
|
+
## 1.1.1 2017-03-01
|
|
461
|
+
|
|
363
462
|
|
|
364
463
|
### Fixed
|
|
365
464
|
|
|
366
|
-
|
|
465
|
+
- Restriction conditions with an array as a value are handled correctly by attribute types (solnic)
|
|
466
|
+
|
|
367
467
|
|
|
368
468
|
[Compare v1.1.0...v1.1.1](https://github.com/rom-rb/rom-sql/compare/v1.1.0...v1.1.1)
|
|
369
469
|
|
|
370
|
-
##
|
|
470
|
+
## 1.1.0 2017-03-01
|
|
471
|
+
|
|
371
472
|
|
|
372
473
|
### Added
|
|
373
474
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
475
|
+
- Added inferring for database indices (flash-gordon)
|
|
476
|
+
- Restriction conditions are now coerced using schema attributes (solnic)
|
|
477
|
+
- `:instrumentation` relation plugin that can be configured with any instrumentation backend (solnic)
|
|
478
|
+
- `:auto_restrictions` relation plugin, which defines `by_*` views restricting relations by their indexed attributes (solnic)
|
|
378
479
|
|
|
379
480
|
### Fixed
|
|
380
481
|
|
|
381
|
-
|
|
382
|
-
|
|
482
|
+
- Missing `group` method was added to legacy `SequelAPI` module (solnic)
|
|
483
|
+
- Associations properly maintain `order` if it was set (solnic)
|
|
484
|
+
|
|
383
485
|
|
|
384
486
|
[Compare v1.0.3...v1.1.0](https://github.com/rom-rb/rom-sql/compare/v1.0.3...v1.1.0)
|
|
385
487
|
|
|
386
|
-
##
|
|
488
|
+
## 1.0.3 2017-02-23
|
|
387
489
|
|
|
388
|
-
### Changed
|
|
389
|
-
|
|
390
|
-
* `AutoCombine#preload` uses better restriction for `ManyToOne` association which greatly speeds up loading bigger amounts of data (solnic + flash-gordon)
|
|
391
490
|
|
|
392
491
|
### Fixed
|
|
393
492
|
|
|
394
|
-
|
|
493
|
+
- Fix the usage of timestamp in command chains (cflipse)
|
|
494
|
+
|
|
495
|
+
### Changed
|
|
496
|
+
|
|
497
|
+
- `AutoCombine#preload` uses better restriction for `ManyToOne` association which greatly speeds up loading bigger amounts of data (solnic + flash-gordon)
|
|
395
498
|
|
|
396
499
|
[Compare v1.0.2...v1.0.3](https://github.com/rom-rb/rom-sql/compare/v1.0.2...v1.0.3)
|
|
397
500
|
|
|
398
|
-
##
|
|
501
|
+
## 1.0.2 2017-02-16
|
|
502
|
+
|
|
399
503
|
|
|
400
504
|
### Added
|
|
401
505
|
|
|
402
|
-
|
|
506
|
+
- Support for selecting literal strings via `` select { `'foo'`.as(:bar) } `` (solnic)
|
|
507
|
+
|
|
403
508
|
|
|
404
509
|
[Compare v1.0.1...v1.0.2](https://github.com/rom-rb/rom-sql/compare/v1.0.1...v1.0.2)
|
|
405
510
|
|
|
406
|
-
##
|
|
511
|
+
## 1.0.1 2017-02-09
|
|
512
|
+
|
|
407
513
|
|
|
408
514
|
### Added
|
|
409
515
|
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
516
|
+
- Support for inferring the PostgreSQL `hstore` data type (flash-gordon)
|
|
517
|
+
- Support for the rest of geometric PostgreSQL data types (box, lseg, polygon, etc.) (Morozzzko)
|
|
518
|
+
- Added inferring for timestamp types with specified precision (flash-gordon)
|
|
519
|
+
- Added `ROM::SQL::Attribute#in` to support range checks in conditions (flash-gordon)
|
|
414
520
|
|
|
415
521
|
### Fixed
|
|
416
522
|
|
|
417
|
-
|
|
523
|
+
- Missing primary key now leads to a more meaningful error (flash-gordon)
|
|
418
524
|
|
|
419
|
-
[Compare v1.0.0...v1.0.1](https://github.com/rom-rb/rom-sql/compare/v1.0.0...v1.0.1)
|
|
420
525
|
|
|
421
|
-
|
|
526
|
+
[Compare v1.0.0...v1.0.1](https://github.com/rom-rb/rom-sql/compare/v1.0.0...v1.0.1)
|
|
422
527
|
|
|
423
|
-
|
|
528
|
+
## 1.0.0 2017-01-29
|
|
424
529
|
|
|
425
530
|
Please refer to [the upgrading guide](https://github.com/rom-rb/rom-sql/wiki/Upgrading-from-0.9.x-to-1.0.0) if you're moving from 0.9.x to 1.0.0.
|
|
426
531
|
|
|
427
532
|
### Added
|
|
428
533
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
534
|
+
- [BREAKING] All relations have schemas (inferred by default, but still possible to override and/or extend) (solnic)
|
|
535
|
+
- [BREAKING] Schemas are used when defining relation views (solnic)
|
|
536
|
+
- [BREAKING] Default dataset is set up based on schema (solnic)
|
|
537
|
+
- Extended query API with support for schema attributes (solnic)
|
|
538
|
+
- Schemas can project relations automatically (solnic)
|
|
539
|
+
- New `Schema#qualified` (solnic)
|
|
540
|
+
- New `Relation#assoc` method which is a shortcut for accessing relation created by the given association (solnic)
|
|
541
|
+
- Schema attribute types are now SQL-specific and compatible with query DSL (ie you can pass relation attributes to `select` and they will be automatically converted to valid SQL expressions) (solnic)
|
|
542
|
+
- Associations support setting custom `view` that will be used to extend association relation (solnic)
|
|
543
|
+
- Associations support setting custom `foreign_key` names (solnic)
|
|
544
|
+
- Update commands has `:associates` plugin enabled (solnic)
|
|
545
|
+
- Support for self-referencing associations (ie categories have_many child categories) (solnic)
|
|
546
|
+
- Inferrers for mysql and sqlite were added (flash-gordon)
|
|
547
|
+
- PG's auto-inferrer can handle `inet`/`cidr`/`point` data types in a two-way manner, i.e. converting them back and forth on reading and writing (flash-gordon)
|
|
548
|
+
- Support for inferring more PG types: `macaddr`, `xml` (flash-gordon)
|
|
549
|
+
- `ROM::SQL::Relation::SequelAPI` extension for backward-compatible query API (this will be deprecated in 1.1.0 and removed in 2.0.0) (solnic)
|
|
550
|
+
- Added `Object` type for `SQLite` which is used by the inferrer for columns without a type affinity (flash-gordon)
|
|
551
|
+
- Support for composite PKs in the default `by_pk` view (solnic)
|
|
447
552
|
|
|
448
553
|
### Changed
|
|
449
554
|
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
555
|
+
- [BREAKING] `Relation#header` has been removed in favor of schemas (solnic)
|
|
556
|
+
- [BREAKING] `Relation#base` has been removed as now a vanilla relation _is a base relation view_ (solnic)
|
|
557
|
+
- [BREAKING] Deprecated `Relation.primary_key` has been removed in favor of schema (solnic)
|
|
558
|
+
- [BREAKING] Deprecated `Commands::Update#change` has been removed (solnic)
|
|
559
|
+
- [BREAKING] Deprecated `Commands.validator` has been removed (solnic)
|
|
560
|
+
- [BREAKING] `assoc_macros` plugin has been removed, please use associations from now (solnic)
|
|
561
|
+
- Default `by_pk` uses schema attributes, it will raise exception if PK attribute is missing in the schema (solnic)
|
|
562
|
+
- [internal] Associations use schemas for relation projections (solnic)
|
|
563
|
+
- [internal] `select`, `select_append`, `project`, `inner_join` and `left_join` use schemas internally (solnic)
|
|
564
|
+
- [internal] Deprecation and constants are now based on dry-core (flash-gordon)
|
|
460
565
|
|
|
461
566
|
[Compare v0.9.1...v1.0.0](https://github.com/rom-rb/rom-sql/compare/v0.9.1...v1.0.0)
|
|
462
567
|
|
|
463
|
-
##
|
|
568
|
+
## 0.9.1 2016-12-23
|
|
569
|
+
|
|
464
570
|
|
|
465
571
|
### Added
|
|
466
572
|
|
|
467
|
-
|
|
468
|
-
|
|
573
|
+
- Support for PG enums in schema inferrer (flash-gordon)
|
|
574
|
+
- `ROM::SQL::Relation#read` method which accepts an SQL string and returns a new relation (solnic)
|
|
575
|
+
|
|
469
576
|
|
|
470
577
|
[Compare v0.9.0...v0.9.1](https://github.com/rom-rb/rom-sql/compare/v0.9.0...v0.9.1)
|
|
471
578
|
|
|
472
|
-
##
|
|
579
|
+
## 0.9.0 2016-11-08
|
|
580
|
+
|
|
473
581
|
|
|
474
582
|
### Added
|
|
475
583
|
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
584
|
+
- `Associations::{OneToMany,OneToOne}#associate` for merging FKs into child tuple (jodosha)
|
|
585
|
+
- Added support for PostgreSQL types: UUID, Array, JSONB and Money (jodosha)
|
|
586
|
+
- Support for DB specific schema inferrers (flash-gordon)
|
|
587
|
+
- Automatically infer PG arrays and JSON(B) types (jodosha + flash-gordon)
|
|
588
|
+
- Support for `Relation#having` (cflipse)
|
|
481
589
|
|
|
482
|
-
###
|
|
590
|
+
### Fixed
|
|
483
591
|
|
|
484
|
-
|
|
485
|
-
* PG-specific types are handled by `:postgres` extension and it loads connection extensions automatically (flash-gordon)
|
|
486
|
-
* Make `OneToOne` inherit from `OneToMany` (beauby)
|
|
487
|
-
* Default dataset will use column names from schema if it's available (solnic)
|
|
592
|
+
- Floats are inferred by schemas (cflipse)
|
|
488
593
|
|
|
489
|
-
###
|
|
594
|
+
### Changed
|
|
490
595
|
|
|
491
|
-
|
|
596
|
+
- Inferred types in schemas **are no longer strict** (flash-gordon)
|
|
597
|
+
- PG-specific types are handled by `:postgres` extension and it loads connection extensions automatically (flash-gordon)
|
|
598
|
+
- Make `OneToOne` inherit from `OneToMany` (beauby)
|
|
599
|
+
- Default dataset will use column names from schema if it's available (solnic)
|
|
492
600
|
|
|
493
601
|
[Compare v0.8.0...v0.9.0](https://github.com/rom-rb/rom-sql/compare/v0.8.0...v0.9.0)
|
|
494
602
|
|
|
495
|
-
##
|
|
603
|
+
## 0.8.0 2016-07-27
|
|
604
|
+
|
|
496
605
|
|
|
497
606
|
### Added
|
|
498
607
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
608
|
+
- Support for relation schemas with SQL-specific data types (solnic + flash-gordon)
|
|
609
|
+
- One-To-Many support in schemas (solnic + flash-gordon)
|
|
610
|
+
- One-To-One support in schemas (solnic + flash-gordon)
|
|
611
|
+
- One-To-One-Through support in schemas (solnic + flash-gordon)
|
|
612
|
+
- Many-To-One support in schemas (solnic + flash-gordon)
|
|
613
|
+
- Many-To-Many support in schemas (solnic + flash-gordon)
|
|
614
|
+
- Support for `has_many`, `has_one` and `belongs_to` convenient methods in schema DSL (solnic)
|
|
615
|
+
- Support for custom PG types: `Types::PG::Array`, `Types::PG::Hash`, `Types::PG::JSON`, and `Types::PG::Bytea` (solnic + flash-gordon)
|
|
616
|
+
- Optional automatic schema inference for attributes and foreign keys based on DB metadata provided by Sequel (flash-gordon)
|
|
617
|
+
- Support for arbitrary dataset and FK names in schemas (flash-gordon)
|
|
618
|
+
- Support for native upserts in PostgreSQL >= 9.5 via `Commands::Postgres::Upsert` (gotar + flash-gordon)
|
|
510
619
|
|
|
511
|
-
###
|
|
620
|
+
### Fixed
|
|
512
621
|
|
|
513
|
-
|
|
514
|
-
* `associates` command plugin uses schema associations now (solnic)
|
|
515
|
-
* Dropped MRI 2.0.x support
|
|
622
|
+
- `Create` command properly materialize result when `:one` is set (AMHOL)
|
|
516
623
|
|
|
517
|
-
###
|
|
624
|
+
### Changed
|
|
518
625
|
|
|
519
|
-
|
|
626
|
+
- `Create` and `Update` commands have `:schema` plugin enabled by default which sets input handler based on schema definition automatically (solnic)
|
|
627
|
+
- `associates` command plugin uses schema associations now (solnic)
|
|
628
|
+
- Dropped MRI 2.0.x support
|
|
520
629
|
|
|
521
630
|
[Compare v0.7.0...v0.8.0](https://github.com/rom-rb/rom-sql/compare/v0.7.0...v0.8.0)
|
|
522
631
|
|
|
523
|
-
##
|
|
632
|
+
## 0.7.0 2016-01-06
|
|
633
|
+
|
|
524
634
|
|
|
525
635
|
### Added
|
|
526
636
|
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
637
|
+
- Repository plugins have been imported:
|
|
638
|
+
- `view` allows defining a relation view with an explicit header (solnic)
|
|
639
|
+
- `base_view` defines a base view with all column names as the header (solnic)
|
|
640
|
+
- `auto_combine` defines a generic `for_combine` method which eager-loads
|
|
531
641
|
parent/children relation (solnic)
|
|
532
|
-
|
|
642
|
+
- `auto-wrap` defines a generic `for_wrap` method which inner-joins
|
|
533
643
|
a parent/children relation (solnic)
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
644
|
+
- Possibility to check for pending migrations (gotar)
|
|
645
|
+
- `Relation#sum` interface (gotar)
|
|
646
|
+
- `Relation#avg` interface (gotar)
|
|
647
|
+
- `Relation#min` interface (gotar)
|
|
648
|
+
- `Relation#max` interface (gotar)
|
|
649
|
+
- `Relation#union` interface (spscream)
|
|
650
|
+
- `primary_key` macro which allows setting a custom primary key when it cannot be
|
|
651
|
+
inferred automatically (solnic)
|
|
542
652
|
|
|
543
653
|
### Changed
|
|
544
654
|
|
|
545
|
-
|
|
546
|
-
|
|
655
|
+
- `ROM::SQL.gateway` renamed to `ROM::SQL::Gateway.instance` for migrations (endash)
|
|
656
|
+
- Association macros are now an optional plugin (solnic)
|
|
547
657
|
|
|
548
658
|
[Compare v0.6.1...v0.7.0](https://github.com/rom-rb/rom-sql/compare/v0.6.1...v0.7.0)
|
|
549
659
|
|
|
550
|
-
##
|
|
660
|
+
## 0.6.1 2015-09-23
|
|
661
|
+
|
|
551
662
|
|
|
552
663
|
### Added
|
|
553
664
|
|
|
554
|
-
|
|
665
|
+
- `Gateway` accepts `:extensions` as an option (c0)
|
|
666
|
+
|
|
555
667
|
|
|
556
668
|
[Compare v0.6.0...v0.6.1](https://github.com/rom-rb/rom-sql/compare/v0.6.0...v0.6.1)
|
|
557
669
|
|
|
558
|
-
##
|
|
670
|
+
## 0.6.0 2015-08-19
|
|
559
671
|
|
|
560
672
|
Internal updates to fix deprecation warnings from ROM 0.9.0.
|
|
561
673
|
|
|
674
|
+
|
|
562
675
|
[Compare v0.5.3...v0.6.0](https://github.com/rom-rb/rom-sql/compare/v0.5.3...v0.6.0)
|
|
563
676
|
|
|
564
|
-
##
|
|
677
|
+
## 0.5.3 2015-07-23
|
|
678
|
+
|
|
565
679
|
|
|
566
680
|
### Added
|
|
567
681
|
|
|
568
|
-
|
|
682
|
+
- `Relation#multi_insert` (draxxxeus)
|
|
569
683
|
|
|
570
|
-
###
|
|
684
|
+
### Fixed
|
|
571
685
|
|
|
572
|
-
|
|
686
|
+
- Relation name and join key fixes for `many_to_one` macro (jamesmoriarty)
|
|
573
687
|
|
|
574
|
-
###
|
|
688
|
+
### Changed
|
|
575
689
|
|
|
576
|
-
|
|
690
|
+
- Command that receives many tuples will use `multi_insert` now (draxxxeus)
|
|
577
691
|
|
|
578
692
|
[Compare v0.5.2...v0.5.3](https://github.com/rom-rb/rom-sql/compare/v0.5.2...v0.5.3)
|
|
579
693
|
|
|
580
|
-
##
|
|
694
|
+
## 0.5.2 2015-06-22
|
|
695
|
+
|
|
581
696
|
|
|
582
697
|
### Added
|
|
583
698
|
|
|
584
|
-
|
|
699
|
+
- `Relation#invert` operation (nepalez)
|
|
585
700
|
|
|
586
701
|
### Changed
|
|
587
702
|
|
|
588
|
-
|
|
589
|
-
|
|
703
|
+
- Migration tasks no longer require entire ROM env (solnic)
|
|
704
|
+
- `Repository` => `Gateway` rename for ROM 0.8.0 compatibility (solnic)
|
|
590
705
|
|
|
591
706
|
[Compare v0.5.1...v0.5.2](https://github.com/rom-rb/rom-sql/compare/v0.5.1...v0.5.2)
|
|
592
707
|
|
|
593
|
-
##
|
|
708
|
+
## 0.5.1 2015-05-25
|
|
594
709
|
|
|
595
|
-
### Changed
|
|
596
|
-
|
|
597
|
-
* Relations won't be finalized when table(s) is/are missing (solnic)
|
|
598
710
|
|
|
599
711
|
### Fixed
|
|
600
712
|
|
|
601
|
-
|
|
713
|
+
- Wrap errors when calling commands with `[]`-syntax (kwando)
|
|
714
|
+
|
|
715
|
+
### Changed
|
|
716
|
+
|
|
717
|
+
- Relations won't be finalized when table(s) is/are missing (solnic)
|
|
602
718
|
|
|
603
719
|
[Compare v0.5.0...v0.5.1](https://github.com/rom-rb/rom-sql/compare/v0.5.0...v0.5.1)
|
|
604
720
|
|
|
605
|
-
##
|
|
721
|
+
## 0.5.0 2015-05-22
|
|
722
|
+
|
|
606
723
|
|
|
607
724
|
### Added
|
|
608
725
|
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
726
|
+
- Association macros support addition `:on` option (solnic)
|
|
727
|
+
- `associates` plugin for `Create` command (solnic)
|
|
728
|
+
- Support for NotNullConstraintError (solnic)
|
|
729
|
+
- Support for UniqueConstraintConstraintError (solnic)
|
|
730
|
+
- Support for ForeignKeyConstraintError (solnic)
|
|
731
|
+
- Support for CheckConstraintError (solnic)
|
|
732
|
+
- `Commands::Update#original` supports objects coercible to_h now (solnic)
|
|
616
733
|
|
|
617
734
|
### Changed
|
|
618
735
|
|
|
619
|
-
|
|
736
|
+
- [BREAKING] Constraint errors are no longer command errors which means `try` and
|
|
620
737
|
`transaction` blocks will not catch them (solnic)
|
|
621
|
-
|
|
622
|
-
|
|
738
|
+
- `Commands::Update#set` has been deprecated (solnic)
|
|
739
|
+
- `Commands::Update#to` has been deprecated (solnic)
|
|
740
|
+
|
|
741
|
+
[Compare v0.4.3...v0.5.0](https://github.com/rom-rb/rom-sql/compare/v0.4.3...v0.5.0)
|
|
623
742
|
|
|
624
|
-
|
|
743
|
+
## 0.4.3 2015-05-17
|
|
625
744
|
|
|
626
|
-
## v0.4.3 2015-05-17
|
|
627
745
|
|
|
628
746
|
### Fixed
|
|
629
747
|
|
|
630
|
-
|
|
748
|
+
- `transaction` doesn't swallow errors now other than CommandError (solnic)
|
|
749
|
+
|
|
631
750
|
|
|
632
751
|
[Compare v0.4.2...v0.4.3](https://github.com/rom-rb/rom-sql/compare/v0.4.2...v0.4.3)
|
|
633
752
|
|
|
634
|
-
##
|
|
753
|
+
## 0.4.2 2015-05-17
|
|
754
|
+
|
|
635
755
|
|
|
636
756
|
### Added
|
|
637
757
|
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
758
|
+
- Support for setting custom association name (solnic)
|
|
759
|
+
- Support for `:conditions` option in association definition (solnic)
|
|
760
|
+
- Better error message when accessing undefined associations (pdswan)
|
|
641
761
|
|
|
642
762
|
### Fixed
|
|
643
763
|
|
|
644
|
-
|
|
764
|
+
- Correct `ROM::SQL::Plugin::Pagination::Pager#total_pages` when total is not
|
|
645
765
|
evenly divisible by page size (larribas)
|
|
646
|
-
|
|
766
|
+
- `association_join` behaves correctly when dataset is different than register_as (nepalez)
|
|
647
767
|
|
|
648
768
|
### Changed
|
|
649
769
|
|
|
650
|
-
|
|
770
|
+
- `transaction` returns command failure objects when there was a rollback (solnic)
|
|
651
771
|
|
|
652
772
|
[Compare v0.4.1...v0.4.2](https://github.com/rom-rb/rom-sql/compare/v0.4.1...v0.4.2)
|
|
653
773
|
|
|
654
|
-
##
|
|
774
|
+
## 0.4.1 2015-04-04
|
|
775
|
+
|
|
655
776
|
|
|
656
777
|
### Added
|
|
657
778
|
|
|
658
|
-
|
|
659
|
-
|
|
779
|
+
- Database error handling for update and delete commands (kwando + solnic)
|
|
780
|
+
- Migration interface as a repository plugin (gotar + solnic)
|
|
781
|
+
|
|
660
782
|
|
|
661
783
|
[Compare v0.4.0...v0.4.1](https://github.com/rom-rb/rom-sql/compare/v0.4.0...v0.4.1)
|
|
662
784
|
|
|
663
|
-
##
|
|
785
|
+
## 0.4.0 2015-03-22
|
|
786
|
+
|
|
664
787
|
|
|
665
788
|
### Added
|
|
666
789
|
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
790
|
+
- `ROM::SQL::Relation` which explictly defines an interface on top of Sequel (solnic + mcls)
|
|
791
|
+
- Postgres-specific Create and Update commands that support RETURNING (gotar + solnic)
|
|
792
|
+
- `Update#change` interface for skipping execution when there's no diff (solnic)
|
|
793
|
+
- Experimental migration API using sequel/migrations (gotar)
|
|
794
|
+
- Pagination plugin (solnic)
|
|
795
|
+
- Allow reuse of established Sequel connections (splattael)
|
|
673
796
|
|
|
674
|
-
###
|
|
797
|
+
### Fixed
|
|
675
798
|
|
|
676
|
-
|
|
799
|
+
- Indentation in Rails logger (morgoth)
|
|
677
800
|
|
|
678
|
-
###
|
|
801
|
+
### Changed
|
|
679
802
|
|
|
680
|
-
|
|
803
|
+
- Use ROM's own inflector which uses either ActiveSupport or Inflecto backends (mjtko)
|
|
681
804
|
|
|
682
805
|
[Compare v0.3.2...v0.4.0](https://github.com/rom-rb/rom-sql/compare/v0.3.2...v0.4.0)
|
|
683
806
|
|
|
684
|
-
##
|
|
807
|
+
## 0.3.2 2015-01-01
|
|
808
|
+
|
|
685
809
|
|
|
686
810
|
### Fixed
|
|
687
811
|
|
|
688
|
-
|
|
812
|
+
- Checking tuple count in commands (solnic)
|
|
813
|
+
|
|
689
814
|
|
|
690
815
|
[Compare v0.3.1...v0.3.2](https://github.com/rom-rb/rom-sql/compare/v0.3.1...v0.3.2)
|
|
691
816
|
|
|
692
|
-
##
|
|
817
|
+
## 0.3.1 2014-12-31
|
|
818
|
+
|
|
693
819
|
|
|
694
820
|
### Added
|
|
695
821
|
|
|
696
|
-
|
|
697
|
-
|
|
822
|
+
- `Adapter#disconnect` (solnic)
|
|
823
|
+
- Support for extra connection options (solnic)
|
|
824
|
+
|
|
698
825
|
|
|
699
826
|
[Compare v0.3.0...v0.3.1](https://github.com/rom-rb/rom-sql/compare/v0.3.0...v0.3.1)
|
|
700
827
|
|
|
701
|
-
##
|
|
828
|
+
## 0.3.0 2014-12-19
|
|
829
|
+
|
|
702
830
|
|
|
703
831
|
### Changed
|
|
704
832
|
|
|
705
|
-
|
|
706
|
-
|
|
833
|
+
- `association_join` now uses Sequel's `graph` interface which qualifies columns automatically (solnic)
|
|
834
|
+
- Delete command returns deleted tuples (solnic)
|
|
707
835
|
|
|
708
836
|
[Compare v0.2.0...v0.3.0](https://github.com/rom-rb/rom-sql/compare/v0.2.0...v0.3.0)
|
|
709
837
|
|
|
710
|
-
##
|
|
838
|
+
## 0.2.0 2014-12-06
|
|
839
|
+
|
|
711
840
|
|
|
712
841
|
### Added
|
|
713
842
|
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
843
|
+
- Command API (solnic)
|
|
844
|
+
- Support for ActiveSupport::Notifications with a log subscriber (solnic)
|
|
845
|
+
- New `ROM::SQL::Adapter#dataset?(name)` checking if a given table exists (solnic)
|
|
846
|
+
|
|
717
847
|
|
|
718
848
|
[Compare v0.1.1...v0.2.0](https://github.com/rom-rb/rom-sql/compare/v0.1.1...v0.2.0)
|
|
719
849
|
|
|
720
|
-
##
|
|
850
|
+
## 0.1.1 2014-11-24
|
|
851
|
+
|
|
721
852
|
|
|
722
853
|
### Fixed
|
|
723
854
|
|
|
724
|
-
|
|
855
|
+
- Equalizer in header (solnic)
|
|
725
856
|
|
|
726
857
|
### Changed
|
|
727
858
|
|
|
728
|
-
|
|
859
|
+
- minor refactor in adapter (solnic)
|
|
729
860
|
|
|
730
861
|
[Compare v0.1.0...v0.1.1](https://github.com/rom-rb/rom-sql/compare/v0.1.0...v0.1.1)
|
|
731
862
|
|
|
732
|
-
##
|
|
863
|
+
## 0.1.0 2014-11-24
|
|
733
864
|
|
|
734
865
|
First release powered by Sequel
|