ruby_snowflake_client 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: df1c4a15dca0f71a8d675287c635eec979e7f082164ef0a46e38922d935c64c5
4
- data.tar.gz: 5aaeb005099a2726e2d18c38e863d24e0a5a13f605df29794a8e94797e6d88c2
3
+ metadata.gz: 2e0c56fd4b0b95f40bbd1ed55dc9fb10bc6284ac198b527b3dfa977f2419fa5f
4
+ data.tar.gz: 9351e25573c2553ec2ab6123df8d829e53749ee25e5c6a82de9d4c1e7ca65c4e
5
5
  SHA512:
6
- metadata.gz: 5def488e978d41d6815d102f8b9e33cee3746720ab3ed60720d65ab8f285ab3801611481398ca7e4ab17b22ca8b0c4ccf8183e309d4f7468753065f14c75d5e6
7
- data.tar.gz: 462d4579b9cac2309f77e0aafcdf1dcb9d41b263ab44831166eebb5821e2989f1d37b4150126c917f6514ec86d6c93e5a1b4c65ec85464894fa37ecdcebd0a4f
6
+ metadata.gz: d414d31259999434fc6323be3fb41a3d1fa854fccad0a09902885bab19e5ed5c68e921d1ca254baaf2cf11f46e91b1fcb9c66f6656f0130798774e5b95f44f48
7
+ data.tar.gz: a4e515cdf374ca890ba03ca04602c10f0382bf4768d626d03d50a9febf26f8930bc294a56e8447290bd4677163521c35f9fded4dd81d7741f0d1bb087507c751
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby_snowflake_client (1.0.1)
4
+ ruby_snowflake_client (1.0.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/ext/result.go CHANGED
@@ -21,6 +21,12 @@ import (
21
21
  gopointer "github.com/mattn/go-pointer"
22
22
  )
23
23
 
24
+ func wrapRbRaise(err error) {
25
+ fmt.Printf("[ruby-snowflake-client] Error encountered: %s\n", err.Error())
26
+ fmt.Printf("[ruby-snowflake-client] Will call `rb_raise`\n")
27
+ rb_raise(C.rb_eArgError, "%s", err.Error())
28
+ }
29
+
24
30
  func getResultStruct(self C.VALUE) *SnowflakeResult {
25
31
  ivar := C.rb_ivar_get(self, RESULT_IDENTIFIER)
26
32
 
@@ -28,7 +34,8 @@ func getResultStruct(self C.VALUE) *SnowflakeResult {
28
34
  ptr := gopointer.Restore(str)
29
35
  sr, ok := ptr.(*SnowflakeResult)
30
36
  if !ok || sr.rows == nil {
31
- rb_raise(C.rb_eArgError, "%s", errors.New("Empty result; please run a query via `client.fetch(\"SQL\")`"))
37
+ err := errors.New("Empty result; please run a query via `client.fetch(\"SQL\")`")
38
+ wrapRbRaise(err)
32
39
  return nil
33
40
  }
34
41
 
@@ -105,7 +112,8 @@ func (res SnowflakeResult) ScanNextRow(debug bool) C.VALUE {
105
112
 
106
113
  err := rows.Scan(rawData...)
107
114
  if err != nil {
108
- rb_raise(C.rb_eArgError, "Cannot scan row: '%s'", err)
115
+ err = fmt.Errorf("Cannot scan row: '%s'", err)
116
+ wrapRbRaise(err)
109
117
  }
110
118
 
111
119
  // trick from postgres; keep hash: pg_result.c:1088
@@ -139,7 +147,8 @@ func (res SnowflakeResult) ScanNextRow(debug bool) C.VALUE {
139
147
  str := v
140
148
  rbVal = RbString(str)
141
149
  default:
142
- rb_raise(C.rb_eArgError, "Cannot parse type '%s'", fmt.Errorf("%T", v))
150
+ err := fmt.Errorf("Cannot parse type : '%T'", v)
151
+ wrapRbRaise(err)
143
152
  }
144
153
  }
145
154
  C.rb_hash_aset(hash, col_name, rbVal)
@@ -136,7 +136,7 @@ func ObjFetch(self C.VALUE, statement C.VALUE) C.VALUE {
136
136
  f := gopointer.Restore(req)
137
137
  x, ok := f.(*SnowflakeClient)
138
138
  if !ok {
139
- rb_raise(C.rb_eArgError, "%s", errors.New("cannot convert x to pointer"))
139
+ wrapRbRaise((errors.New("cannot convert SnowflakeClient pointer in ObjFetch")))
140
140
  }
141
141
 
142
142
  return x.Fetch(statement)
@@ -1,3 +1,3 @@
1
1
  module RubySnowflakeClient
2
- VERSION = '1.0.1'
2
+ VERSION = '1.0.2'
3
3
  end
@@ -3,15 +3,32 @@
3
3
  module Snowflake
4
4
  require "ruby_snowflake_client_ext" # build bundle of the go files
5
5
 
6
+ class Error < StandardError
7
+ attr_reader :details
8
+
9
+ def initialize(details)
10
+ @details = details
11
+ end
12
+ end
13
+
6
14
  class Client
7
15
  attr_reader :error
8
16
  # Wrap the private _connect method, as sending kwargs to Go would require
9
17
  # wrapping the function in C as the current CGO has a limitation on
10
18
  # accepting variadic arguments for functions.
11
19
  def connect(account:"", warehouse:"", database:"", schema: "", user: "", password: "", role: "")
12
- _connect(account, warehouse, database, schema, user, password, role)
20
+ @connection_details = {
21
+ account: account,
22
+ warehouse: warehouse,
23
+ database: database,
24
+ schema: schema,
25
+ user: user,
26
+ role: role
27
+ }
28
+
29
+ _connect(account.dup, warehouse.dup, database.dup, schema.dup, user.dup, password.dup, role.dup)
13
30
  if error != nil
14
- raise(error)
31
+ raise Error.new(@connection_details), error
15
32
  end
16
33
  true
17
34
  end
@@ -19,7 +36,7 @@ module Snowflake
19
36
  def fetch(sql)
20
37
  result = _fetch(sql)
21
38
  return result if result.valid?
22
- raise(result.error)
39
+ raise Error.new(@connection_details.merge(sql: sql)), result.error
23
40
  end
24
41
  end
25
42
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_snowflake_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rinsed