func (v GenericColumnValue) Decode(ptr interface{}) error {
	return decodeValue(v.Value, v.Type, ptr)
}
Decode decodes a GenericColumnValue. The ptr argument should be a pointer
to a Go value that can accept v.
package spanner
import (
	"encoding/base64"
	"fmt"
	"math"
	"reflect"
	"strconv"
	"time"
	"cloud.google.com/go/civil"
	"cloud.google.com/go/internal/fields"
	proto "github.com/golang/protobuf/proto"
	proto3 "github.com/golang/protobuf/ptypes/struct"
	sppb "google.golang.org/genproto/googleapis/spanner/v1"
	"google.golang.org/grpc/codes"
)
type NullInt64 struct {
	Int64 int64
	Valid bool  
}
func (n NullInt64) String() string {
	if !n.Valid {
		return fmt.Sprintf("%v", "<null>")
	}
	return fmt.Sprintf("%v", n.Int64)
}
type NullString struct {
	StringVal string
	Valid     bool  
}
func (n NullString) String() string {
	if !n.Valid {
		return fmt.Sprintf("%v", "<null>")
	}
	return fmt.Sprintf("%q", n.StringVal)
}
type NullFloat64 struct {
	Float64 float64
	Valid   bool  
}
func (n NullFloat64) String() string {
	if !n.Valid {
		return fmt.Sprintf("%v", "<null>")
	}
	return fmt.Sprintf("%v", n.Float64)
}
type NullBool struct {
	Bool  bool
	Valid bool  
}
func (n NullBool) String() string {
	if !n.Valid {
		return fmt.Sprintf("%v", "<null>")
	}
	return fmt.Sprintf("%v", n.Bool)
}
type NullTime struct {
	Time  time.Time
	Valid bool  
}
func (n NullTime) String() string {
	if !n.Valid {
		return fmt.Sprintf("%s", "<null>")
	}
	return fmt.Sprintf("%q", n.Time.Format(time.RFC3339Nano))
}
type NullDate struct {
	Date  civil.Date
	Valid bool  
}
func (n NullDate) String() string {
	if !n.Valid {
		return fmt.Sprintf("%s", "<null>")
	}
	return fmt.Sprintf("%q", n.Date)
}
type NullRow struct {
	Row   Row
	Valid bool  
}
type GenericColumnValue struct {
	Type  *sppb.Type
	Value *proto3.Value
}