Documentation
¶
Overview ¶
Example (Execute) ¶
ctx := context.TODO()
db, err := ydb.Open(ctx, "grpcs://localhost:2135/local")
if err != nil {
fmt.Printf("failed to connect: %v", err)
return
}
defer db.Close(ctx) // cleanup resources
if err = retry.Retry(ctx, func(ctx context.Context) (err error) {
res, err := db.Scripting().Execute(
ctx,
"SELECT 1+1",
table.NewQueryParameters(),
)
if err != nil {
return err
}
defer res.Close() // cleanup resources
if !res.NextResultSet(ctx) {
return retry.RetryableError(
fmt.Errorf("no result sets"),
retry.WithBackoff(retry.TypeNoBackoff),
)
}
if !res.NextRow() {
return retry.RetryableError(
fmt.Errorf("no rows"),
retry.WithBackoff(retry.TypeSlowBackoff),
)
}
var sum int32
if err = res.Scan(&sum); err != nil {
return fmt.Errorf("scan failed: %w", err)
}
if sum != 2 {
return fmt.Errorf("unexpected sum: %v", sum)
}
return res.Err()
}, retry.WithIdempotent(true)); err != nil {
fmt.Printf("Execute failed: %v", err)
}
Example (ExplainPlan) ¶
ctx := context.TODO()
db, err := ydb.Open(ctx, "grpcs://localhost:2135/local")
if err != nil {
fmt.Printf("failed to connect: %v", err)
return
}
defer db.Close(ctx) // cleanup resources
res, err := db.Scripting().Explain(
ctx,
"SELECT 1+1",
scripting.ExplainModePlan,
)
if err != nil {
fmt.Printf("Explain failed: %v", err)
return
}
if res.Plan == "" {
fmt.Printf("Unexpected empty plan")
return
}
fmt.Printf("")
Example (ExplainValidate) ¶
ctx := context.TODO()
db, err := ydb.Open(ctx, "grpcs://localhost:2135/local")
if err != nil {
fmt.Printf("failed to connect: %v", err)
return
}
defer db.Close(ctx) // cleanup resources
if err = retry.Retry(ctx, func(ctx context.Context) (err error) {
res, err := db.Scripting().Explain(
ctx,
"SELECT 1+1",
scripting.ExplainModeValidate,
)
if err != nil {
return err
}
if len(res.ParameterTypes) > 0 {
return retry.RetryableError(fmt.Errorf("unexpected parameter types"))
}
return nil
}, retry.WithIdempotent(true)); err != nil {
fmt.Printf("Explain failed: %v", err)
}
Example (StreamExecute) ¶
ctx := context.TODO()
db, err := ydb.Open(ctx, "grpcs://localhost:2135/local")
if err != nil {
fmt.Printf("failed to connect: %v", err)
return
}
defer db.Close(ctx) // cleanup resources
if err = retry.Retry(ctx, func(ctx context.Context) (err error) {
res, err := db.Scripting().StreamExecute(
ctx,
"SELECT 1+1",
table.NewQueryParameters(),
)
if err != nil {
return err
}
defer res.Close() // cleanup resources
if !res.NextResultSet(ctx) {
return retry.RetryableError(
fmt.Errorf("no result sets"),
retry.WithBackoff(retry.TypeNoBackoff),
retry.WithDeleteSession(),
)
}
if !res.NextRow() {
return retry.RetryableError(
fmt.Errorf("no rows"),
retry.WithBackoff(retry.TypeFastBackoff),
)
}
var sum int32
if err = res.Scan(&sum); err != nil {
return fmt.Errorf("scan failed: %w", err)
}
if sum != 2 {
return fmt.Errorf("unexpected sum: %v", sum)
}
return res.Err()
}, retry.WithIdempotent(true)); err != nil {
fmt.Printf("StreamExecute failed: %v", err)
}
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client interface {
Execute(
ctx context.Context,
query string,
params *table.QueryParameters,
) (result.Result, error)
Explain(
ctx context.Context,
query string,
mode ExplainMode,
) (table.ScriptingYQLExplanation, error)
StreamExecute(
ctx context.Context,
query string,
params *table.QueryParameters,
) (result.StreamResult, error)
}
type ExplainMode ¶
type ExplainMode = uint8
const ( ExplainModeUnknown ExplainMode = iota ExplainModeValidate ExplainModePlan ExplainModeDefault = ExplainModePlan )
Click to show internal directories.
Click to hide internal directories.