lib / pq

Pure Go Postgres driver for database/sql
https://pkg.go.dev/github.com/lib/pq
MIT License
8.86k stars 908 forks source link

pq.Array does not support array of smallint from postgresql #1099

Open suhaily87 opened 1 year ago

suhaily87 commented 1 year ago

For github.com/lib/pq v1.10.7, pq.Array does not support array of int16 that represents smallint array data type in postgresql.

`func Array(a interface{}) interface { driver.Valuer sql.Scanner } { switch a := a.(type) { case []bool: return (BoolArray)(&a) case []float64: return (Float64Array)(&a) case []float32: return (Float32Array)(&a) case []int64: return (Int64Array)(&a) case []int32: return (Int32Array)(&a) case []string: return (StringArray)(&a) case [][]byte: return (*ByteaArray)(&a)

case *[]bool:
    return (*BoolArray)(a)
case *[]float64:
    return (*Float64Array)(a)
case *[]float32:
    return (*Float32Array)(a)
case *[]int64:
    return (*Int64Array)(a)
case *[]int32:
    return (*Int32Array)(a)
case *[]string:
    return (*StringArray)(a)
case *[][]byte:
    return (*ByteaArray)(a)
}

return GenericArray{a}

}`

This cause an error during Row.Scan with following message:

Error: Received unexpected error: sql: Scan error on column index 2, name "columnName": pq: parsing array element index 0: pq: scanning to int16 is not implemented; only sql.Scanner