spanner/spansql: spansql.ParseDDL is fialing on a valid query syntax
Client Spanner
Go Environment go version go1.20.4 darwin/arm64 Code
schema.sql file
CREATE VIEW ListDeployments
SQL SECURITY INVOKER AS
SELECT
user_id,
ARRAY_AGG(STRUCT<first_name STRING, last_name STRING>(first_name, last_name)) AS user_details
FROM Users;
func main() {
filename := "schema.sql"
bs, err := os.ReadFile(filename)
if err != nil {
log.Println("error reading schema file: %w", err)
}
ddl, err := spansql.ParseDDL(filename, string(bs))
if err != nil {
log.Printf("error parsing schema file: %v\n", err)
}
if ddl != nil {
log.Println(ddl.List)
}
}
Expected behavior Should be able to parse the DDL
Actual behavior
2024/03/20 17:41:27 error parsing schema file: schema.sql:5: unexpected token "STRING"
Additional context
spanner client lib version: cloud.google.com/go/spanner v1.59.0
If I create the view with Spanner Studio no issue
Any updates here?
Thanks @Arsen-Zhakypbek-Uulu, struct types is not supported in aggregate functions, more limitations can be found here https://github.com/googleapis/google-cloud-go/tree/main/spanner/spannertest, its recommended to use https://cloud.google.com/spanner/docs/emulator for local validation of spanner sql.
Feel free to raise PR for struct support, but we are are right now tagging parser feature request as p2 or p3 as of now.