mirror of https://github.com/jackc/pgx.git
Fix scan empty array into multi-dimension slice
parent
7193e48923
commit
bcc0af3f56
|
@ -126,6 +126,23 @@ func TestArrayCodecScanMultipleDimensions(t *testing.T) {
|
|||
require.NoError(t, rows.Err())
|
||||
}
|
||||
|
||||
func TestArrayCodecScanMultipleDimensionsEmpty(t *testing.T) {
|
||||
conn := testutil.MustConnectPgx(t)
|
||||
defer testutil.MustCloseContext(t, conn)
|
||||
|
||||
rows, err := conn.Query(context.Background(), `select '{}'::int4[]`)
|
||||
require.NoError(t, err)
|
||||
|
||||
for rows.Next() {
|
||||
var ss [][]int32
|
||||
err := rows.Scan(&ss)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, [][]int32{}, ss)
|
||||
}
|
||||
|
||||
require.NoError(t, rows.Err())
|
||||
}
|
||||
|
||||
func TestArrayCodecScanWrongMultipleDimensions(t *testing.T) {
|
||||
conn := testutil.MustConnectPgx(t)
|
||||
defer testutil.MustCloseContext(t, conn)
|
||||
|
|
|
@ -763,7 +763,10 @@ func (a *anyMultiDimSliceArray) SetDimensions(dimensions []ArrayDimension) error
|
|||
|
||||
switch len(dimensions) {
|
||||
case 0:
|
||||
return fmt.Errorf("impossible: non-nil dimensions but zero elements")
|
||||
// Empty, but non-nil array
|
||||
slice := reflect.MakeSlice(sliceType, 0, 0)
|
||||
a.slice.Set(slice)
|
||||
return nil
|
||||
case 1:
|
||||
elementCount := cardinality(dimensions)
|
||||
slice := reflect.MakeSlice(sliceType, elementCount, elementCount)
|
||||
|
|
Loading…
Reference in New Issue