ruby_snowflake_client 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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