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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b2a6413e7d7d49e280cbb8d6a880ec32c6c49452e69f980183b592bd927fa90a
4
- data.tar.gz: 2e988e2010ae919dbfbb7c4c922753425b16eb0ee1e6fe309789cb44a450d8f7
3
+ metadata.gz: 8c8356dddcf7221e7bbf93eb4cc4d1e1b7804f08c29dd57006517d0e157f1ff4
4
+ data.tar.gz: 7ac1354b00daa9905901a6c11c6e8a948962e2c6830feeaa19d065bfa1bde9a6
5
5
  SHA512:
6
- metadata.gz: 50fc2e2d4c430935e05d14df65aea648df86c4792e58007ff0f6015a5c58a5842db4f9d22d430ac7f84b094325d45c41406f67676d6ec3d3535266e47ebd53a0
7
- data.tar.gz: 3118830b6ab4198fe383615c09319d98619480e2f88dca117b92e99c228da82a5556f7a9948ad57dd45e788cacc20efec370e0eb68770919e5dab9909bd4f1ef
6
+ metadata.gz: 5959df81b7c5dbe0b608bfe565f1d98d2a7119a6309bbf934d86d1154227cd6315051ec131c9e8a8d9641022468c42724152620b4a226ee8300791d1095df858
7
+ data.tar.gz: 694140d5e5fe1904f16ccbcd95f9e18b8fcd54e7630d0df05637ddc977ab223220cb749798c8d365d77f962b131a91135bcfa9c12dc4d849f3d4caea1a642f79
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 2.4.2 (2021-02-08)
2
+
3
+ - Added support for Apache Ignite
4
+
1
5
  ## 2.4.1 (2021-01-25)
2
6
 
3
7
  - Added cohorts for MySQL
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014-2020 Andrew Kane
1
+ Copyright (c) 2014-2021 Andrew Kane
2
2
 
3
3
  MIT License
4
4
 
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 only user. [See how to create one](#permissions).
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
@@ -42,9 +42,9 @@ module Blazer
42
42
  end
43
43
  end
44
44
  end
45
- rescue => e
46
- error = e.message
47
- end
45
+ rescue => e
46
+ error = e.message
47
+ end
48
48
 
49
49
  [columns, rows, error]
50
50
  end
@@ -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
@@ -185,7 +185,7 @@ module Blazer
185
185
  def detect_adapter
186
186
  schema = settings["url"].to_s.split("://").first
187
187
  case schema
188
- when "mongodb", "presto", "cassandra"
188
+ when "mongodb", "presto", "cassandra", "ignite"
189
189
  schema
190
190
  else
191
191
  "sql"
@@ -1,3 +1,3 @@
1
1
  module Blazer
2
- VERSION = "2.4.1"
2
+ VERSION = "2.4.2"
3
3
  end
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.1
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-01-25 00:00:00.000000000 Z
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@chartkick.com
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