rom-sql 3.0.0 → 3.3.1

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