Skip to content

Commit 5de778f

Browse files
feat(snowflake): add coverage for all common and many exotic Snowflake data types (#95)
Co-authored-by: Scotty Pate <scottypate@me.com>
1 parent 62aca65 commit 5de778f

3 files changed

Lines changed: 10 additions & 3 deletions

File tree

internal/engine/columns.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ func processModelColumn(expr *sqlparser.AliasedExpr, cp *columnParser) error {
262262
if _, ok := cp.columns[cp.tableName]; !ok {
263263
cp.columns[cp.tableName] = make(map[ColumnName]Column)
264264
}
265+
265266
col := Column{
266267
TableName: &cp.tableName,
267268
Position: cp.selectIdx,

internal/engine/snowflake.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,17 +110,19 @@ func processSnowflakeColumns(rows *sql.Rows) ([]any, error) {
110110
valuePtrs[i] = new(duckdbDecimal)
111111
case "BIGINT":
112112
valuePtrs[i] = new(int64)
113+
case "BOOLEAN":
114+
valuePtrs[i] = new(bool)
113115
case "INT", "MEDIUMINT":
114116
valuePtrs[i] = new(int32)
115117
case "SMALLINT", "YEAR":
116118
valuePtrs[i] = new(int16)
117119
case "TINYINT":
118120
valuePtrs[i] = new(int8)
119-
case "BIT", "BINARY", "VARBINARY", "TINYBLOB", "MEDIUMBLOB", "LONGBLOB", "BLOB":
121+
case "BINARY", "VARBINARY", "VARIANT", "OBJECT", "ARRAY":
120122
valuePtrs[i] = new([]byte)
121-
case "DATE", "DATETIME", "TIMESTAMP", "TIMESTAMP_NTZ":
123+
case "DATE", "DATETIME", "TIMESTAMP_TZ", "TIMESTAMP_LTZ", "TIMESTAMP_NTZ":
122124
valuePtrs[i] = new(time.Time)
123-
case "CHAR", "VARCHAR", "TEXT", "TINYTEXT", "MEDIUMTEXT", "LONGTEXT", "ENUM", "SET", "JSON", "TIME":
125+
case "CHAR", "CHARACTER", "NCHAR", "VARCHAR", "TEXT", "STRING", "NVARCHAR", "NVARCHAR2", "CHAR VARYING", "NCHAR VARYING", "ENUM", "SET", "JSON", "TIME":
124126
Debug(fmt.Sprintf("Column type is a string: %s", columnType.DatabaseTypeName()))
125127
valuePtrs[i] = new(string)
126128
default:

internal/engine/types.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,8 @@ var duckdbTypeMap = map[string]string{
215215
"date": "date",
216216
"timestamp": "timestamp",
217217
"datetime": "timestamp",
218+
"timestamp_tz": "timestamp", //snowflake
219+
"timestamp_ltz": "timestamp", //snowflake
218220
"timestamp_ntz": "timestamp", //snowflake
219221
"timestamp without time zone": "timestamp",
220222
"timestamp with time zone": "timestamp",
@@ -225,6 +227,8 @@ var duckdbTypeMap = map[string]string{
225227
"mediumblob": "blob",
226228
"longblob": "blob",
227229
"bytea": "blob",
230+
"variant": "blob", // snowflake
231+
"object": "json", // snowflake
228232
"json": "json",
229233
"jsonb": "json",
230234
"inet": "varchar",

0 commit comments

Comments
 (0)