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