Official 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.
Install with Tessl CLI
npx tessl i tessl/golang-cloud-google-com--go--spanner