rom-sql 3.4.0 → 3.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 77e9a1c6c69b4539e55608281a06efbb7cac1b8c5723ab96be497aa982ed6677
4
- data.tar.gz: 3d1690050c29b5a09f3e72fc952eb32b1e7e5b3e421d0bd157cdeec11bb98c14
3
+ metadata.gz: 72190a3c5b2df9cf0bc5db0ba2a4cae185f88e87dfa9ad7d0f7cf3967c1fe048
4
+ data.tar.gz: acd353e5348e8c797275829dacfedb445289e5e76d636df4b5cb7b40c1f48e7b
5
5
  SHA512:
6
- metadata.gz: 9f1c1f6c059d88c2b5ad4872aea4f071799fdabab42d45a1a8fea4393361925883d4286a6543e58fa5ada1d22cee9fab691086e3f1a82a0f1ceecfac11ef918d
7
- data.tar.gz: 42dcefd8414fc1b5a2afe818efff6ed3a410d0aea790ff9400b6f42127990781174ee83944d5791114d3b6fd49208c9a839e76d7afb3007cc19e5b3be2705172
6
+ metadata.gz: 93bc3e2cb1873865a886d221d34ff164a7d83de2ddaec4f6f3d99daf65465a14ded348c546151ae9d44e6eae6ca4dded468cc7386ff4513d6b02bab843485f14
7
+ data.tar.gz: 6c45fd11d745c05d1f536700c1cb246dd358e09668a406377281486b3d062c366db847dea96e457170e518e104baf64bb296f41613dd0099b5ffb7e839cd7679
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  <!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
2
2
 
3
+ ## 3.5.0 2021-03-26
4
+
5
+
6
+ ### Fixed
7
+
8
+ - Restored the fix for #390 that was lost by an accident in 3.3.3 and 3.4.0 (@solnic)
9
+
10
+ ### Added
11
+
12
+ - Support for using partial indixes in PG upsert commands (issue #394 fixed via #395) (@smaximov)
13
+
14
+ [Compare v3.4.0...v3.5.0](https://github.com/rom-rb/rom-sql/compare/v3.4.0...v3.5.0)
15
+
3
16
  ## 3.4.0 2021-03-19
4
17
 
5
18
 
@@ -85,7 +85,7 @@ module ROM
85
85
  class Upsert < SQL::Commands::Create
86
86
  adapter :sql
87
87
 
88
- defines :constraint, :conflict_target, :update_statement, :update_where
88
+ defines :constraint, :conflict_target, :conflict_where, :update_statement, :update_where
89
89
 
90
90
  # @!attribute [r] constraint
91
91
  # @return [Symbol] the name of the constraint expected to be violated
@@ -95,6 +95,10 @@ module ROM
95
95
  # @return [Object] the column or expression to handle a violation on
96
96
  option :conflict_target, default: -> { self.class.conflict_target }
97
97
 
98
+ # @!attribute [r] conflict_where
99
+ # @return [Object] the index filter, when using a partial index to determine uniqueness
100
+ option :conflict_where, default: -> { self.class.conflict_where }
101
+
98
102
  # @!attribute [r] update_statement
99
103
  # @return [Object] the update statement which will be executed in case of a violation
100
104
  option :update_statement, default: -> { self.class.update_statement }
@@ -123,6 +127,7 @@ module ROM
123
127
  @upsert_options ||= {
124
128
  constraint: constraint,
125
129
  target: conflict_target,
130
+ conflict_where: conflict_where,
126
131
  update_where: update_where,
127
132
  update: update_statement
128
133
  }
@@ -73,18 +73,23 @@ module ROM
73
73
  #
74
74
  # @api private
75
75
  def qualified(table_alias = nil)
76
- meta(
77
- func: ::Sequel::SQL::Function.new(func.name, *func.args.map { |arg| arg.respond_to?(:qualified) ? arg.qualified(table_alias) : arg })
78
- )
76
+ new { |arg|
77
+ arg.respond_to?(:qualified) ? arg.qualified(table_alias) : arg
78
+ }
79
79
  end
80
80
 
81
81
  # @see Attribute#qualified_projection
82
82
  #
83
83
  # @api private
84
84
  def qualified_projection(table_alias = nil)
85
- meta(
86
- func: ::Sequel::SQL::Function.new(func.name, *func.args.map { |arg| arg.respond_to?(:qualified_projection) ? arg.qualified_projection(table_alias) : arg })
87
- )
85
+ new { |arg|
86
+ arg.respond_to?(:qualified_projection) ? arg.qualified_projection(table_alias) : arg
87
+ }
88
+ end
89
+
90
+ # @api private
91
+ def new(&block)
92
+ meta(func: ::Sequel::SQL::Function.new!(func.name, func.args.map(&block), func.opts))
88
93
  end
89
94
 
90
95
  # @see Attribute#qualified?
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ROM
4
4
  module SQL
5
- VERSION = '3.4.0'.freeze
5
+ VERSION = '3.5.0'.freeze
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rom-sql
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-19 00:00:00.000000000 Z
11
+ date: 2021-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel
@@ -241,7 +241,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
241
241
  - !ruby/object:Gem::Version
242
242
  version: '0'
243
243
  requirements: []
244
- rubygems_version: 3.1.4
244
+ rubygems_version: 3.2.3
245
245
  signing_key:
246
246
  specification_version: 4
247
247
  summary: SQL databases support for ROM