Skip to content

Commit

Permalink
Merge pull request #33 from Adarsh-jaiss/main
Browse files Browse the repository at this point in the history
fixed redhsift and snowflake(minor)
  • Loading branch information
tqindia authored May 22, 2024
2 parents c8cab44 + c076fde commit 7a96a2e
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 17 deletions.
28 changes: 20 additions & 8 deletions databases/redshift/redshift.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,18 +167,30 @@ func (r *Redshift) Execute(query string) ([]byte, error) {
}

// Decode base64 data
for _, val := range values {
strVal, ok := val.(*string)
if ok && strVal != nil && isBase64(*strVal) {
decoded, err := base64.StdEncoding.DecodeString(*strVal)
if err != nil {
return nil, fmt.Errorf("error decoding base64 data: %v", err)
stringRow := make([]interface{}, len(values))
for i, val := range values {
switch v := val.(type) {
case []byte:
strVal := string(v)
if isBase64(strVal) {
decoded, err := base64.StdEncoding.DecodeString(strVal)
if err != nil {
return nil, fmt.Errorf("error decoding base64 data: %v", err)
}
stringRow[i] = string(decoded)
} else {
stringRow[i] = strVal
}
*strVal = string(decoded)
case string:
stringRow[i] = v
case nil:
stringRow[i] = nil
default:
stringRow[i] = fmt.Sprintf("%v", v)
}
}
results = append(results, stringRow)

results = append(results, values)
}

// Check for errors from iterating over rows
Expand Down
28 changes: 19 additions & 9 deletions databases/snowflake/snowflake.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,19 +178,29 @@ func (s *Snowflake) Execute(query string) ([]byte, error) {
}

// Decode base64 data
stringRow := make([]interface{}, len(values))
for i, val := range values {
strVal, ok := val.(string)
if ok && isBase64(strVal) {
// Redecode the value to get the decoded result
decoded, err := base64.StdEncoding.DecodeString(strVal)
if err != nil {
return nil, fmt.Errorf("error decoding base64 data: %v", err)
switch v := val.(type) {
case []byte:
strVal := string(v)
if isBase64(strVal) {
decoded, err := base64.StdEncoding.DecodeString(strVal)
if err != nil {
return nil, fmt.Errorf("error decoding base64 data: %v", err)
}
stringRow[i] = string(decoded)
} else {
stringRow[i] = strVal
}
values[i] = string(decoded)
case string:
stringRow[i] = v
case nil:
stringRow[i] = nil
default:
stringRow[i] = fmt.Sprintf("%v", v)
}
}

results = append(results, values)
results = append(results, stringRow)
}

// Check for errors from iterating over rows
Expand Down

0 comments on commit 7a96a2e

Please sign in to comment.