tina4ruby 3.11.13 → 3.11.14
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 +4 -4
- data/lib/tina4/drivers/firebird_driver.rb +19 -5
- data/lib/tina4/drivers/postgres_driver.rb +11 -1
- data/lib/tina4/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0306b1bed1468e9d48729f576f4494f01f0ba42bd0868f137c56a533d4d3a987
|
|
4
|
+
data.tar.gz: 500e0e589914771bdc96b5b901dc0b9948ecf901df072b0ed845fd31efe7ff34
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 225d391063a44527dc0df900ee7cce8fa20151be48a6a786fd41e2f6130253cff8899e1939a1a067e2d3f6879463f8b5cd7c888a85af29baaac85c8608a1607e
|
|
7
|
+
data.tar.gz: 0ece15acd6ebdeef69e90f67e10b250a3c1e05dee513ea3fad2f5794df93abc10141471362e59040bcff03f3aeeb2986dc4e7e6e1e1670a7721e26af82e0d902
|
|
@@ -34,11 +34,12 @@ module Tina4
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def execute_query(sql, params = [])
|
|
37
|
-
if params.empty?
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
rows = if params.empty?
|
|
38
|
+
@connection.query(:hash, sql)
|
|
39
|
+
else
|
|
40
|
+
@connection.query(:hash, sql, *params)
|
|
41
|
+
end
|
|
42
|
+
rows.map { |row| decode_blobs(stringify_keys(row)) }
|
|
42
43
|
end
|
|
43
44
|
|
|
44
45
|
def execute(sql, params = [])
|
|
@@ -105,6 +106,19 @@ module Tina4
|
|
|
105
106
|
def stringify_keys(hash)
|
|
106
107
|
hash.each_with_object({}) { |(k, v), h| h[k.to_s] = v }
|
|
107
108
|
end
|
|
109
|
+
|
|
110
|
+
# Ensure Firebird BLOB columns are proper byte strings.
|
|
111
|
+
# The Fb gem may return BLOBs as resource handles or IO objects —
|
|
112
|
+
# read them into strings if needed.
|
|
113
|
+
def decode_blobs(row)
|
|
114
|
+
row.each do |key, value|
|
|
115
|
+
if value.respond_to?(:read)
|
|
116
|
+
row[key] = value.read
|
|
117
|
+
value.close if value.respond_to?(:close)
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
row
|
|
121
|
+
end
|
|
108
122
|
end
|
|
109
123
|
end
|
|
110
124
|
end
|
|
@@ -28,7 +28,7 @@ module Tina4
|
|
|
28
28
|
else
|
|
29
29
|
@connection.exec_params(converted_sql, params)
|
|
30
30
|
end
|
|
31
|
-
result.map { |row| symbolize_keys(row) }
|
|
31
|
+
result.map { |row| decode_blobs(symbolize_keys(row)) }
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def execute(sql, params = [])
|
|
@@ -101,6 +101,16 @@ module Tina4
|
|
|
101
101
|
def symbolize_keys(hash)
|
|
102
102
|
hash.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
|
|
103
103
|
end
|
|
104
|
+
|
|
105
|
+
# Ensure binary (bytea) columns are proper byte strings.
|
|
106
|
+
# PostgreSQL's pg gem returns bytea as ASCII-8BIT encoded strings —
|
|
107
|
+
# they're already raw bytes, just tag them so Ruby treats them right.
|
|
108
|
+
def decode_blobs(row)
|
|
109
|
+
# No conversion needed — pg gem returns bytea as ASCII-8BIT strings
|
|
110
|
+
# which are raw bytes. Users can .force_encoding("UTF-8") for text
|
|
111
|
+
# BLOBs or use the bytes directly for binary data.
|
|
112
|
+
row
|
|
113
|
+
end
|
|
104
114
|
end
|
|
105
115
|
end
|
|
106
116
|
end
|
data/lib/tina4/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tina4ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.11.
|
|
4
|
+
version: 3.11.14
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tina4 Team
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-04-
|
|
11
|
+
date: 2026-04-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rack
|