2
0

Fix test and avoid change to array signatures

typed_array.go.erb was not updated back in
a8802b16cc when Value, EncodeBinary,
EncodeText, and MarshalJSON were changed to be defined on T instead of
*T. This has been corrected.
This commit is contained in:
Jack Christensen
2019-11-14 20:40:41 -06:00
parent 0079108e29
commit be36a7e14b
24 changed files with 100 additions and 79 deletions
+31 -3
View File
@@ -61,6 +61,25 @@ func (dst *Int4Array) Set(src interface{}) error {
}
}
case []int:
if value == nil {
*dst = Int4Array{Status: Null}
} else if len(value) == 0 {
*dst = Int4Array{Status: Present}
} else {
elements := make([]Int4, len(value))
for i := range value {
if err := elements[i].Set(value[i]); err != nil {
return err
}
}
*dst = Int4Array{
Elements: elements,
Dimensions: []ArrayDimension{{Length: int32(len(elements)), LowerBound: 1}},
Status: Present,
}
}
case []Int4:
if value == nil {
*dst = Int4Array{Status: Null}
@@ -117,6 +136,15 @@ func (src *Int4Array) AssignTo(dst interface{}) error {
}
return nil
case *[]int:
*v = make([]int, len(src.Elements))
for i := range src.Elements {
if err := src.Elements[i].AssignTo(&((*v)[i])); err != nil {
return err
}
}
return nil
default:
if nextDst, retry := GetAssignToDstType(dst); retry {
return src.AssignTo(nextDst)
@@ -208,7 +236,7 @@ func (dst *Int4Array) DecodeBinary(ci *ConnInfo, src []byte) error {
return nil
}
func (src *Int4Array) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) {
func (src Int4Array) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) {
switch src.Status {
case Null:
return nil, nil
@@ -265,7 +293,7 @@ func (src *Int4Array) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) {
return buf, nil
}
func (src *Int4Array) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) {
func (src Int4Array) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) {
switch src.Status {
case Null:
return nil, nil
@@ -328,7 +356,7 @@ func (dst *Int4Array) Scan(src interface{}) error {
}
// Value implements the database/sql/driver Valuer interface.
func (src *Int4Array) Value() (driver.Value, error) {
func (src Int4Array) Value() (driver.Value, error) {
buf, err := src.EncodeText(nil, nil)
if err != nil {
return nil, err