2
0

Support nil pointers to value implementing driver.Valuer

fixes #339
This commit is contained in:
Jack Christensen
2017-10-26 21:36:12 -04:00
parent 21ef449944
commit 82cd87d502
4 changed files with 88 additions and 4 deletions
+4 -4
View File
@@ -32,7 +32,7 @@ func convertSimpleArgument(ci *pgtype.ConnInfo, arg interface{}) (interface{}, e
switch arg := arg.(type) {
case driver.Valuer:
return arg.Value()
return callValuerValue(arg)
case pgtype.TextEncoder:
buf, err := arg.EncodeText(ci, nil)
if err != nil {
@@ -150,7 +150,7 @@ func encodePreparedStatementArgument(ci *pgtype.ConnInfo, buf []byte, oid pgtype
if err != nil {
{
if arg, ok := arg.(driver.Valuer); ok {
v, err := arg.Value()
v, err := callValuerValue(arg)
if err != nil {
return nil, err
}
@@ -175,7 +175,7 @@ func encodePreparedStatementArgument(ci *pgtype.ConnInfo, buf []byte, oid pgtype
}
if arg, ok := arg.(driver.Valuer); ok {
v, err := arg.Value()
v, err := callValuerValue(arg)
if err != nil {
return nil, err
}
@@ -203,7 +203,7 @@ func chooseParameterFormatCode(ci *pgtype.ConnInfo, oid pgtype.OID, arg interfac
if _, ok := dt.Value.(pgtype.BinaryEncoder); ok {
if arg, ok := arg.(driver.Valuer); ok {
if err := dt.Value.Set(arg); err != nil {
if value, err := arg.Value(); err == nil {
if value, err := callValuerValue(arg); err == nil {
if _, ok := value.(string); ok {
return TextFormatCode
}