opentelemetry-instrumentation-pg 0.26.1 → 0.27.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bc1cf9d4064f6c7acdf160a45b360347c5ad87ffad97a63e086ccea564b396c
|
4
|
+
data.tar.gz: 5bf6eb9b540fd53b53d51126ebd8cce58cc640587f9a9ab7bc3aea9a20026a74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f870b5c594e85710a9e71f514ae37059d679601d1d381f5854baf054f780b7504777b12a40e09decbd295852dc9c0b1bb951e97588e8d61b4dfd7e1f8b88f00
|
7
|
+
data.tar.gz: 62479ce766cf77cae8ea0854443d2a71882c9bc1995749c2f07bca70b4890cda2c91d18f1e45e0d27923652111a77257f5aa80e4caa88356f2574680e2647fce
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
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
|
+
|
3
8
|
### v0.26.1 / 2023-11-23
|
4
9
|
|
5
10
|
* CHANGED: Applied Rubocop Performance Recommendations [#727](https://github.com/open-telemetry/opentelemetry-ruby-contrib/pull/727)
|
@@ -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',
|
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.
|
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:
|
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,28 +184,28 @@ dependencies:
|
|
170
184
|
requirements:
|
171
185
|
- - "~>"
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version: 1.
|
187
|
+
version: 1.60.1
|
174
188
|
type: :development
|
175
189
|
prerelease: false
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
177
191
|
requirements:
|
178
192
|
- - "~>"
|
179
193
|
- !ruby/object:Gem::Version
|
180
|
-
version: 1.
|
194
|
+
version: 1.60.1
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
196
|
name: rubocop-performance
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
184
198
|
requirements:
|
185
199
|
- - "~>"
|
186
200
|
- !ruby/object:Gem::Version
|
187
|
-
version: 1.
|
201
|
+
version: '1.20'
|
188
202
|
type: :development
|
189
203
|
prerelease: false
|
190
204
|
version_requirements: !ruby/object:Gem::Requirement
|
191
205
|
requirements:
|
192
206
|
- - "~>"
|
193
207
|
- !ruby/object:Gem::Version
|
194
|
-
version: 1.
|
208
|
+
version: '1.20'
|
195
209
|
- !ruby/object:Gem::Dependency
|
196
210
|
name: simplecov
|
197
211
|
requirement: !ruby/object:Gem::Requirement
|
@@ -243,10 +257,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby-contrib
|
|
243
257
|
licenses:
|
244
258
|
- Apache-2.0
|
245
259
|
metadata:
|
246
|
-
changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-pg/0.
|
260
|
+
changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-pg/0.27.0/file/CHANGELOG.md
|
247
261
|
source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation/pg
|
248
262
|
bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
|
249
|
-
documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-pg/0.
|
263
|
+
documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-pg/0.27.0
|
250
264
|
post_install_message:
|
251
265
|
rdoc_options: []
|
252
266
|
require_paths:
|