mirror of https://github.com/jackc/pgx.git
Expand pgtype.Value interface
- Include and rename ConvertFrom to Set - Add Get - Include AssignTov3-numeric-wip
parent
542eac08c6
commit
57494a6a0f
|
@ -23,7 +23,7 @@ type Aclitem struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Aclitem) ConvertFrom(src interface{}) error {
|
func (dst *Aclitem) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Aclitem:
|
case Aclitem:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -37,7 +37,7 @@ func (dst *Aclitem) ConvertFrom(src interface{}) error {
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingStringType(src); ok {
|
if originalSrc, ok := underlyingStringType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Aclitem", value)
|
return fmt.Errorf("cannot convert %v to Aclitem", value)
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,17 @@ func (dst *Aclitem) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Aclitem) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst.String
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Aclitem) AssignTo(dst interface{}) error {
|
func (src *Aclitem) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
case *string:
|
case *string:
|
||||||
|
|
|
@ -14,7 +14,7 @@ type AclitemArray struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *AclitemArray) ConvertFrom(src interface{}) error {
|
func (dst *AclitemArray) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case AclitemArray:
|
case AclitemArray:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -27,7 +27,7 @@ func (dst *AclitemArray) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Aclitem, len(value))
|
elements := make([]Aclitem, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ func (dst *AclitemArray) ConvertFrom(src interface{}) error {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Aclitem", value)
|
return fmt.Errorf("cannot convert %v to Aclitem", value)
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,17 @@ func (dst *AclitemArray) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *AclitemArray) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *AclitemArray) AssignTo(dst interface{}) error {
|
func (src *AclitemArray) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ func TestAclitemArrayTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAclitemArrayConvertFrom(t *testing.T) {
|
func TestAclitemArraySet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.AclitemArray
|
result pgtype.AclitemArray
|
||||||
|
@ -71,7 +71,7 @@ func TestAclitemArrayConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.AclitemArray
|
var r pgtype.AclitemArray
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ func TestAclitemTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAclitemConvertFrom(t *testing.T) {
|
func TestAclitemSet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Aclitem
|
result pgtype.Aclitem
|
||||||
|
@ -27,7 +27,7 @@ func TestAclitemConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var d pgtype.Aclitem
|
var d pgtype.Aclitem
|
||||||
err := d.ConvertFrom(tt.source)
|
err := d.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ type Bool struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Bool) ConvertFrom(src interface{}) error {
|
func (dst *Bool) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Bool:
|
case Bool:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -26,7 +26,7 @@ func (dst *Bool) ConvertFrom(src interface{}) error {
|
||||||
*dst = Bool{Bool: bb, Status: Present}
|
*dst = Bool{Bool: bb, Status: Present}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingBoolType(src); ok {
|
if originalSrc, ok := underlyingBoolType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Bool", value)
|
return fmt.Errorf("cannot convert %v to Bool", value)
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,17 @@ func (dst *Bool) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Bool) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst.Bool
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Bool) AssignTo(dst interface{}) error {
|
func (src *Bool) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
case *bool:
|
case *bool:
|
||||||
|
|
|
@ -15,7 +15,7 @@ type BoolArray struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *BoolArray) ConvertFrom(src interface{}) error {
|
func (dst *BoolArray) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case BoolArray:
|
case BoolArray:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -28,7 +28,7 @@ func (dst *BoolArray) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Bool, len(value))
|
elements := make([]Bool, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ func (dst *BoolArray) ConvertFrom(src interface{}) error {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Bool", value)
|
return fmt.Errorf("cannot convert %v to Bool", value)
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,17 @@ func (dst *BoolArray) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *BoolArray) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *BoolArray) AssignTo(dst interface{}) error {
|
func (src *BoolArray) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ func TestBoolArrayTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBoolArrayConvertFrom(t *testing.T) {
|
func TestBoolArraySet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.BoolArray
|
result pgtype.BoolArray
|
||||||
|
@ -71,7 +71,7 @@ func TestBoolArrayConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.BoolArray
|
var r pgtype.BoolArray
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ func TestBoolTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBoolConvertFrom(t *testing.T) {
|
func TestBoolSet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Bool
|
result pgtype.Bool
|
||||||
|
@ -33,7 +33,7 @@ func TestBoolConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Bool
|
var r pgtype.Bool
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ type Bytea struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Bytea) ConvertFrom(src interface{}) error {
|
func (dst *Bytea) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Bytea:
|
case Bytea:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -24,7 +24,7 @@ func (dst *Bytea) ConvertFrom(src interface{}) error {
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingBytesType(src); ok {
|
if originalSrc, ok := underlyingBytesType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Bytea", value)
|
return fmt.Errorf("cannot convert %v to Bytea", value)
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,17 @@ func (dst *Bytea) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Bytea) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst.Bytes
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Bytea) AssignTo(dst interface{}) error {
|
func (src *Bytea) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
case *[]byte:
|
case *[]byte:
|
||||||
|
|
|
@ -15,7 +15,7 @@ type ByteaArray struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *ByteaArray) ConvertFrom(src interface{}) error {
|
func (dst *ByteaArray) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case ByteaArray:
|
case ByteaArray:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -28,7 +28,7 @@ func (dst *ByteaArray) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Bytea, len(value))
|
elements := make([]Bytea, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ func (dst *ByteaArray) ConvertFrom(src interface{}) error {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Bytea", value)
|
return fmt.Errorf("cannot convert %v to Bytea", value)
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,17 @@ func (dst *ByteaArray) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *ByteaArray) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *ByteaArray) AssignTo(dst interface{}) error {
|
func (src *ByteaArray) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ func TestByteaArrayTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestByteaArrayConvertFrom(t *testing.T) {
|
func TestByteaArraySet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.ByteaArray
|
result pgtype.ByteaArray
|
||||||
|
@ -71,7 +71,7 @@ func TestByteaArrayConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.ByteaArray
|
var r pgtype.ByteaArray
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ func TestByteaTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestByteaConvertFrom(t *testing.T) {
|
func TestByteaSet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Bytea
|
result pgtype.Bytea
|
||||||
|
@ -30,7 +30,7 @@ func TestByteaConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Bytea
|
var r pgtype.Bytea
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,11 +17,15 @@ import (
|
||||||
// in the PostgreSQL sources.
|
// in the PostgreSQL sources.
|
||||||
type Cid pguint32
|
type Cid pguint32
|
||||||
|
|
||||||
// ConvertFrom converts from src to dst. Note that as Cid is not a general
|
// Set converts from src to dst. Note that as Cid is not a general
|
||||||
// number type ConvertFrom does not do automatic type conversion as other number
|
// number type Set does not do automatic type conversion as other number
|
||||||
// types do.
|
// types do.
|
||||||
func (dst *Cid) ConvertFrom(src interface{}) error {
|
func (dst *Cid) Set(src interface{}) error {
|
||||||
return (*pguint32)(dst).ConvertFrom(src)
|
return (*pguint32)(dst).Set(src)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (dst *Cid) Get() interface{} {
|
||||||
|
return (*pguint32)(dst).Get()
|
||||||
}
|
}
|
||||||
|
|
||||||
// AssignTo assigns from src to dst. Note that as Cid is not a general number
|
// AssignTo assigns from src to dst. Note that as Cid is not a general number
|
||||||
|
|
|
@ -14,7 +14,7 @@ func TestCidTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCidConvertFrom(t *testing.T) {
|
func TestCidSet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Cid
|
result pgtype.Cid
|
||||||
|
@ -24,7 +24,7 @@ func TestCidConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Cid
|
var r pgtype.Cid
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,12 @@ import (
|
||||||
|
|
||||||
type CidrArray InetArray
|
type CidrArray InetArray
|
||||||
|
|
||||||
func (dst *CidrArray) ConvertFrom(src interface{}) error {
|
func (dst *CidrArray) Set(src interface{}) error {
|
||||||
return (*InetArray)(dst).ConvertFrom(src)
|
return (*InetArray)(dst).Set(src)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (dst *CidrArray) Get() interface{} {
|
||||||
|
return (*InetArray)(dst).Get()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (src *CidrArray) AssignTo(dst interface{}) error {
|
func (src *CidrArray) AssignTo(dst interface{}) error {
|
||||||
|
|
|
@ -21,7 +21,7 @@ const (
|
||||||
infinityDayOffset = 2147483647
|
infinityDayOffset = 2147483647
|
||||||
)
|
)
|
||||||
|
|
||||||
func (dst *Date) ConvertFrom(src interface{}) error {
|
func (dst *Date) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Date:
|
case Date:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -29,7 +29,7 @@ func (dst *Date) ConvertFrom(src interface{}) error {
|
||||||
*dst = Date{Time: value, Status: Present}
|
*dst = Date{Time: value, Status: Present}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingTimeType(src); ok {
|
if originalSrc, ok := underlyingTimeType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Date", value)
|
return fmt.Errorf("cannot convert %v to Date", value)
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,17 @@ func (dst *Date) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Date) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst.Time
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Date) AssignTo(dst interface{}) error {
|
func (src *Date) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
case *time.Time:
|
case *time.Time:
|
||||||
|
|
|
@ -16,7 +16,7 @@ type DateArray struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *DateArray) ConvertFrom(src interface{}) error {
|
func (dst *DateArray) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case DateArray:
|
case DateArray:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -29,7 +29,7 @@ func (dst *DateArray) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Date, len(value))
|
elements := make([]Date, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ func (dst *DateArray) ConvertFrom(src interface{}) error {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Date", value)
|
return fmt.Errorf("cannot convert %v to Date", value)
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,17 @@ func (dst *DateArray) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *DateArray) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *DateArray) AssignTo(dst interface{}) error {
|
func (src *DateArray) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ func TestDateArrayTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDateArrayConvertFrom(t *testing.T) {
|
func TestDateArraySet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.DateArray
|
result pgtype.DateArray
|
||||||
|
@ -72,7 +72,7 @@ func TestDateArrayConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.DateArray
|
var r pgtype.DateArray
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ func TestDateTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDateConvertFrom(t *testing.T) {
|
func TestDateSet(t *testing.T) {
|
||||||
type _time time.Time
|
type _time time.Time
|
||||||
|
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
|
@ -41,7 +41,7 @@ func TestDateConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var d pgtype.Date
|
var d pgtype.Date
|
||||||
err := d.ConvertFrom(tt.source)
|
err := d.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ type Float4 struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Float4) ConvertFrom(src interface{}) error {
|
func (dst *Float4) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Float4:
|
case Float4:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -81,7 +81,7 @@ func (dst *Float4) ConvertFrom(src interface{}) error {
|
||||||
*dst = Float4{Float: float32(num), Status: Present}
|
*dst = Float4{Float: float32(num), Status: Present}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingNumberType(src); ok {
|
if originalSrc, ok := underlyingNumberType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Float8", value)
|
return fmt.Errorf("cannot convert %v to Float8", value)
|
||||||
}
|
}
|
||||||
|
@ -89,6 +89,17 @@ func (dst *Float4) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Float4) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst.Float
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Float4) AssignTo(dst interface{}) error {
|
func (src *Float4) AssignTo(dst interface{}) error {
|
||||||
return float64AssignTo(float64(src.Float), src.Status, dst)
|
return float64AssignTo(float64(src.Float), src.Status, dst)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ type Float4Array struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Float4Array) ConvertFrom(src interface{}) error {
|
func (dst *Float4Array) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Float4Array:
|
case Float4Array:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -28,7 +28,7 @@ func (dst *Float4Array) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Float4, len(value))
|
elements := make([]Float4, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ func (dst *Float4Array) ConvertFrom(src interface{}) error {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Float4", value)
|
return fmt.Errorf("cannot convert %v to Float4", value)
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,17 @@ func (dst *Float4Array) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Float4Array) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Float4Array) AssignTo(dst interface{}) error {
|
func (src *Float4Array) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ func TestFloat4ArrayTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFloat4ArrayConvertFrom(t *testing.T) {
|
func TestFloat4ArraySet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Float4Array
|
result pgtype.Float4Array
|
||||||
|
@ -71,7 +71,7 @@ func TestFloat4ArrayConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Float4Array
|
var r pgtype.Float4Array
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ func TestFloat4Transcode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFloat4ConvertFrom(t *testing.T) {
|
func TestFloat4Set(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Float4
|
result pgtype.Float4
|
||||||
|
@ -43,7 +43,7 @@ func TestFloat4ConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Float4
|
var r pgtype.Float4
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ type Float8 struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Float8) ConvertFrom(src interface{}) error {
|
func (dst *Float8) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Float8:
|
case Float8:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -71,7 +71,7 @@ func (dst *Float8) ConvertFrom(src interface{}) error {
|
||||||
*dst = Float8{Float: float64(num), Status: Present}
|
*dst = Float8{Float: float64(num), Status: Present}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingNumberType(src); ok {
|
if originalSrc, ok := underlyingNumberType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Float8", value)
|
return fmt.Errorf("cannot convert %v to Float8", value)
|
||||||
}
|
}
|
||||||
|
@ -79,6 +79,17 @@ func (dst *Float8) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Float8) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst.Float
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Float8) AssignTo(dst interface{}) error {
|
func (src *Float8) AssignTo(dst interface{}) error {
|
||||||
return float64AssignTo(src.Float, src.Status, dst)
|
return float64AssignTo(src.Float, src.Status, dst)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ type Float8Array struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Float8Array) ConvertFrom(src interface{}) error {
|
func (dst *Float8Array) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Float8Array:
|
case Float8Array:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -28,7 +28,7 @@ func (dst *Float8Array) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Float8, len(value))
|
elements := make([]Float8, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ func (dst *Float8Array) ConvertFrom(src interface{}) error {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Float8", value)
|
return fmt.Errorf("cannot convert %v to Float8", value)
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,17 @@ func (dst *Float8Array) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Float8Array) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Float8Array) AssignTo(dst interface{}) error {
|
func (src *Float8Array) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ func TestFloat8ArrayTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFloat8ArrayConvertFrom(t *testing.T) {
|
func TestFloat8ArraySet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Float8Array
|
result pgtype.Float8Array
|
||||||
|
@ -71,7 +71,7 @@ func TestFloat8ArrayConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Float8Array
|
var r pgtype.Float8Array
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ func TestFloat8Transcode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFloat8ConvertFrom(t *testing.T) {
|
func TestFloat8Set(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Float8
|
result pgtype.Float8
|
||||||
|
@ -43,7 +43,7 @@ func TestFloat8ConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Float8
|
var r pgtype.Float8
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ type Inet struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Inet) ConvertFrom(src interface{}) error {
|
func (dst *Inet) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Inet:
|
case Inet:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -43,7 +43,7 @@ func (dst *Inet) ConvertFrom(src interface{}) error {
|
||||||
*dst = Inet{IPNet: ipnet, Status: Present}
|
*dst = Inet{IPNet: ipnet, Status: Present}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingPtrType(src); ok {
|
if originalSrc, ok := underlyingPtrType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Inet", value)
|
return fmt.Errorf("cannot convert %v to Inet", value)
|
||||||
}
|
}
|
||||||
|
@ -51,6 +51,17 @@ func (dst *Inet) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Inet) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst.IPNet
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Inet) AssignTo(dst interface{}) error {
|
func (src *Inet) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
case *net.IPNet:
|
case *net.IPNet:
|
||||||
|
|
|
@ -16,7 +16,7 @@ type InetArray struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *InetArray) ConvertFrom(src interface{}) error {
|
func (dst *InetArray) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case InetArray:
|
case InetArray:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -29,7 +29,7 @@ func (dst *InetArray) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Inet, len(value))
|
elements := make([]Inet, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ func (dst *InetArray) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Inet, len(value))
|
elements := make([]Inet, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ func (dst *InetArray) ConvertFrom(src interface{}) error {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Inet", value)
|
return fmt.Errorf("cannot convert %v to Inet", value)
|
||||||
}
|
}
|
||||||
|
@ -69,6 +69,17 @@ func (dst *InetArray) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *InetArray) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *InetArray) AssignTo(dst interface{}) error {
|
func (src *InetArray) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ func TestInetArrayTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInetArrayConvertFrom(t *testing.T) {
|
func TestInetArraySet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.InetArray
|
result pgtype.InetArray
|
||||||
|
@ -83,7 +83,7 @@ func TestInetArrayConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.InetArray
|
var r pgtype.InetArray
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ func TestInetTranscode(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInetConvertFrom(t *testing.T) {
|
func TestInetSet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Inet
|
result pgtype.Inet
|
||||||
|
@ -39,7 +39,7 @@ func TestInetConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Inet
|
var r pgtype.Inet
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ type Int2 struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Int2) ConvertFrom(src interface{}) error {
|
func (dst *Int2) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Int2:
|
case Int2:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -77,7 +77,7 @@ func (dst *Int2) ConvertFrom(src interface{}) error {
|
||||||
*dst = Int2{Int: int16(num), Status: Present}
|
*dst = Int2{Int: int16(num), Status: Present}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingNumberType(src); ok {
|
if originalSrc, ok := underlyingNumberType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Int2", value)
|
return fmt.Errorf("cannot convert %v to Int2", value)
|
||||||
}
|
}
|
||||||
|
@ -85,6 +85,17 @@ func (dst *Int2) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Int2) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst.Int
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Int2) AssignTo(dst interface{}) error {
|
func (src *Int2) AssignTo(dst interface{}) error {
|
||||||
return int64AssignTo(int64(src.Int), src.Status, dst)
|
return int64AssignTo(int64(src.Int), src.Status, dst)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ type Int2Array struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Int2Array) ConvertFrom(src interface{}) error {
|
func (dst *Int2Array) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Int2Array:
|
case Int2Array:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -28,7 +28,7 @@ func (dst *Int2Array) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Int2, len(value))
|
elements := make([]Int2, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ func (dst *Int2Array) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Int2, len(value))
|
elements := make([]Int2, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ func (dst *Int2Array) ConvertFrom(src interface{}) error {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Int2", value)
|
return fmt.Errorf("cannot convert %v to Int2", value)
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,17 @@ func (dst *Int2Array) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Int2Array) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Int2Array) AssignTo(dst interface{}) error {
|
func (src *Int2Array) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ func TestInt2ArrayTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInt2ArrayConvertFrom(t *testing.T) {
|
func TestInt2ArraySet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Int2Array
|
result pgtype.Int2Array
|
||||||
|
@ -78,7 +78,7 @@ func TestInt2ArrayConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Int2Array
|
var r pgtype.Int2Array
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ func TestInt2Transcode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInt2ConvertFrom(t *testing.T) {
|
func TestInt2Set(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Int2
|
result pgtype.Int2
|
||||||
|
@ -42,7 +42,7 @@ func TestInt2ConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Int2
|
var r pgtype.Int2
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ type Int4 struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Int4) ConvertFrom(src interface{}) error {
|
func (dst *Int4) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Int4:
|
case Int4:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -68,7 +68,7 @@ func (dst *Int4) ConvertFrom(src interface{}) error {
|
||||||
*dst = Int4{Int: int32(num), Status: Present}
|
*dst = Int4{Int: int32(num), Status: Present}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingNumberType(src); ok {
|
if originalSrc, ok := underlyingNumberType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Int8", value)
|
return fmt.Errorf("cannot convert %v to Int8", value)
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,17 @@ func (dst *Int4) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Int4) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst.Int
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Int4) AssignTo(dst interface{}) error {
|
func (src *Int4) AssignTo(dst interface{}) error {
|
||||||
return int64AssignTo(int64(src.Int), src.Status, dst)
|
return int64AssignTo(int64(src.Int), src.Status, dst)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ type Int4Array struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Int4Array) ConvertFrom(src interface{}) error {
|
func (dst *Int4Array) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Int4Array:
|
case Int4Array:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -28,7 +28,7 @@ func (dst *Int4Array) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Int4, len(value))
|
elements := make([]Int4, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ func (dst *Int4Array) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Int4, len(value))
|
elements := make([]Int4, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ func (dst *Int4Array) ConvertFrom(src interface{}) error {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Int4", value)
|
return fmt.Errorf("cannot convert %v to Int4", value)
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,17 @@ func (dst *Int4Array) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Int4Array) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Int4Array) AssignTo(dst interface{}) error {
|
func (src *Int4Array) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ func TestInt4ArrayTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInt4ArrayConvertFrom(t *testing.T) {
|
func TestInt4ArraySet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Int4Array
|
result pgtype.Int4Array
|
||||||
|
@ -78,7 +78,7 @@ func TestInt4ArrayConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Int4Array
|
var r pgtype.Int4Array
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ func TestInt4Transcode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInt4ConvertFrom(t *testing.T) {
|
func TestInt4Set(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Int4
|
result pgtype.Int4
|
||||||
|
@ -42,7 +42,7 @@ func TestInt4ConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Int4
|
var r pgtype.Int4
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ type Int8 struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Int8) ConvertFrom(src interface{}) error {
|
func (dst *Int8) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Int8:
|
case Int8:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -59,7 +59,7 @@ func (dst *Int8) ConvertFrom(src interface{}) error {
|
||||||
*dst = Int8{Int: num, Status: Present}
|
*dst = Int8{Int: num, Status: Present}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingNumberType(src); ok {
|
if originalSrc, ok := underlyingNumberType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Int8", value)
|
return fmt.Errorf("cannot convert %v to Int8", value)
|
||||||
}
|
}
|
||||||
|
@ -67,6 +67,17 @@ func (dst *Int8) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Int8) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst.Int
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Int8) AssignTo(dst interface{}) error {
|
func (src *Int8) AssignTo(dst interface{}) error {
|
||||||
return int64AssignTo(int64(src.Int), src.Status, dst)
|
return int64AssignTo(int64(src.Int), src.Status, dst)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ type Int8Array struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Int8Array) ConvertFrom(src interface{}) error {
|
func (dst *Int8Array) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Int8Array:
|
case Int8Array:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -28,7 +28,7 @@ func (dst *Int8Array) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Int8, len(value))
|
elements := make([]Int8, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ func (dst *Int8Array) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Int8, len(value))
|
elements := make([]Int8, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ func (dst *Int8Array) ConvertFrom(src interface{}) error {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Int8", value)
|
return fmt.Errorf("cannot convert %v to Int8", value)
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,17 @@ func (dst *Int8Array) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Int8Array) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Int8Array) AssignTo(dst interface{}) error {
|
func (src *Int8Array) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ func TestInt8ArrayTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInt8ArrayConvertFrom(t *testing.T) {
|
func TestInt8ArraySet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Int8Array
|
result pgtype.Int8Array
|
||||||
|
@ -78,7 +78,7 @@ func TestInt8ArrayConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Int8Array
|
var r pgtype.Int8Array
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ func TestInt8Transcode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInt8ConvertFrom(t *testing.T) {
|
func TestInt8Set(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Int8
|
result pgtype.Int8
|
||||||
|
@ -42,7 +42,7 @@ func TestInt8ConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Int8
|
var r pgtype.Int8
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ type Json struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Json) ConvertFrom(src interface{}) error {
|
func (dst *Json) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case string:
|
case string:
|
||||||
*dst = Json{Bytes: []byte(value), Status: Present}
|
*dst = Json{Bytes: []byte(value), Status: Present}
|
||||||
|
@ -37,6 +37,22 @@ func (dst *Json) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Json) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
var i interface{}
|
||||||
|
err := json.Unmarshal(dst.Bytes, &i)
|
||||||
|
if err != nil {
|
||||||
|
return dst
|
||||||
|
}
|
||||||
|
return i
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Json) AssignTo(dst interface{}) error {
|
func (src *Json) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
case *string:
|
case *string:
|
||||||
|
|
|
@ -18,7 +18,7 @@ func TestJsonTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestJsonConvertFrom(t *testing.T) {
|
func TestJsonSet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Json
|
result pgtype.Json
|
||||||
|
@ -33,7 +33,7 @@ func TestJsonConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var d pgtype.Json
|
var d pgtype.Json
|
||||||
err := d.ConvertFrom(tt.source)
|
err := d.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,8 +7,12 @@ import (
|
||||||
|
|
||||||
type Jsonb Json
|
type Jsonb Json
|
||||||
|
|
||||||
func (dst *Jsonb) ConvertFrom(src interface{}) error {
|
func (dst *Jsonb) Set(src interface{}) error {
|
||||||
return (*Json)(dst).ConvertFrom(src)
|
return (*Json)(dst).Set(src)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (dst *Jsonb) Get() interface{} {
|
||||||
|
return (*Json)(dst).Get()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (src *Jsonb) AssignTo(dst interface{}) error {
|
func (src *Jsonb) AssignTo(dst interface{}) error {
|
||||||
|
|
|
@ -18,7 +18,7 @@ func TestJsonbTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestJsonbConvertFrom(t *testing.T) {
|
func TestJsonbSet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Jsonb
|
result pgtype.Jsonb
|
||||||
|
@ -33,7 +33,7 @@ func TestJsonbConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var d pgtype.Jsonb
|
var d pgtype.Jsonb
|
||||||
err := d.ConvertFrom(tt.source)
|
err := d.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,8 +19,12 @@ import (
|
||||||
// bytes applies, rather than the default 63.
|
// bytes applies, rather than the default 63.
|
||||||
type Name Text
|
type Name Text
|
||||||
|
|
||||||
func (dst *Name) ConvertFrom(src interface{}) error {
|
func (dst *Name) Set(src interface{}) error {
|
||||||
return (*Text)(dst).ConvertFrom(src)
|
return (*Text)(dst).Set(src)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (dst *Name) Get() interface{} {
|
||||||
|
return (*Text)(dst).Get()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (src *Name) AssignTo(dst interface{}) error {
|
func (src *Name) AssignTo(dst interface{}) error {
|
||||||
|
|
|
@ -15,7 +15,7 @@ func TestNameTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNameConvertFrom(t *testing.T) {
|
func TestNameSet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Name
|
result pgtype.Name
|
||||||
|
@ -27,7 +27,7 @@ func TestNameConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var d pgtype.Name
|
var d pgtype.Name
|
||||||
err := d.ConvertFrom(tt.source)
|
err := d.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,11 +11,15 @@ import (
|
||||||
// found in src/include/postgres_ext.h in the PostgreSQL sources.
|
// found in src/include/postgres_ext.h in the PostgreSQL sources.
|
||||||
type Oid pguint32
|
type Oid pguint32
|
||||||
|
|
||||||
// ConvertFrom converts from src to dst. Note that as Oid is not a general
|
// Set converts from src to dst. Note that as Oid is not a general
|
||||||
// number type ConvertFrom does not do automatic type conversion as other number
|
// number type Set does not do automatic type conversion as other number
|
||||||
// types do.
|
// types do.
|
||||||
func (dst *Oid) ConvertFrom(src interface{}) error {
|
func (dst *Oid) Set(src interface{}) error {
|
||||||
return (*pguint32)(dst).ConvertFrom(src)
|
return (*pguint32)(dst).Set(src)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (dst *Oid) Get() interface{} {
|
||||||
|
return (*pguint32)(dst).Get()
|
||||||
}
|
}
|
||||||
|
|
||||||
// AssignTo assigns from src to dst. Note that as Oid is not a general number
|
// AssignTo assigns from src to dst. Note that as Oid is not a general number
|
||||||
|
|
|
@ -14,7 +14,7 @@ func TestOidTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestOidConvertFrom(t *testing.T) {
|
func TestOidSet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Oid
|
result pgtype.Oid
|
||||||
|
@ -24,7 +24,7 @@ func TestOidConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Oid
|
var r pgtype.Oid
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,13 +66,16 @@ const (
|
||||||
NegativeInfinity InfinityModifier = -Infinity
|
NegativeInfinity InfinityModifier = -Infinity
|
||||||
)
|
)
|
||||||
|
|
||||||
type Value interface{}
|
type Value interface {
|
||||||
|
// Set converts and assigns src to itself.
|
||||||
|
Set(src interface{}) error
|
||||||
|
|
||||||
type ConverterFrom interface {
|
// Get returns the simplest representation of Value. If the Value is Null or
|
||||||
ConvertFrom(src interface{}) error
|
// Undefined that is the return value. If no simpler representation is
|
||||||
}
|
// possible, then Get() returns Value.
|
||||||
|
Get() interface{}
|
||||||
|
|
||||||
type AssignerTo interface {
|
// AssignTo converts and assigns the Value to dst.
|
||||||
AssignTo(dst interface{}) error
|
AssignTo(dst interface{}) error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,10 +16,10 @@ type pguint32 struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConvertFrom converts from src to dst. Note that as pguint32 is not a general
|
// Set converts from src to dst. Note that as pguint32 is not a general
|
||||||
// number type ConvertFrom does not do automatic type conversion as other number
|
// number type Set does not do automatic type conversion as other number
|
||||||
// types do.
|
// types do.
|
||||||
func (dst *pguint32) ConvertFrom(src interface{}) error {
|
func (dst *pguint32) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case uint32:
|
case uint32:
|
||||||
*dst = pguint32{Uint: value, Status: Present}
|
*dst = pguint32{Uint: value, Status: Present}
|
||||||
|
@ -30,6 +30,17 @@ func (dst *pguint32) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *pguint32) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst.Uint
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// AssignTo assigns from src to dst. Note that as pguint32 is not a general number
|
// AssignTo assigns from src to dst. Note that as pguint32 is not a general number
|
||||||
// type AssignTo does not do automatic type conversion as other number types do.
|
// type AssignTo does not do automatic type conversion as other number types do.
|
||||||
func (src *pguint32) AssignTo(dst interface{}) error {
|
func (src *pguint32) AssignTo(dst interface{}) error {
|
||||||
|
|
|
@ -23,7 +23,7 @@ type QChar struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *QChar) ConvertFrom(src interface{}) error {
|
func (dst *QChar) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case QChar:
|
case QChar:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -94,7 +94,7 @@ func (dst *QChar) ConvertFrom(src interface{}) error {
|
||||||
*dst = QChar{Int: int8(num), Status: Present}
|
*dst = QChar{Int: int8(num), Status: Present}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingNumberType(src); ok {
|
if originalSrc, ok := underlyingNumberType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to QChar", value)
|
return fmt.Errorf("cannot convert %v to QChar", value)
|
||||||
}
|
}
|
||||||
|
@ -102,6 +102,17 @@ func (dst *QChar) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *QChar) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst.Int
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *QChar) AssignTo(dst interface{}) error {
|
func (src *QChar) AssignTo(dst interface{}) error {
|
||||||
return int64AssignTo(int64(src.Int), src.Status, dst)
|
return int64AssignTo(int64(src.Int), src.Status, dst)
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ func TestQCharTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestQCharConvertFrom(t *testing.T) {
|
func TestQCharSet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.QChar
|
result pgtype.QChar
|
||||||
|
@ -42,7 +42,7 @@ func TestQCharConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.QChar
|
var r pgtype.QChar
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ type Text struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Text) ConvertFrom(src interface{}) error {
|
func (dst *Text) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Text:
|
case Text:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -25,7 +25,7 @@ func (dst *Text) ConvertFrom(src interface{}) error {
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingStringType(src); ok {
|
if originalSrc, ok := underlyingStringType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Text", value)
|
return fmt.Errorf("cannot convert %v to Text", value)
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,17 @@ func (dst *Text) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Text) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst.String
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Text) AssignTo(dst interface{}) error {
|
func (src *Text) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
case *string:
|
case *string:
|
||||||
|
|
|
@ -15,7 +15,7 @@ type TextArray struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *TextArray) ConvertFrom(src interface{}) error {
|
func (dst *TextArray) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case TextArray:
|
case TextArray:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -28,7 +28,7 @@ func (dst *TextArray) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Text, len(value))
|
elements := make([]Text, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ func (dst *TextArray) ConvertFrom(src interface{}) error {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Text", value)
|
return fmt.Errorf("cannot convert %v to Text", value)
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,17 @@ func (dst *TextArray) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *TextArray) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *TextArray) AssignTo(dst interface{}) error {
|
func (src *TextArray) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ func TestTextArrayTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTextArrayConvertFrom(t *testing.T) {
|
func TestTextArraySet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.TextArray
|
result pgtype.TextArray
|
||||||
|
@ -71,7 +71,7 @@ func TestTextArrayConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.TextArray
|
var r pgtype.TextArray
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ func TestTextTranscode(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTextConvertFrom(t *testing.T) {
|
func TestTextSet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Text
|
result pgtype.Text
|
||||||
|
@ -30,7 +30,7 @@ func TestTextConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var d pgtype.Text
|
var d pgtype.Text
|
||||||
err := d.ConvertFrom(tt.source)
|
err := d.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,25 @@ type Tid struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Tid) Set(src interface{}) error {
|
||||||
|
return fmt.Errorf("cannot convert %v to Tid", src)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (dst *Tid) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (src *Tid) AssignTo(dst interface{}) error {
|
||||||
|
return fmt.Errorf("cannot assign %v to %T", src, dst)
|
||||||
|
}
|
||||||
|
|
||||||
func (dst *Tid) DecodeText(src []byte) error {
|
func (dst *Tid) DecodeText(src []byte) error {
|
||||||
if src == nil {
|
if src == nil {
|
||||||
*dst = Tid{Status: Null}
|
*dst = Tid{Status: Null}
|
||||||
|
|
|
@ -23,9 +23,9 @@ type Timestamp struct {
|
||||||
InfinityModifier
|
InfinityModifier
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConvertFrom converts src into a Timestamp and stores in dst. If src is a
|
// Set converts src into a Timestamp and stores in dst. If src is a
|
||||||
// time.Time in a non-UTC time zone, the time zone is discarded.
|
// time.Time in a non-UTC time zone, the time zone is discarded.
|
||||||
func (dst *Timestamp) ConvertFrom(src interface{}) error {
|
func (dst *Timestamp) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Timestamp:
|
case Timestamp:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -33,7 +33,7 @@ func (dst *Timestamp) ConvertFrom(src interface{}) error {
|
||||||
*dst = Timestamp{Time: time.Date(value.Year(), value.Month(), value.Day(), value.Hour(), value.Minute(), value.Second(), value.Nanosecond(), time.UTC), Status: Present}
|
*dst = Timestamp{Time: time.Date(value.Year(), value.Month(), value.Day(), value.Hour(), value.Minute(), value.Second(), value.Nanosecond(), time.UTC), Status: Present}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingTimeType(src); ok {
|
if originalSrc, ok := underlyingTimeType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Timestamp", value)
|
return fmt.Errorf("cannot convert %v to Timestamp", value)
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,20 @@ func (dst *Timestamp) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Timestamp) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
if dst.InfinityModifier != None {
|
||||||
|
return dst.InfinityModifier
|
||||||
|
}
|
||||||
|
return dst.Time
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Timestamp) AssignTo(dst interface{}) error {
|
func (src *Timestamp) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
case *time.Time:
|
case *time.Time:
|
||||||
|
|
|
@ -16,7 +16,7 @@ type TimestampArray struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *TimestampArray) ConvertFrom(src interface{}) error {
|
func (dst *TimestampArray) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case TimestampArray:
|
case TimestampArray:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -29,7 +29,7 @@ func (dst *TimestampArray) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Timestamp, len(value))
|
elements := make([]Timestamp, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ func (dst *TimestampArray) ConvertFrom(src interface{}) error {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Timestamp", value)
|
return fmt.Errorf("cannot convert %v to Timestamp", value)
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,17 @@ func (dst *TimestampArray) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *TimestampArray) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *TimestampArray) AssignTo(dst interface{}) error {
|
func (src *TimestampArray) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ func TestTimestampArrayTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTimestampArrayConvertFrom(t *testing.T) {
|
func TestTimestampArraySet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.TimestampArray
|
result pgtype.TimestampArray
|
||||||
|
@ -88,7 +88,7 @@ func TestTimestampArrayConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.TimestampArray
|
var r pgtype.TimestampArray
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ func TestTimestampTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTimestampConvertFrom(t *testing.T) {
|
func TestTimestampSet(t *testing.T) {
|
||||||
type _time time.Time
|
type _time time.Time
|
||||||
|
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
|
@ -51,7 +51,7 @@ func TestTimestampConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Timestamp
|
var r pgtype.Timestamp
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ type Timestamptz struct {
|
||||||
InfinityModifier
|
InfinityModifier
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *Timestamptz) ConvertFrom(src interface{}) error {
|
func (dst *Timestamptz) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case Timestamptz:
|
case Timestamptz:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -34,7 +34,7 @@ func (dst *Timestamptz) ConvertFrom(src interface{}) error {
|
||||||
*dst = Timestamptz{Time: value, Status: Present}
|
*dst = Timestamptz{Time: value, Status: Present}
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingTimeType(src); ok {
|
if originalSrc, ok := underlyingTimeType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Timestamptz", value)
|
return fmt.Errorf("cannot convert %v to Timestamptz", value)
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,20 @@ func (dst *Timestamptz) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *Timestamptz) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
if dst.InfinityModifier != None {
|
||||||
|
return dst.InfinityModifier
|
||||||
|
}
|
||||||
|
return dst.Time
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *Timestamptz) AssignTo(dst interface{}) error {
|
func (src *Timestamptz) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
case *time.Time:
|
case *time.Time:
|
||||||
|
|
|
@ -16,7 +16,7 @@ type TimestamptzArray struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *TimestamptzArray) ConvertFrom(src interface{}) error {
|
func (dst *TimestamptzArray) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case TimestamptzArray:
|
case TimestamptzArray:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -29,7 +29,7 @@ func (dst *TimestamptzArray) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]Timestamptz, len(value))
|
elements := make([]Timestamptz, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ func (dst *TimestamptzArray) ConvertFrom(src interface{}) error {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to Timestamptz", value)
|
return fmt.Errorf("cannot convert %v to Timestamptz", value)
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,17 @@ func (dst *TimestamptzArray) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *TimestamptzArray) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *TimestamptzArray) AssignTo(dst interface{}) error {
|
func (src *TimestamptzArray) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ func TestTimestamptzArrayTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTimestamptzArrayConvertFrom(t *testing.T) {
|
func TestTimestamptzArraySet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.TimestamptzArray
|
result pgtype.TimestamptzArray
|
||||||
|
@ -88,7 +88,7 @@ func TestTimestamptzArrayConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.TimestamptzArray
|
var r pgtype.TimestamptzArray
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ func TestTimestamptzTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTimestamptzConvertFrom(t *testing.T) {
|
func TestTimestamptzSet(t *testing.T) {
|
||||||
type _time time.Time
|
type _time time.Time
|
||||||
|
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
|
@ -50,7 +50,7 @@ func TestTimestamptzConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Timestamptz
|
var r pgtype.Timestamptz
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ type <%= pgtype_array_type %> struct {
|
||||||
Status Status
|
Status Status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dst *<%= pgtype_array_type %>) ConvertFrom(src interface{}) error {
|
func (dst *<%= pgtype_array_type %>) Set(src interface{}) error {
|
||||||
switch value := src.(type) {
|
switch value := src.(type) {
|
||||||
case <%= pgtype_array_type %>:
|
case <%= pgtype_array_type %>:
|
||||||
*dst = value
|
*dst = value
|
||||||
|
@ -27,7 +27,7 @@ func (dst *<%= pgtype_array_type %>) ConvertFrom(src interface{}) error {
|
||||||
} else {
|
} else {
|
||||||
elements := make([]<%= pgtype_element_type %>, len(value))
|
elements := make([]<%= pgtype_element_type %>, len(value))
|
||||||
for i := range value {
|
for i := range value {
|
||||||
if err := elements[i].ConvertFrom(value[i]); err != nil {
|
if err := elements[i].Set(value[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ func (dst *<%= pgtype_array_type %>) ConvertFrom(src interface{}) error {
|
||||||
<% end %>
|
<% end %>
|
||||||
default:
|
default:
|
||||||
if originalSrc, ok := underlyingSliceType(src); ok {
|
if originalSrc, ok := underlyingSliceType(src); ok {
|
||||||
return dst.ConvertFrom(originalSrc)
|
return dst.Set(originalSrc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot convert %v to <%= pgtype_element_type %>", value)
|
return fmt.Errorf("cannot convert %v to <%= pgtype_element_type %>", value)
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,17 @@ func (dst *<%= pgtype_array_type %>) ConvertFrom(src interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dst *<%= pgtype_array_type %>) Get() interface{} {
|
||||||
|
switch dst.Status {
|
||||||
|
case Present:
|
||||||
|
return dst
|
||||||
|
case Null:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return dst.Status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (src *<%= pgtype_array_type %>) AssignTo(dst interface{}) error {
|
func (src *<%= pgtype_array_type %>) AssignTo(dst interface{}) error {
|
||||||
switch v := dst.(type) {
|
switch v := dst.(type) {
|
||||||
<% go_array_types.split(",").each do |t| %>
|
<% go_array_types.split(",").each do |t| %>
|
||||||
|
|
|
@ -6,8 +6,12 @@ import (
|
||||||
|
|
||||||
type VarcharArray TextArray
|
type VarcharArray TextArray
|
||||||
|
|
||||||
func (dst *VarcharArray) ConvertFrom(src interface{}) error {
|
func (dst *VarcharArray) Set(src interface{}) error {
|
||||||
return (*TextArray)(dst).ConvertFrom(src)
|
return (*TextArray)(dst).Set(src)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (dst *VarcharArray) Get() interface{} {
|
||||||
|
return (*TextArray)(dst).Get()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (src *VarcharArray) AssignTo(dst interface{}) error {
|
func (src *VarcharArray) AssignTo(dst interface{}) error {
|
||||||
|
|
|
@ -20,11 +20,15 @@ import (
|
||||||
// in the PostgreSQL sources.
|
// in the PostgreSQL sources.
|
||||||
type Xid pguint32
|
type Xid pguint32
|
||||||
|
|
||||||
// ConvertFrom converts from src to dst. Note that as Xid is not a general
|
// Set converts from src to dst. Note that as Xid is not a general
|
||||||
// number type ConvertFrom does not do automatic type conversion as other number
|
// number type Set does not do automatic type conversion as other number
|
||||||
// types do.
|
// types do.
|
||||||
func (dst *Xid) ConvertFrom(src interface{}) error {
|
func (dst *Xid) Set(src interface{}) error {
|
||||||
return (*pguint32)(dst).ConvertFrom(src)
|
return (*pguint32)(dst).Set(src)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (dst *Xid) Get() interface{} {
|
||||||
|
return (*pguint32)(dst).Get()
|
||||||
}
|
}
|
||||||
|
|
||||||
// AssignTo assigns from src to dst. Note that as Xid is not a general number
|
// AssignTo assigns from src to dst. Note that as Xid is not a general number
|
||||||
|
|
|
@ -14,7 +14,7 @@ func TestXidTranscode(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestXidConvertFrom(t *testing.T) {
|
func TestXidSet(t *testing.T) {
|
||||||
successfulTests := []struct {
|
successfulTests := []struct {
|
||||||
source interface{}
|
source interface{}
|
||||||
result pgtype.Xid
|
result pgtype.Xid
|
||||||
|
@ -24,7 +24,7 @@ func TestXidConvertFrom(t *testing.T) {
|
||||||
|
|
||||||
for i, tt := range successfulTests {
|
for i, tt := range successfulTests {
|
||||||
var r pgtype.Xid
|
var r pgtype.Xid
|
||||||
err := r.ConvertFrom(tt.source)
|
err := r.Set(tt.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: %v", i, err)
|
t.Errorf("%d: %v", i, err)
|
||||||
}
|
}
|
||||||
|
|
8
query.go
8
query.go
|
@ -288,12 +288,8 @@ func (rows *Rows) Scan(dest ...interface{}) (err error) {
|
||||||
vr.Fatal(fmt.Errorf("unknown format code: %v", vr.Type().FormatCode))
|
vr.Fatal(fmt.Errorf("unknown format code: %v", vr.Type().FormatCode))
|
||||||
}
|
}
|
||||||
|
|
||||||
if assignerTo, ok := pgVal.(pgtype.AssignerTo); ok {
|
if err := pgVal.AssignTo(d); err != nil {
|
||||||
if err := assignerTo.AssignTo(d); err != nil {
|
vr.Fatal(err)
|
||||||
vr.Fatal(err)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
vr.Fatal(fmt.Errorf("cannot assign %T", pgVal))
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err := Decode(vr, d); err != nil {
|
if err := Decode(vr, d); err != nil {
|
||||||
|
|
14
values.go
14
values.go
|
@ -773,13 +773,9 @@ func Encode(wbuf *WriteBuf, oid Oid, arg interface{}) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if value, ok := wbuf.conn.oidPgtypeValues[oid]; ok {
|
if value, ok := wbuf.conn.oidPgtypeValues[oid]; ok {
|
||||||
if converterFrom, ok := value.(pgtype.ConverterFrom); ok {
|
err := value.Set(arg)
|
||||||
err := converterFrom.ConvertFrom(arg)
|
if err != nil {
|
||||||
if err != nil {
|
return err
|
||||||
return err
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return SerializationError(fmt.Sprintf("Cannot encode %T into oid %v - %T must implement Encoder or be converted to a string", arg, oid, arg))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
|
@ -1275,7 +1271,7 @@ func encodeTime(w *WriteBuf, oid Oid, value time.Time) error {
|
||||||
switch oid {
|
switch oid {
|
||||||
case DateOid:
|
case DateOid:
|
||||||
var d pgtype.Date
|
var d pgtype.Date
|
||||||
err := d.ConvertFrom(value)
|
err := d.Set(value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -1295,7 +1291,7 @@ func encodeTime(w *WriteBuf, oid Oid, value time.Time) error {
|
||||||
|
|
||||||
case TimestampTzOid, TimestampOid:
|
case TimestampTzOid, TimestampOid:
|
||||||
var t pgtype.Timestamptz
|
var t pgtype.Timestamptz
|
||||||
err := t.ConvertFrom(value)
|
err := t.Set(value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue