blazer 2.4.7 → 2.4.8
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of blazer might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +13 -1
- data/lib/blazer/adapters/elasticsearch_adapter.rb +7 -3
- data/lib/blazer/adapters/opensearch_adapter.rb +48 -0
- data/lib/blazer/version.rb +1 -1
- data/lib/blazer.rb +3 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af432d074376958f2b9f7efdeaae05a0f0c0a1fe34cc38ce537a0511985edfd1
|
4
|
+
data.tar.gz: dd0fab9ec30db7b870ae6a8afd352093cccf3be75d2c1a0e320ba7106df11f00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a78f82ce3d5544598ad363c4d31f2c676bf4be76844d81b0b02bc778072f8557c1da458cd1040fb1c9464b61fd677c4fbece3e310068acb6c09f769bf032aa7
|
7
|
+
data.tar.gz: ca0eb25f4e9a5826116d4f2a76d5fe55f71772633b557accea0aa85678e3ff4895623e0832a85de4894f18c3620180d2b04e5f9f03db51730684198e8f914a8f
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -592,6 +592,7 @@ data_sources:
|
|
592
592
|
- [MongoDB](#mongodb-1)
|
593
593
|
- [MySQL](#mysql-1)
|
594
594
|
- [Neo4j](#neo4j)
|
595
|
+
- [OpenSearch](#opensearch)
|
595
596
|
- [Oracle](#oracle)
|
596
597
|
- [PostgreSQL](#postgresql-1)
|
597
598
|
- [Presto](#presto)
|
@@ -743,7 +744,7 @@ data_sources:
|
|
743
744
|
|
744
745
|
### Elasticsearch
|
745
746
|
|
746
|
-
Add [elasticsearch](https://github.com/elastic/elasticsearch-ruby)
|
747
|
+
Add [elasticsearch](https://github.com/elastic/elasticsearch-ruby) to your Gemfile and set:
|
747
748
|
|
748
749
|
```yml
|
749
750
|
data_sources:
|
@@ -820,6 +821,17 @@ data_sources:
|
|
820
821
|
url: http://user:password@hostname:7474
|
821
822
|
```
|
822
823
|
|
824
|
+
### OpenSearch
|
825
|
+
|
826
|
+
Add [opensearch-ruby](https://github.com/opensearch-project/opensearch-ruby) to your Gemfile and set:
|
827
|
+
|
828
|
+
```yml
|
829
|
+
data_sources:
|
830
|
+
my_source:
|
831
|
+
adapter: opensearch
|
832
|
+
url: http://user:password@hostname:9200
|
833
|
+
```
|
834
|
+
|
823
835
|
### Oracle
|
824
836
|
|
825
837
|
Add [activerecord-oracle_enhanced-adapter](https://github.com/rsim/oracle-enhanced) and [ruby-oci8](https://github.com/kubo/ruby-oci8) to your Gemfile and set:
|
@@ -7,15 +7,15 @@ module Blazer
|
|
7
7
|
error = nil
|
8
8
|
|
9
9
|
begin
|
10
|
-
response = client.
|
10
|
+
response = client.transport.perform_request("POST", endpoint, {}, {query: "#{statement} /*#{comment}*/"}).body
|
11
11
|
columns = response["columns"].map { |v| v["name"] }
|
12
12
|
# Elasticsearch does not differentiate between dates and times
|
13
|
-
date_indexes = response["columns"].each_index.select { |i| response["columns"][i]["type"]
|
13
|
+
date_indexes = response["columns"].each_index.select { |i| ["date", "datetime"].include?(response["columns"][i]["type"]) }
|
14
14
|
if columns.any?
|
15
15
|
rows = response["rows"]
|
16
16
|
date_indexes.each do |i|
|
17
17
|
rows.each do |row|
|
18
|
-
row[i]
|
18
|
+
row[i] &&= Time.parse(row[i])
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -38,6 +38,10 @@ module Blazer
|
|
38
38
|
|
39
39
|
protected
|
40
40
|
|
41
|
+
def endpoint
|
42
|
+
@endpoint ||= client.info["version"]["number"].to_i >= 7 ? "_sql" : "_xpack/sql"
|
43
|
+
end
|
44
|
+
|
41
45
|
def client
|
42
46
|
@client ||= Elasticsearch::Client.new(url: settings["url"])
|
43
47
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Blazer
|
2
|
+
module Adapters
|
3
|
+
class OpensearchAdapter < BaseAdapter
|
4
|
+
def run_statement(statement, comment)
|
5
|
+
columns = []
|
6
|
+
rows = []
|
7
|
+
error = nil
|
8
|
+
|
9
|
+
begin
|
10
|
+
response = client.transport.perform_request("POST", "_plugins/_sql", {}, {query: "#{statement} /*#{comment}*/"}).body
|
11
|
+
columns = response["schema"].map { |v| v["name"] }
|
12
|
+
# TODO typecast more types
|
13
|
+
# https://github.com/opensearch-project/sql/blob/main/docs/user/general/datatypes.rst
|
14
|
+
date_indexes = response["schema"].each_index.select { |i| response["schema"][i]["type"] == "timestamp" }
|
15
|
+
if columns.any?
|
16
|
+
rows = response["datarows"]
|
17
|
+
utc = ActiveSupport::TimeZone["Etc/UTC"]
|
18
|
+
date_indexes.each do |i|
|
19
|
+
rows.each do |row|
|
20
|
+
row[i] &&= utc.parse(row[i])
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
rescue => e
|
25
|
+
error = e.message
|
26
|
+
end
|
27
|
+
|
28
|
+
[columns, rows, error]
|
29
|
+
end
|
30
|
+
|
31
|
+
def tables
|
32
|
+
indices = client.cat.indices(format: "json").map { |v| v["index"] }
|
33
|
+
aliases = client.cat.aliases(format: "json").map { |v| v["alias"] }
|
34
|
+
(indices + aliases).uniq.sort
|
35
|
+
end
|
36
|
+
|
37
|
+
def preview_statement
|
38
|
+
"SELECT * FROM `{table}` LIMIT 10"
|
39
|
+
end
|
40
|
+
|
41
|
+
protected
|
42
|
+
|
43
|
+
def client
|
44
|
+
@client ||= OpenSearch::Client.new(url: settings["url"])
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/blazer/version.rb
CHANGED
data/lib/blazer.rb
CHANGED
@@ -23,6 +23,7 @@ require "blazer/adapters/ignite_adapter"
|
|
23
23
|
require "blazer/adapters/influxdb_adapter"
|
24
24
|
require "blazer/adapters/mongodb_adapter"
|
25
25
|
require "blazer/adapters/neo4j_adapter"
|
26
|
+
require "blazer/adapters/opensearch_adapter"
|
26
27
|
require "blazer/adapters/presto_adapter"
|
27
28
|
require "blazer/adapters/salesforce_adapter"
|
28
29
|
require "blazer/adapters/soda_adapter"
|
@@ -250,9 +251,10 @@ Blazer.register_adapter "elasticsearch", Blazer::Adapters::ElasticsearchAdapter
|
|
250
251
|
Blazer.register_adapter "hive", Blazer::Adapters::HiveAdapter
|
251
252
|
Blazer.register_adapter "ignite", Blazer::Adapters::IgniteAdapter
|
252
253
|
Blazer.register_adapter "influxdb", Blazer::Adapters::InfluxdbAdapter
|
254
|
+
Blazer.register_adapter "mongodb", Blazer::Adapters::MongodbAdapter
|
253
255
|
Blazer.register_adapter "neo4j", Blazer::Adapters::Neo4jAdapter
|
256
|
+
Blazer.register_adapter "opensearch", Blazer::Adapters::OpensearchAdapter
|
254
257
|
Blazer.register_adapter "presto", Blazer::Adapters::PrestoAdapter
|
255
|
-
Blazer.register_adapter "mongodb", Blazer::Adapters::MongodbAdapter
|
256
258
|
Blazer.register_adapter "salesforce", Blazer::Adapters::SalesforceAdapter
|
257
259
|
Blazer.register_adapter "soda", Blazer::Adapters::SodaAdapter
|
258
260
|
Blazer.register_adapter "spark", Blazer::Adapters::SparkAdapter
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blazer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -169,6 +169,7 @@ files:
|
|
169
169
|
- lib/blazer/adapters/influxdb_adapter.rb
|
170
170
|
- lib/blazer/adapters/mongodb_adapter.rb
|
171
171
|
- lib/blazer/adapters/neo4j_adapter.rb
|
172
|
+
- lib/blazer/adapters/opensearch_adapter.rb
|
172
173
|
- lib/blazer/adapters/presto_adapter.rb
|
173
174
|
- lib/blazer/adapters/salesforce_adapter.rb
|
174
175
|
- lib/blazer/adapters/snowflake_adapter.rb
|
@@ -225,7 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
226
|
- !ruby/object:Gem::Version
|
226
227
|
version: '0'
|
227
228
|
requirements: []
|
228
|
-
rubygems_version: 3.2.
|
229
|
+
rubygems_version: 3.2.32
|
229
230
|
signing_key:
|
230
231
|
specification_version: 4
|
231
232
|
summary: Explore your data with SQL. Easily create charts and dashboards, and share
|