Documentation ¶
Overview ¶
Package span contains utility functions to interact with the underlying Spanner storage. It does not attempt to encapsulate Spanner.
Index ¶
- func Compress(data []byte) []byte
- func Decompress(src, dest []byte) ([]byte, error)
- func FromSpanner(row *spanner.Row, ptrs ...any) error
- func GenerateStatement(tmpl *template.Template, name string, input any) (spanner.Statement, error)
- func InsertMap(table string, in map[string]any) *spanner.Mutation
- func InsertOrUpdateMap(table string, in map[string]any) *spanner.Mutation
- func QuoteLike(value string) string
- func SpannerDefaultsInterceptor() grpc.UnaryServerInterceptor
- func ToSpanner(v any) any
- func ToSpannerMap(values map[string]any) map[string]any
- func UpdateMap(table string, in map[string]any) *spanner.Mutation
- type Buffer
- type Compressed
- type Ptr
- type Value
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Decompress ¶
Decompress decompresses the src compressed with Compress to dest. dest is the buffer for decompressed content, it will be reset to 0 length before taking the content.
func FromSpanner ¶
FromSpanner is a shortcut for (&Buffer{}).FromSpanner. Appropriate when FromSpanner is called only once, whereas Buffer is reusable throughout function.
func GenerateStatement ¶
GenerateStatement generates a spanner statement from a text template.
func InsertOrUpdateMap ¶
InsertOrUpdateMap is a shortcut for spanner.InsertOrUpdateMap with ToSpannerMap applied to in.
func QuoteLike ¶
QuoteLike turns a literal string into an escaped like expression. This means strings like test_name will only match as expected, rather than also matching test3name.
func SpannerDefaultsInterceptor ¶
func SpannerDefaultsInterceptor() grpc.UnaryServerInterceptor
SpannerDefaultsInterceptor returns a gRPC interceptor that adds default Spanner request options to the context.
The request tag will be set the to RPC method name.
See also ModifyRequestOptions in luci/server/span.
func ToSpanner ¶
ToSpanner converts values from Go types to Spanner types. In addition to supported types in FromSpanner, also supports []any and map[string]any.
func ToSpannerMap ¶
ToSpannerMap converts a map of Go values to a map of Spanner values. See also ToSpanner.
Types ¶
type Buffer ¶
type Buffer struct { NullString spanner.NullString NullTime spanner.NullTime Int64 int64 StringSlice []string ByteSlice []byte Int64Slice []int64 }
Buffer can convert a value from a Spanner type to a Go type. Supported types:
- Value and Ptr
- string
- timestamppb.Timestamp
- atvpb.Status
- pb.Variant
- pb.StringPair
- proto.Message
- internal.VerdictStatus
type Compressed ¶
type Compressed []byte
Compressed instructs ToSpanner and FromSpanner functions to compress the content with https://godoc.org/github.com/klauspost/compress/zstd encoding.
func (*Compressed) FromSpanner ¶
func (c *Compressed) FromSpanner(b *Buffer) error
FromSpanner implements Ptr.
func (*Compressed) SpannerPtr ¶
func (c *Compressed) SpannerPtr(b *Buffer) any
SpannerPtr implements Ptr.
type Ptr ¶
type Ptr interface { // SpannerPtr returns to a pointer of a type supported by Spanner client. // SpannerPtr must use one of typed buffers in b. SpannerPtr(b *Buffer) any // FromSpanner replaces Ptr value with the value in the typed buffer returned // by SpannerPtr. FromSpanner(b *Buffer) error }
Ptr can be used a destination of reading a Spanner cell. Typically if type *T implements Ptr, then T implements Value.