尝试使用 Spanner Data Boost 编写查询时,出现以下错误:
DataBoost used for non-partitioned query
我使用的代码如下:
stmt := spanner.Statement{
SQL: query,
Params: params,
}
iter := client.Single().QueryWithOptions(ctx, stmt, spanner.QueryOptions{
Priority: spannerpb.RequestOptions_PRIORITY_LOW,
DataBoostEnabled: true,
})
使用 Data Boost 的查询必须按照 Cloud Spanner 文档 中的描述执行并使用
PartitionQueryWithOptions
。我的代码有效:
txn, err := client.BatchReadOnlyTransaction(ctx, spanner.StrongRead())
if err != nil {
return err
}
defer txn.Close()
stmt := spanner.Statement{
SQL: query,
Params: params,
}
partitions, _ := txn.PartitionQueryWithOptions(ctx,
stmt,
spanner.PartitionOptions{},
spanner.QueryOptions{
DataBoostEnabled: true
}
)
for _, p := range partitions {
iter := txn.Execute(ctx, p)
defer iter.Stop()
for {
row, err := iter.Next()
if err == iterator.Done {
break
} else if err != nil {
return err
}
fmt.Println(row)
}
}