blazer 2.4.1 → 2.4.2
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 +4 -0
- data/LICENSE.txt +1 -1
- data/README.md +13 -2
- data/lib/blazer.rb +2 -0
- data/lib/blazer/adapters/druid_adapter.rb +3 -3
- data/lib/blazer/adapters/ignite_adapter.rb +54 -0
- data/lib/blazer/data_source.rb +1 -1
- data/lib/blazer/version.rb +1 -1
- metadata +4 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c8356dddcf7221e7bbf93eb4cc4d1e1b7804f08c29dd57006517d0e157f1ff4
|
4
|
+
data.tar.gz: 7ac1354b00daa9905901a6c11c6e8a948962e2c6830feeaa19d065bfa1bde9a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5959df81b7c5dbe0b608bfe565f1d98d2a7119a6309bbf934d86d1154227cd6315051ec131c9e8a8d9641022468c42724152620b4a226ee8300791d1095df858
|
7
|
+
data.tar.gz: 694140d5e5fe1904f16ccbcd95f9e18b8fcd54e7630d0df05637ddc977ab223220cb749798c8d365d77f962b131a91135bcfa9c12dc4d849f3d4caea1a642f79
|
data/CHANGELOG.md
CHANGED
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -59,7 +59,7 @@ For production, specify your database:
|
|
59
59
|
ENV["BLAZER_DATABASE_URL"] = "postgres://user:password@hostname:5432/database"
|
60
60
|
```
|
61
61
|
|
62
|
-
Blazer tries to protect against queries which modify data (by running each query in a transaction and rolling it back), but a safer approach is to use a read
|
62
|
+
Blazer tries to protect against queries which modify data (by running each query in a transaction and rolling it back), but a safer approach is to use a read-only user. [See how to create one](#permissions).
|
63
63
|
|
64
64
|
#### Checks (optional)
|
65
65
|
|
@@ -567,6 +567,7 @@ data_sources:
|
|
567
567
|
- [Amazon Redshift](#amazon-redshift)
|
568
568
|
- [Apache Drill](#apache-drill)
|
569
569
|
- [Apache Hive](#apache-hive)
|
570
|
+
- [Apache Ignite](#apache-ignite) [master]
|
570
571
|
- [Apache Spark](#apache-spark)
|
571
572
|
- [Cassandra](#cassandra)
|
572
573
|
- [Druid](#druid)
|
@@ -640,7 +641,17 @@ data_sources:
|
|
640
641
|
url: sasl://user:password@hostname:10000/database
|
641
642
|
```
|
642
643
|
|
643
|
-
Use a read-only user. Requires [HiveServer2](https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2).
|
644
|
+
Use a [read-only user](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization). Requires [HiveServer2](https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2).
|
645
|
+
|
646
|
+
### Apache Ignite
|
647
|
+
|
648
|
+
Add [ignite-client](https://github.com/ankane/ignite-ruby) to your Gemfile and set:
|
649
|
+
|
650
|
+
```yml
|
651
|
+
data_sources:
|
652
|
+
my_source:
|
653
|
+
url: ignite://user:password@hostname:10800
|
654
|
+
```
|
644
655
|
|
645
656
|
### Apache Spark
|
646
657
|
|
data/lib/blazer.rb
CHANGED
@@ -19,6 +19,7 @@ require "blazer/adapters/drill_adapter"
|
|
19
19
|
require "blazer/adapters/druid_adapter"
|
20
20
|
require "blazer/adapters/elasticsearch_adapter"
|
21
21
|
require "blazer/adapters/hive_adapter"
|
22
|
+
require "blazer/adapters/ignite_adapter"
|
22
23
|
require "blazer/adapters/influxdb_adapter"
|
23
24
|
require "blazer/adapters/mongodb_adapter"
|
24
25
|
require "blazer/adapters/neo4j_adapter"
|
@@ -242,6 +243,7 @@ Blazer.register_adapter "drill", Blazer::Adapters::DrillAdapter
|
|
242
243
|
Blazer.register_adapter "druid", Blazer::Adapters::DruidAdapter
|
243
244
|
Blazer.register_adapter "elasticsearch", Blazer::Adapters::ElasticsearchAdapter
|
244
245
|
Blazer.register_adapter "hive", Blazer::Adapters::HiveAdapter
|
246
|
+
Blazer.register_adapter "ignite", Blazer::Adapters::IgniteAdapter
|
245
247
|
Blazer.register_adapter "influxdb", Blazer::Adapters::InfluxdbAdapter
|
246
248
|
Blazer.register_adapter "neo4j", Blazer::Adapters::Neo4jAdapter
|
247
249
|
Blazer.register_adapter "presto", Blazer::Adapters::PrestoAdapter
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Blazer
|
2
|
+
module Adapters
|
3
|
+
class IgniteAdapter < BaseAdapter
|
4
|
+
def run_statement(statement, comment)
|
5
|
+
columns = []
|
6
|
+
rows = []
|
7
|
+
error = nil
|
8
|
+
|
9
|
+
begin
|
10
|
+
result = client.query("#{statement} /*#{comment}*/", schema: default_schema, statement_type: :select, timeout: data_source.timeout)
|
11
|
+
columns = result.any? ? result.first.keys : []
|
12
|
+
rows = result.map(&:values)
|
13
|
+
rescue => e
|
14
|
+
error = e.message
|
15
|
+
end
|
16
|
+
|
17
|
+
[columns, rows, error]
|
18
|
+
end
|
19
|
+
|
20
|
+
def preview_statement
|
21
|
+
"SELECT * FROM {table} LIMIT 10"
|
22
|
+
end
|
23
|
+
|
24
|
+
def tables
|
25
|
+
sql = "SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema NOT IN ('INFORMATION_SCHEMA', 'SYS')"
|
26
|
+
result = data_source.run_statement(sql)
|
27
|
+
result.rows.reject { |row| row[1].start_with?("__") }.map do |row|
|
28
|
+
(row[0] == default_schema ? row[1] : "#{row[0]}.#{row[1]}").downcase
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# TODO figure out error
|
33
|
+
# Table `__T0` can be accessed only within Ignite query context.
|
34
|
+
# def schema
|
35
|
+
# sql = "SELECT table_schema, table_name, column_name, data_type, ordinal_position FROM information_schema.columns WHERE table_schema NOT IN ('INFORMATION_SCHEMA', 'SYS')"
|
36
|
+
# result = data_source.run_statement(sql)
|
37
|
+
# result.rows.group_by { |r| [r[0], r[1]] }.map { |k, vs| {schema: k[0], table: k[1], columns: vs.sort_by { |v| v[2] }.map { |v| {name: v[2], data_type: v[3]} }} }.sort_by { |t| [t[:schema] == default_schema ? "" : t[:schema], t[:table]] }
|
38
|
+
# end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def default_schema
|
43
|
+
"PUBLIC"
|
44
|
+
end
|
45
|
+
|
46
|
+
def client
|
47
|
+
@client ||= begin
|
48
|
+
uri = URI(settings["url"])
|
49
|
+
Ignite::Client.new(host: uri.host, port: uri.port, username: uri.user, password: uri.password)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/blazer/data_source.rb
CHANGED
data/lib/blazer/version.rb
CHANGED
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.2
|
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-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -66,36 +66,8 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.1.1
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: bundler
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rake
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
69
|
description:
|
98
|
-
email: andrew@
|
70
|
+
email: andrew@ankane.org
|
99
71
|
executables: []
|
100
72
|
extensions: []
|
101
73
|
extra_rdoc_files: []
|
@@ -195,6 +167,7 @@ files:
|
|
195
167
|
- lib/blazer/adapters/druid_adapter.rb
|
196
168
|
- lib/blazer/adapters/elasticsearch_adapter.rb
|
197
169
|
- lib/blazer/adapters/hive_adapter.rb
|
170
|
+
- lib/blazer/adapters/ignite_adapter.rb
|
198
171
|
- lib/blazer/adapters/influxdb_adapter.rb
|
199
172
|
- lib/blazer/adapters/mongodb_adapter.rb
|
200
173
|
- lib/blazer/adapters/neo4j_adapter.rb
|