tessl install tessl/golang-cloud-google-com--go--spanner@1.87.2Official Google Cloud Spanner client library for Go providing comprehensive database operations, transactions, and admin functionality
In-memory Spanner test server and SQL parser for testing and development.
In-memory implementation of Spanner for testing:
import "cloud.google.com/go/spanner/spannertest"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
}SQL parser for Spanner SQL dialect:
import "cloud.google.com/go/spanner/spansql"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) boolExample:
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)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.