spectre-mysql 2.0.1 → 2.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/spectre/mysql.rb +27 -2
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9db989b8a26228411dfc8f886d44667f8bfd62b93e64312ef3b92aebc4ad5ce1
4
- data.tar.gz: 97f5a35097724a2eaf57b1b770190766e7a9859695e9586c51a7408b271603b4
3
+ metadata.gz: 06d437bc149a21da027b8388b21bb85462a2f4d04a4e3183c57447e6c2a5c756
4
+ data.tar.gz: 79588cac00639fc145c5f08064fc1444f00280ec94efd78f9687e179824ab7d1
5
5
  SHA512:
6
- metadata.gz: a34d8b08f8dd3170d35e373e81f5f891e0ba7b03dab72cad7a93dcba0731cc01a24a5a222bdd75740d9ce578a35621480dc8e6e0faaab5ca023f123ac80c77c8
7
- data.tar.gz: 966d579814fdb941c64baf3a989a2a2ecd18ebcd81ef54310e7075b6edf0c8d7bb3e84b9f568b47ab68b36ee674f15224221aa98db4ee131e8fd33c286d5af02
6
+ metadata.gz: dae040d6f4fb8f9db79cdf62eafd6074694b1730d248bb00289aa9719277bab0f96eda6150219374da8f68b125979a4fea90642253425c1d64c630a58e9ee18c
7
+ data.tar.gz: 7c7c148a57c20fc03ce2e6421a524058ccd99d74f6d8975d3c5b55ac36149d62d0d73858ce4306e3c09718b3ec7c633e41409f672c5fcd0786054d80582dbcf2
data/lib/spectre/mysql.rb CHANGED
@@ -79,10 +79,35 @@ module Spectre
79
79
 
80
80
  query['query']&.each do |statement|
81
81
  @logger.info("Executing statement '#{statement}'")
82
- res = client.query(statement, cast_booleans: true)
82
+
83
+ # FIXED: Disable automatic casting to prevent BigDecimal errors
84
+ # This prevents mysql2 from trying to cast VARCHAR columns to BigDecimal
85
+ res = client.query(statement, cast: false, cast_booleans: false)
83
86
  end
84
87
 
85
- @result = res.map { |row| OpenStruct.new row } if res
88
+ # FIXED: Safely convert rows to OpenStruct with error handling
89
+ # If casting is still problematic, we catch the error and retry with manual conversion
90
+ if res
91
+ begin
92
+ @result = res.map { |row| OpenStruct.new row }
93
+ rescue ArgumentError => e
94
+ raise unless e.message.include?('BigDecimal')
95
+
96
+ @logger.warn "BigDecimal casting error detected, falling back to safe conversion: #{e.message}"
97
+ # Manually convert each row, skipping problematic values
98
+ @result = res.map do |row|
99
+ safe_row = {}
100
+ row.each do |key, value|
101
+ safe_row[key] = begin
102
+ value.to_s
103
+ rescue StandardError
104
+ value
105
+ end
106
+ end
107
+ OpenStruct.new(safe_row)
108
+ end
109
+ end
110
+ end
86
111
 
87
112
  client.close
88
113
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spectre-mysql
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Neubauer
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-21 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: bigdecimal
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
96
  requirements: []
97
- rubygems_version: 3.6.2
97
+ rubygems_version: 3.6.9
98
98
  specification_version: 4
99
99
  summary: MySQL module for spectre
100
100
  test_files: []