CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/golang-cloud-google-com--go--spanner

Official Google Cloud Spanner client library for Go providing comprehensive database operations, transactions, and admin functionality

Pending
Overview
Eval results
Files

testing.mddocs/

Testing Support

In-memory Spanner test server and SQL parser for testing and development.

spannertest Package

In-memory implementation of Spanner for testing:

import "cloud.google.com/go/spanner/spannertest"

Server

func NewServer() (*Server, error)

type Server struct {
    // Has unexported fields
}

func (s *Server) Addr() string
func (s *Server) Close()

Example:

import (
    "cloud.google.com/go/spanner"
    "cloud.google.com/go/spanner/spannertest"
)

func TestMyCode(t *testing.T) {
    srv, err := spannertest.NewServer()
    if err != nil {
        t.Fatal(err)
    }
    defer srv.Close()
    
    // Create client pointing to test server
    os.Setenv("SPANNER_EMULATOR_HOST", srv.Addr())
    
    client, err := spanner.NewClient(ctx, "projects/test/instances/test/databases/test")
    if err != nil {
        t.Fatal(err)
    }
    defer client.Close()
    
    // Use client for testing
}

spansql Package

SQL parser for Spanner SQL dialect:

import "cloud.google.com/go/spanner/spansql"

Parsing Functions

func ParseDDL(filename, s string) (*DDL, error)
func ParseDDLStmt(s string) (DDLStmt, error)
func ParseQuery(s string) (Query, error)
func ParseDMLStmt(s string) (DMLStmt, error)
func ParseExpr(s string) (Expr, error)
func IsKeyword(id string) bool

Example:

import "cloud.google.com/go/spanner/spansql"

ddl, err := spansql.ParseDDL("schema.sql", `
    CREATE TABLE Users (
        ID INT64 NOT NULL,
        Name STRING(100),
    ) PRIMARY KEY (ID)
`)
if err != nil {
    log.Fatal(err)
}

for _, stmt := range ddl.List {
    fmt.Printf("Statement: %v\n", stmt)
}

query, err := spansql.ParseQuery("SELECT * FROM Users WHERE ID > 100")
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Query: %v\n", query)

Types

The spansql package provides AST types for representing parsed SQL. See package documentation for complete type definitions.

For full API reference, see the spansql package documentation.

Install with Tessl CLI

npx tessl i tessl/golang-cloud-google-com--go--spanner

docs

client.md

dml.md

index.md

keys.md

low-level.md

protobuf-types.md

reads.md

testing.md

transactions.md

types.md

writes.md

tile.json