opentelemetry-instrumentation-pg 0.26.0 → 0.27.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b1f0cce766de33102b30042a14d65f2e9fd00e0e9bcdc82702cd5b747c146c27
4
- data.tar.gz: b2e4ecbad38a5556a7ded3508d44bc0bd18d19078d1df9c5ad8efa29e6ab68b1
3
+ metadata.gz: 4bc1cf9d4064f6c7acdf160a45b360347c5ad87ffad97a63e086ccea564b396c
4
+ data.tar.gz: 5bf6eb9b540fd53b53d51126ebd8cce58cc640587f9a9ab7bc3aea9a20026a74
5
5
  SHA512:
6
- metadata.gz: b131fc9b5c97da003fecf7252f33dd7ee87e07b7e88974031b6e789f7c5afe29621b76138ce78101d32437c31f50b6c3c0e8c91906155a74d918feebd6fdb8af
7
- data.tar.gz: d50b7becf091842b581d56aee6d3466eaa51516306f15f120033e2859e1cc5537fc19604100d6b1a7567be1f5cecd34fd0a0f177f1fc396694be013af502f1d5
6
+ metadata.gz: 0f870b5c594e85710a9e71f514ae37059d679601d1d381f5854baf054f780b7504777b12a40e09decbd295852dc9c0b1bb951e97588e8d61b4dfd7e1f8b88f00
7
+ data.tar.gz: 62479ce766cf77cae8ea0854443d2a71882c9bc1995749c2f07bca70b4890cda2c91d18f1e45e0d27923652111a77257f5aa80e4caa88356f2574680e2647fce
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Release History: opentelemetry-instrumentation-pg
2
2
 
3
+ ### v0.27.0 / 2024-02-08
4
+
5
+ * BREAKING CHANGE: Move shared sql behavior to helper gems
6
+
7
+
8
+ ### v0.26.1 / 2023-11-23
9
+
10
+ * CHANGED: Applied Rubocop Performance Recommendations [#727](https://github.com/open-telemetry/opentelemetry-ruby-contrib/pull/727)
11
+
3
12
  ### v0.26.0 / 2023-10-16
4
13
 
5
14
  * BREAKING CHANGE: Obfuscation for mysql2, dalli and postgresql as default option for db_statement
@@ -65,29 +65,6 @@ module OpenTelemetry
65
65
  VALUES
66
66
  ].freeze
67
67
 
68
- # From: https://github.com/newrelic/newrelic-ruby-agent/blob/9787095d4b5b2d8fcaf2fdbd964ed07c731a8b6b/lib/new_relic/agent/database/obfuscation_helpers.rb#L9-L34
69
- COMPONENTS_REGEX_MAP = {
70
- single_quotes: /'(?:[^']|'')*?(?:\\'.*|'(?!'))/,
71
- dollar_quotes: /(\$(?!\d)[^$]*?\$).*?(?:\1|$)/,
72
- uuids: /\{?(?:[0-9a-fA-F]\-*){32}\}?/,
73
- numeric_literals: /-?\b(?:[0-9]+\.)?[0-9]+([eE][+-]?[0-9]+)?\b/,
74
- boolean_literals: /\b(?:true|false|null)\b/i,
75
- comments: /(?:#|--).*?(?=\r|\n|$)/i,
76
- multi_line_comments: %r{\/\*(?:[^\/]|\/[^*])*?(?:\*\/|\/\*.*)}
77
- }.freeze
78
-
79
- POSTGRES_COMPONENTS = %i[
80
- single_quotes
81
- dollar_quotes
82
- uuids
83
- numeric_literals
84
- boolean_literals
85
- comments
86
- multi_line_comments
87
- ].freeze
88
-
89
- UNMATCHED_PAIRS_REGEX = %r{'|\/\*|\*\/|\$(?!\?)}
90
-
91
68
  # These are all alike in that they will have a SQL statement as the first parameter.
92
69
  # That statement may possibly be parameterized, but we can still use it - the
93
70
  # obfuscation code will just transform $1 -> $? in that case (which is fine enough).
@@ -50,6 +50,16 @@ module OpenTelemetry
50
50
 
51
51
  private
52
52
 
53
+ def obfuscate_sql(sql)
54
+ return sql unless config[:db_statement] == :obfuscate
55
+
56
+ OpenTelemetry::Helpers::SqlObfuscation.obfuscate_sql(
57
+ sql,
58
+ obfuscation_limit: config[:obfuscation_limit],
59
+ adapter: :postgres
60
+ )
61
+ end
62
+
53
63
  def tracer
54
64
  PG::Instrumentation.instance.tracer
55
65
  end
@@ -112,34 +122,6 @@ module OpenTelemetry
112
122
  operation if PG::Constants::SQL_COMMANDS.include?(operation)
113
123
  end
114
124
 
115
- def obfuscate_sql(sql)
116
- return sql unless config[:db_statement] == :obfuscate
117
-
118
- if sql.size > config[:obfuscation_limit]
119
- first_match_index = sql.index(generated_postgres_regex)
120
- truncation_message = "SQL truncated (> #{config[:obfuscation_limit]} characters)"
121
- return truncation_message unless first_match_index
122
-
123
- truncated_sql = sql[..first_match_index - 1]
124
- return "#{truncated_sql}...\n#{truncation_message}"
125
- end
126
-
127
- # From:
128
- # https://github.com/newrelic/newrelic-ruby-agent/blob/9787095d4b5b2d8fcaf2fdbd964ed07c731a8b6b/lib/new_relic/agent/database/obfuscator.rb
129
- # https://github.com/newrelic/newrelic-ruby-agent/blob/9787095d4b5b2d8fcaf2fdbd964ed07c731a8b6b/lib/new_relic/agent/database/obfuscation_helpers.rb
130
- obfuscated = sql.gsub(generated_postgres_regex, '?')
131
- obfuscated = 'Failed to obfuscate SQL query - quote characters remained after obfuscation' if PG::Constants::UNMATCHED_PAIRS_REGEX.match(obfuscated)
132
-
133
- obfuscated
134
- rescue StandardError => e
135
- OpenTelemetry.handle_error(message: 'Failed to obfuscate SQL', exception: e)
136
- 'OpenTelemetry error: failed to obfuscate sql'
137
- end
138
-
139
- def generated_postgres_regex
140
- @generated_postgres_regex ||= Regexp.union(PG::Constants::POSTGRES_COMPONENTS.map { |component| PG::Constants::COMPONENTS_REGEX_MAP[component] })
141
- end
142
-
143
125
  def client_attributes
144
126
  attributes = {
145
127
  'db.system' => 'postgresql',
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module PG
10
- VERSION = '0.26.0'
10
+ VERSION = '0.27.0'
11
11
  end
12
12
  end
13
13
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-instrumentation-pg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.0
4
+ version: 0.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-16 00:00:00.000000000 Z
11
+ date: 2024-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: opentelemetry-helpers-sql-obfuscation
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: opentelemetry-instrumentation-base
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -170,14 +184,28 @@ dependencies:
170
184
  requirements:
171
185
  - - "~>"
172
186
  - !ruby/object:Gem::Version
173
- version: 1.56.1
187
+ version: 1.60.1
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 1.60.1
195
+ - !ruby/object:Gem::Dependency
196
+ name: rubocop-performance
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '1.20'
174
202
  type: :development
175
203
  prerelease: false
176
204
  version_requirements: !ruby/object:Gem::Requirement
177
205
  requirements:
178
206
  - - "~>"
179
207
  - !ruby/object:Gem::Version
180
- version: 1.56.1
208
+ version: '1.20'
181
209
  - !ruby/object:Gem::Dependency
182
210
  name: simplecov
183
211
  requirement: !ruby/object:Gem::Requirement
@@ -229,10 +257,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby-contrib
229
257
  licenses:
230
258
  - Apache-2.0
231
259
  metadata:
232
- changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-pg/0.26.0/file/CHANGELOG.md
260
+ changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-pg/0.27.0/file/CHANGELOG.md
233
261
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation/pg
234
262
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
235
- documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-pg/0.26.0
263
+ documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-pg/0.27.0
236
264
  post_install_message:
237
265
  rdoc_options: []
238
266
  require_paths: