newrelic_rpm 3.14.3.313 → 3.15.0.314
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +20 -6
- data/CHANGELOG +31 -0
- data/README.md +1 -1
- data/lib/new_relic/agent/configuration/default_source.rb +31 -29
- data/lib/new_relic/agent/database/obfuscation_helpers.rb +1 -1
- data/lib/new_relic/agent/instrumentation/active_job.rb +7 -1
- data/lib/new_relic/agent/instrumentation/active_record_4.rb +1 -1
- data/lib/new_relic/agent/instrumentation/data_mapper.rb +1 -1
- data/lib/new_relic/agent/instrumentation/grape.rb +1 -1
- data/lib/new_relic/agent/instrumentation/memcache.rb +1 -1
- data/lib/new_relic/agent/instrumentation/rails5/action_controller.rb +29 -0
- data/lib/new_relic/agent/instrumentation/rails5/action_view.rb +25 -0
- data/lib/new_relic/agent/instrumentation/rails_middleware.rb +2 -2
- data/lib/new_relic/agent/supported_versions.rb +1 -0
- data/lib/new_relic/agent/system_info.rb +1 -1
- data/lib/new_relic/control/frameworks/rails5.rb +14 -0
- data/lib/new_relic/version.rb +2 -2
- data/lib/tasks/config.rake +15 -23
- data/lib/tasks/tests.rake +1 -1
- data/newrelic.yml +1 -1
- data/newrelic_rpm.gemspec +2 -2
- data/test/environments/lib/environments/runner.rb +10 -6
- data/test/environments/rails40/Gemfile +1 -1
- data/test/environments/rails40/config/database.yml +1 -1
- data/test/environments/rails41/Gemfile +1 -1
- data/test/environments/rails41/config/database.yml +1 -1
- data/test/environments/rails42/Gemfile +1 -1
- data/test/environments/rails42/config/database.yml +1 -1
- data/test/environments/rails50/Gemfile +36 -0
- data/test/environments/rails50/Rakefile +11 -0
- data/test/environments/rails50/config/application.rb +18 -0
- data/test/environments/rails50/config/boot.rb +10 -0
- data/test/environments/rails50/config/database.yml +26 -0
- data/test/environments/rails50/config/environment.rb +6 -0
- data/test/environments/rails50/db/schema.rb +5 -0
- data/test/fixtures/cross_agent_tests/sql_obfuscation/sql_obfuscation.json +55 -27
- data/test/multiverse/suites/active_record/Envfile +14 -2
- data/test/multiverse/suites/active_record/active_record_test.rb +1 -1
- data/test/multiverse/suites/active_record/config/database.yml +8 -5
- data/test/multiverse/suites/datamapper/datamapper_test.rb +2 -1
- data/test/multiverse/suites/grape/Envfile +1 -1
- data/test/multiverse/suites/rails/Envfile +8 -0
- data/test/multiverse/suites/rails/error_tracing_test.rb +13 -0
- data/test/new_relic/agent/system_info_test.rb +6 -0
- data/test/new_relic/agent/transaction_test.rb +14 -14
- data/test/new_relic/agent/utilization_data_test.rb +9 -0
- metadata +14 -4
@@ -86,6 +86,7 @@ module NewRelic
|
|
86
86
|
{
|
87
87
|
:type => :web,
|
88
88
|
:supported => ["~>2.1.0", "~>2.2.0", "~>2.3.0", "~3.0.0", "~>3.1.0", "~>3.2.0", "~>4.0.0", "~>4.1.0", "~>4.2.0"],
|
89
|
+
:experimental=> ["5.0.0beta2"],
|
89
90
|
:deprecated => ["~>2.0.0"],
|
90
91
|
:url => "https://rubygems.org/gems/rails",
|
91
92
|
:feed => "https://rubygems.org/gems/rails/versions.atom",
|
@@ -244,7 +244,7 @@ module NewRelic
|
|
244
244
|
end
|
245
245
|
|
246
246
|
def self.parse_linux_meminfo_in_mib(meminfo)
|
247
|
-
if mem_total = meminfo[/MemTotal:\s*(\d*)\skB/,1]
|
247
|
+
if meminfo && mem_total = meminfo[/MemTotal:\s*(\d*)\skB/,1]
|
248
248
|
(mem_total.to_i / 1024).to_i
|
249
249
|
else
|
250
250
|
::NewRelic::Agent.logger.debug("Failed to parse MemTotal from /proc/meminfo: #{meminfo}")
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is distributed under New Relic's license terms.
|
3
|
+
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
|
4
|
+
|
5
|
+
require 'new_relic/control/frameworks/rails4'
|
6
|
+
require 'new_relic/rack/error_collector'
|
7
|
+
module NewRelic
|
8
|
+
class Control
|
9
|
+
module Frameworks
|
10
|
+
class Rails5 < NewRelic::Control::Frameworks::Rails4
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/new_relic/version.rb
CHANGED
data/lib/tasks/config.rake
CHANGED
@@ -2,12 +2,14 @@ namespace :newrelic do
|
|
2
2
|
namespace :config do
|
3
3
|
desc "Describe available New Relic configuration settings."
|
4
4
|
|
5
|
-
GENERAL
|
6
|
-
DISABLING
|
5
|
+
GENERAL = "general"
|
6
|
+
DISABLING = "disabling"
|
7
|
+
ATTRIBUTES = "attributes"
|
7
8
|
|
8
9
|
SECTION_DESCRIPTIONS = {
|
9
10
|
GENERAL => 'These settings are available for agent configuration. Some settings depend on your New Relic subscription level.',
|
10
11
|
DISABLING => 'Use these settings to toggle instrumentation types during agent startup.',
|
12
|
+
ATTRIBUTES => '<a href="https://docs.newrelic.com/docs/features/agent-attributes">Attributes</a> are key-value pairs containing information that determines the properties of an event or transaction. These key-value pairs can be viewed within transaction traces in New Relic APM, traced errors in New Relic APM, transaction events in Insights, and page views in Insights. You can customize exactly which attributes will be sent to each of these destinations.',
|
11
13
|
"transaction_tracer" => 'The <a href="/docs/apm/traces/transaction-traces/transaction-traces">transaction traces</a> feature collects detailed information from a selection of transactions, including a summary of the calling sequence, a breakdown of time spent, and a list of SQL queries and their query plans (on mysql and postgresql). Available features depend on your New Relic subscription level.',
|
12
14
|
"error_collector" => 'The agent collects and reports all uncaught exceptions by default. These configuration options allow you to customize the error collection.',
|
13
15
|
"browser_monitoring" => 'New Relic Browser\'s <a href="/docs/browser/new-relic-browser/page-load-timing/page-load-timing-process">page load timing</a> feature (sometimes referred to as real user monitoring or RUM) gives you insight into the performance real users are experiencing with your website. This is accomplished by measuring the time it takes for your users\' browsers to download and render your web pages by injecting a small amount of JavaScript code into the header and footer of each page.',
|
@@ -32,22 +34,23 @@ namespace :newrelic do
|
|
32
34
|
next unless value[:public]
|
33
35
|
|
34
36
|
section_key = GENERAL
|
35
|
-
|
37
|
+
key = key.to_s
|
38
|
+
components = key.split(".")
|
36
39
|
|
37
|
-
if
|
38
|
-
section_key = section[1]
|
39
|
-
key = section[2]
|
40
|
-
elsif key.to_s.match(/^disable_/)
|
40
|
+
if key.match(/^disable_/) # "disable_httpclient"
|
41
41
|
section_key = DISABLING
|
42
|
-
|
42
|
+
elsif components.length == 2 # "analytics_events.enabled"
|
43
|
+
section_key = components.first
|
44
|
+
elsif components[1] == "attributes" # "transaction_tracer.attributes.enabled"
|
45
|
+
section_key = ATTRIBUTES
|
43
46
|
end
|
44
47
|
|
45
48
|
sections[section_key] << {
|
46
|
-
:key =>
|
49
|
+
:key => key,
|
47
50
|
:type => format_type(value[:type]),
|
48
51
|
:description => format_description(value),
|
49
52
|
:default => format_default_value(value),
|
50
|
-
:env_var => format_env_var(
|
53
|
+
:env_var => format_env_var(key)
|
51
54
|
}
|
52
55
|
end
|
53
56
|
sections
|
@@ -75,14 +78,6 @@ namespace :newrelic do
|
|
75
78
|
end
|
76
79
|
end
|
77
80
|
|
78
|
-
def format_key(section_key, key)
|
79
|
-
if section_key == GENERAL || section_key == DISABLING
|
80
|
-
key.to_s
|
81
|
-
else
|
82
|
-
"#{section_key}.#{key}"
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
81
|
def format_name(key)
|
87
82
|
name = NAME_OVERRIDES[key]
|
88
83
|
return name if name
|
@@ -114,11 +109,8 @@ namespace :newrelic do
|
|
114
109
|
end
|
115
110
|
end
|
116
111
|
|
117
|
-
def format_env_var(
|
118
|
-
|
119
|
-
v << "#{section_key}_" unless section_key == GENERAL || section_key == DISABLING
|
120
|
-
v << key.to_s
|
121
|
-
v.upcase
|
112
|
+
def format_env_var(key)
|
113
|
+
"NEW_RELIC_#{key.gsub(".", "_").upcase}"
|
122
114
|
end
|
123
115
|
|
124
116
|
def pluck(key, config_hash)
|
data/lib/tasks/tests.rake
CHANGED
data/newrelic.yml
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
# overhead. For more information, visit www.newrelic.com.
|
5
5
|
#
|
6
6
|
# Generated <%= Time.now.strftime('%B %d, %Y') %><%= ", for version #{@agent_version}" if @agent_version %>
|
7
|
-
|
7
|
+
#<%= "\n# #{generated_for_user}\n#" if generated_for_user %>
|
8
8
|
# For full documentation of agent configuration options, please refer to
|
9
9
|
# https://docs.newrelic.com/docs/agents/ruby-agent/installation-configuration/ruby-agent-configuration
|
10
10
|
|
data/newrelic_rpm.gemspec
CHANGED
@@ -19,7 +19,7 @@ Inc (http://www.newrelic.com). New Relic provides you with deep
|
|
19
19
|
information about the performance of your web application as it runs
|
20
20
|
in production. The New Relic Ruby Agent is dual-purposed as a either a
|
21
21
|
Gem or plugin, hosted on
|
22
|
-
|
22
|
+
https://github.com/newrelic/rpm/
|
23
23
|
EOS
|
24
24
|
s.email = "support@newrelic.com"
|
25
25
|
s.executables = [ "mongrel_rpm", "newrelic_cmd", "newrelic", "nrdebug" ]
|
@@ -36,7 +36,7 @@ EOS
|
|
36
36
|
file_list << build_file_path if File.exist?(build_file_path)
|
37
37
|
s.files = file_list
|
38
38
|
|
39
|
-
s.homepage = "
|
39
|
+
s.homepage = "https://github.com/newrelic/rpm"
|
40
40
|
s.require_paths = ["lib"]
|
41
41
|
s.rubygems_version = Gem::VERSION
|
42
42
|
s.summary = "New Relic Ruby Agent"
|
@@ -11,13 +11,17 @@ module Environments
|
|
11
11
|
include Multiverse::Color
|
12
12
|
|
13
13
|
BLACKLIST = {
|
14
|
+
"2.2.1" => ["rails50"],
|
15
|
+
"2.2.0" => ["rails50"],
|
16
|
+
"2.1" => ["rails50"],
|
17
|
+
"2.0" => ["rails50"],
|
14
18
|
"2" => ["rails21", "rails22", "rails23"],
|
15
|
-
"1.9" => ["rails21", "rails22"],
|
16
|
-
"1.9.2" => ["rails40", "rails41", "rails42"],
|
17
|
-
"1.8.7" => ["rails40", "rails41", "rails42"],
|
18
|
-
"ree" => ["rails40", "rails41", "rails42"],
|
19
|
-
"jruby-1.6" => ["rails40", "rails41", "rails42"],
|
20
|
-
"jruby-1.7" => ["rails21", "rails22", "rails23"],
|
19
|
+
"1.9" => ["rails21", "rails22", "rails50"],
|
20
|
+
"1.9.2" => ["rails40", "rails41", "rails42", "rails50"],
|
21
|
+
"1.8.7" => ["rails40", "rails41", "rails42", "rails50"],
|
22
|
+
"ree" => ["rails40", "rails41", "rails42", "rails50"],
|
23
|
+
"jruby-1.6" => ["rails40", "rails41", "rails42", "rails50"],
|
24
|
+
"jruby-1.7" => ["rails21", "rails22", "rails23", "rails50"],
|
21
25
|
"jruby-9.0" => ["rails21", "rails22", "rails23", "rails30", "rails31", "rails32"],
|
22
26
|
"rbx-2.0" => ["rails21", "rails22", "rails23", "rails30", "rails31", "rails32"],
|
23
27
|
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'rake'
|
4
|
+
|
5
|
+
gem 'rails', '~>5.0.0beta2'
|
6
|
+
|
7
|
+
gem 'minitest', '5.2.3'
|
8
|
+
gem 'mocha', :require => false
|
9
|
+
gem 'rack'
|
10
|
+
gem 'rack-test'
|
11
|
+
|
12
|
+
platforms :jruby do
|
13
|
+
gem "jruby-openssl"
|
14
|
+
end
|
15
|
+
|
16
|
+
platforms :ruby do
|
17
|
+
gem "mysql2"
|
18
|
+
end
|
19
|
+
|
20
|
+
platforms :rbx do
|
21
|
+
gem "rubysl"
|
22
|
+
gem "json"
|
23
|
+
# If we don't skip the require here, test-unit tries to install its at_exit
|
24
|
+
# hook and run when we run our rake task to create the test DB.
|
25
|
+
gem "rubysl-test-unit", :require => false
|
26
|
+
gem "racc" # https://github.com/rubinius/rubinius/issues/2632
|
27
|
+
|
28
|
+
# Compilation issues with rubysl-openssl 2.2.1, lock at 2.1.0 for now.
|
29
|
+
# https://github.com/rubysl/rubysl-openssl/issues/11
|
30
|
+
gem "rubysl-openssl", "2.1.0"
|
31
|
+
end
|
32
|
+
|
33
|
+
gem "newrelic_rpm", :path => "../../.."
|
34
|
+
|
35
|
+
gem 'pry', '~> 0.9.12'
|
36
|
+
gem 'hometown', '~> 0.2.5'
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
2
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
3
|
+
|
4
|
+
require File.expand_path('../config/application', __FILE__)
|
5
|
+
require 'rake'
|
6
|
+
|
7
|
+
RpmTestApp::Application.load_tasks
|
8
|
+
require 'tasks/all'
|
9
|
+
|
10
|
+
Rake::Task["default"].clear
|
11
|
+
task :default => [:'test:newrelic']
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is distributed under New Relic's license terms.
|
3
|
+
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
|
4
|
+
|
5
|
+
require File.expand_path('../boot', __FILE__)
|
6
|
+
|
7
|
+
require 'rails/all'
|
8
|
+
|
9
|
+
Bundler.require(:default, Rails.env) if defined?(Bundler)
|
10
|
+
|
11
|
+
module RpmTestApp
|
12
|
+
class Application < Rails::Application
|
13
|
+
config.encoding = "utf-8"
|
14
|
+
config.filter_parameters += [:password]
|
15
|
+
config.secret_key_base = '414fd9af0cc192729b2b6bffe9e7077c9ac8eed5cbb74c8c4cd628906b716770598a2b7e1f328052753a4df72e559969dc05b408de73ce040c93cac7c51a348e'
|
16
|
+
config.eager_load = false
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is distributed under New Relic's license terms.
|
3
|
+
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
|
7
|
+
# Set up gems listed in the Gemfile.
|
8
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
9
|
+
|
10
|
+
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
|
@@ -0,0 +1,26 @@
|
|
1
|
+
mysql: &mysql
|
2
|
+
adapter: mysql2
|
3
|
+
socket: <%= (`uname -s` =~ /Linux/ ) ? "" :"/tmp/mysql.sock" %>
|
4
|
+
username: root
|
5
|
+
host: localhost
|
6
|
+
database: <%= db = "#{ENV['RUBY_VERSION']}#{ENV['BRANCH']}"; db.empty? ? "rails_blog" : db %>
|
7
|
+
|
8
|
+
sqlite3: &sqlite3
|
9
|
+
<% if defined?(JRuby) %>
|
10
|
+
adapter: jdbcsqlite3
|
11
|
+
<% else %>
|
12
|
+
adapter: sqlite3
|
13
|
+
<% end %>
|
14
|
+
database: db/all.sqlite3
|
15
|
+
pool: 5
|
16
|
+
timeout: 5000
|
17
|
+
host: localhost
|
18
|
+
|
19
|
+
development:
|
20
|
+
<<: *sqlite3
|
21
|
+
|
22
|
+
test:
|
23
|
+
<<: *mysql
|
24
|
+
|
25
|
+
production:
|
26
|
+
<<: *mysql
|
@@ -28,7 +28,8 @@
|
|
28
28
|
"mysql",
|
29
29
|
"postgres",
|
30
30
|
"oracle",
|
31
|
-
"cassandra"
|
31
|
+
"cassandra",
|
32
|
+
"sqlite"
|
32
33
|
],
|
33
34
|
"sql": "SELECT * FROM t WHERE foo='bar/*' AND baz='whatever */qux'"
|
34
35
|
},
|
@@ -62,7 +63,8 @@
|
|
62
63
|
"mysql",
|
63
64
|
"postgres",
|
64
65
|
"oracle",
|
65
|
-
"cassandra"
|
66
|
+
"cassandra",
|
67
|
+
"sqlite"
|
66
68
|
],
|
67
69
|
"sql": "SELECT * FROM t WHERE foo='bar--' AND\n baz='qux--'"
|
68
70
|
},
|
@@ -75,7 +77,8 @@
|
|
75
77
|
"mysql",
|
76
78
|
"postgres",
|
77
79
|
"oracle",
|
78
|
-
"cassandra"
|
80
|
+
"cassandra",
|
81
|
+
"sqlite"
|
79
82
|
],
|
80
83
|
"sql": "SELECT * FROM foo WHERE bar='baz' /* Hide Me */"
|
81
84
|
},
|
@@ -88,7 +91,8 @@
|
|
88
91
|
"mysql",
|
89
92
|
"postgres",
|
90
93
|
"oracle",
|
91
|
-
"cassandra"
|
94
|
+
"cassandra",
|
95
|
+
"sqlite"
|
92
96
|
],
|
93
97
|
"sql": "SELECT * FROM foobar WHERE password='hunter2'\n-- No peeking!"
|
94
98
|
},
|
@@ -101,7 +105,8 @@
|
|
101
105
|
"mysql",
|
102
106
|
"postgres",
|
103
107
|
"oracle",
|
104
|
-
"cassandra"
|
108
|
+
"cassandra",
|
109
|
+
"sqlite"
|
105
110
|
],
|
106
111
|
"sql": "SELECT foo, bar FROM baz WHERE password='hunter2' # Secret"
|
107
112
|
},
|
@@ -140,7 +145,8 @@
|
|
140
145
|
"mysql",
|
141
146
|
"postgres",
|
142
147
|
"oracle",
|
143
|
-
"cassandra"
|
148
|
+
"cassandra",
|
149
|
+
"sqlite"
|
144
150
|
],
|
145
151
|
"sql": "SELECT c11.col1, c22.col2 FROM table c11, table c22 WHERE value='nothing'"
|
146
152
|
},
|
@@ -155,7 +161,8 @@
|
|
155
161
|
"mysql",
|
156
162
|
"postgres",
|
157
163
|
"oracle",
|
158
|
-
"cassandra"
|
164
|
+
"cassandra",
|
165
|
+
"sqlite"
|
159
166
|
]
|
160
167
|
},
|
161
168
|
{
|
@@ -177,7 +184,8 @@
|
|
177
184
|
"mysql",
|
178
185
|
"postgres",
|
179
186
|
"oracle",
|
180
|
-
"cassandra"
|
187
|
+
"cassandra",
|
188
|
+
"sqlite"
|
181
189
|
],
|
182
190
|
"sql": "SELECT * FROM table WHERE name='foo' AND value = 'bar'"
|
183
191
|
},
|
@@ -190,7 +198,8 @@
|
|
190
198
|
"mysql",
|
191
199
|
"postgres",
|
192
200
|
"oracle",
|
193
|
-
"cassandra"
|
201
|
+
"cassandra",
|
202
|
+
"sqlite"
|
194
203
|
],
|
195
204
|
"sql": "SELECT * FROM table WHERE col='foo\\''bar'",
|
196
205
|
"comments": [
|
@@ -208,7 +217,8 @@
|
|
208
217
|
"mysql",
|
209
218
|
"postgres",
|
210
219
|
"oracle",
|
211
|
-
"cassandra"
|
220
|
+
"cassandra",
|
221
|
+
"sqlite"
|
212
222
|
],
|
213
223
|
"sql": "SELECT * FROM table WHERE col1='foo\"bar' AND col2='what\"ever'"
|
214
224
|
},
|
@@ -221,7 +231,8 @@
|
|
221
231
|
"mysql",
|
222
232
|
"postgres",
|
223
233
|
"oracle",
|
224
|
-
"cassandra"
|
234
|
+
"cassandra",
|
235
|
+
"sqlite"
|
225
236
|
],
|
226
237
|
"sql": "select * from accounts where accounts.name != 'dude \n newline' order by accounts.name"
|
227
238
|
},
|
@@ -257,7 +268,8 @@
|
|
257
268
|
"mysql",
|
258
269
|
"postgres",
|
259
270
|
"oracle",
|
260
|
-
"cassandra"
|
271
|
+
"cassandra",
|
272
|
+
"sqlite"
|
261
273
|
],
|
262
274
|
"comments": [
|
263
275
|
"If backslashes are being ignored in single-quoted strings",
|
@@ -284,7 +296,8 @@
|
|
284
296
|
"mysql",
|
285
297
|
"postgres",
|
286
298
|
"oracle",
|
287
|
-
"cassandra"
|
299
|
+
"cassandra",
|
300
|
+
"sqlite"
|
288
301
|
],
|
289
302
|
"sql": "SELECT * FROM table WHERE foo='this string ends with a backslash\\\\'"
|
290
303
|
},
|
@@ -299,7 +312,8 @@
|
|
299
312
|
"mysql",
|
300
313
|
"postgres",
|
301
314
|
"oracle",
|
302
|
-
"cassandra"
|
315
|
+
"cassandra",
|
316
|
+
"sqlite"
|
303
317
|
]
|
304
318
|
},
|
305
319
|
{
|
@@ -311,7 +325,8 @@
|
|
311
325
|
"mysql",
|
312
326
|
"postgres",
|
313
327
|
"oracle",
|
314
|
-
"cassandra"
|
328
|
+
"cassandra",
|
329
|
+
"sqlite"
|
315
330
|
],
|
316
331
|
"sql": "INSERT INTO X values('', 'a''b c',0, 1 , 'd''e f''s h')"
|
317
332
|
},
|
@@ -326,7 +341,8 @@
|
|
326
341
|
"mysql",
|
327
342
|
"postgres",
|
328
343
|
"oracle",
|
329
|
-
"cassandra"
|
344
|
+
"cassandra",
|
345
|
+
"sqlite"
|
330
346
|
],
|
331
347
|
"pathological": true
|
332
348
|
},
|
@@ -341,7 +357,8 @@
|
|
341
357
|
"mysql",
|
342
358
|
"postgres",
|
343
359
|
"oracle",
|
344
|
-
"cassandra"
|
360
|
+
"cassandra",
|
361
|
+
"sqlite"
|
345
362
|
],
|
346
363
|
"pathological": true
|
347
364
|
},
|
@@ -356,7 +373,8 @@
|
|
356
373
|
"mysql",
|
357
374
|
"postgres",
|
358
375
|
"oracle",
|
359
|
-
"cassandra"
|
376
|
+
"cassandra",
|
377
|
+
"sqlite"
|
360
378
|
],
|
361
379
|
"pathological": true
|
362
380
|
},
|
@@ -371,7 +389,8 @@
|
|
371
389
|
"mysql",
|
372
390
|
"postgres",
|
373
391
|
"oracle",
|
374
|
-
"cassandra"
|
392
|
+
"cassandra",
|
393
|
+
"sqlite"
|
375
394
|
],
|
376
395
|
"pathological": true
|
377
396
|
},
|
@@ -386,7 +405,8 @@
|
|
386
405
|
"mysql",
|
387
406
|
"postgres",
|
388
407
|
"oracle",
|
389
|
-
"cassandra"
|
408
|
+
"cassandra",
|
409
|
+
"sqlite"
|
390
410
|
],
|
391
411
|
"pathological": true
|
392
412
|
},
|
@@ -408,7 +428,8 @@
|
|
408
428
|
"mysql",
|
409
429
|
"postgres",
|
410
430
|
"oracle",
|
411
|
-
"cassandra"
|
431
|
+
"cassandra",
|
432
|
+
"sqlite"
|
412
433
|
],
|
413
434
|
"obfuscated": [
|
414
435
|
"?"
|
@@ -445,7 +466,8 @@
|
|
445
466
|
"mysql",
|
446
467
|
"postgres",
|
447
468
|
"oracle",
|
448
|
-
"cassandra"
|
469
|
+
"cassandra",
|
470
|
+
"sqlite"
|
449
471
|
]
|
450
472
|
},
|
451
473
|
{
|
@@ -458,7 +480,8 @@
|
|
458
480
|
"mysql",
|
459
481
|
"postgres",
|
460
482
|
"oracle",
|
461
|
-
"cassandra"
|
483
|
+
"cassandra",
|
484
|
+
"sqlite"
|
462
485
|
],
|
463
486
|
"pathological": true
|
464
487
|
},
|
@@ -509,7 +532,8 @@
|
|
509
532
|
"select * from foo where bar=? and x=?"
|
510
533
|
],
|
511
534
|
"dialects": [
|
512
|
-
"cassandra"
|
535
|
+
"cassandra",
|
536
|
+
"sqlite"
|
513
537
|
]
|
514
538
|
},
|
515
539
|
{
|
@@ -519,7 +543,9 @@
|
|
519
543
|
"select * from foo where bar=? and x=?"
|
520
544
|
],
|
521
545
|
"dialects": [
|
522
|
-
"mysql"
|
546
|
+
"mysql",
|
547
|
+
"cassandra",
|
548
|
+
"sqlite"
|
523
549
|
]
|
524
550
|
},
|
525
551
|
{
|
@@ -532,7 +558,8 @@
|
|
532
558
|
"mysql",
|
533
559
|
"postgres",
|
534
560
|
"oracle",
|
535
|
-
"cassandra"
|
561
|
+
"cassandra",
|
562
|
+
"sqlite"
|
536
563
|
]
|
537
564
|
},
|
538
565
|
{
|
@@ -585,7 +612,8 @@
|
|
585
612
|
"dialects": [
|
586
613
|
"mysql",
|
587
614
|
"postgres",
|
588
|
-
"cassandra"
|
615
|
+
"cassandra",
|
616
|
+
"sqlite"
|
589
617
|
]
|
590
618
|
}
|
591
619
|
]
|