Skip to content

bug: query explain returns error on multiple result sets #8998

@pelageech

Description

@pelageech

Bug Report

YDB GO SDK version:
3.80.1

Environment
macOS Sonoma 14.2.1, amd64

Current behavior:

panic: pool.With failed with 1 attempts: non-retryable error occurred on attempt No.1 (idempotent=true): operation/INTERNAL_ERROR (code = 400030, address = localhost:2136, nodeID = 1, issues = [{'Unexpected trailing message with multiple result sets'}]) at `github.com/ydb-platform/ydb-go-sdk/v3/internal/conn.(*grpcClientStream).RecvMsg(grpc_client_stream.go:180)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/query.nextPart(result.go:189)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/query.(*streamResult).nextPart(result.go:177)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/query.newResult(result.go:140)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/query.execute(execute_query.go:119)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/query.clientExec.func1(client.go:343)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/query.do.func1(client.go:211)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/pool.(*Pool).try(pool.go:339)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/pool.(*Pool).With.func2(pool.go:367)` at `github.com/ydb-platform/ydb-go-sdk/v3/retry.Retry.func1(retry.go:264)` at `github.com/ydb-platform/ydb-go-sdk/v3/retry.opWithRecover(retry.go:418)` at `github.com/ydb-platform/ydb-go-sdk/v3/retry.RetryWithResult(retry.go:358)` at `github.com/ydb-platform/ydb-go-sdk/v3/retry.Retry(retry.go:270)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/pool.(*Pool).With(pool.go:373)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/query.do(client.go:219)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/query.clientExec(client.go:354)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/query.(*Client).Exec(client.go:374)`

Expected behavior:
Plan and AST. No error.

Steps to reproduce:

package main

import (
	"context"
	"fmt"

	"github.com/ydb-platform/ydb-go-sdk/v3"
	"github.com/ydb-platform/ydb-go-sdk/v3/query"
)

func main() {
	ctx := context.TODO()
	db, err := ydb.Open(ctx, "grpc://localhost:2136/local")
	if err != nil {
		panic(err)
	}
	defer db.Close(ctx) // cleanup resources
	var (
		ast  string
		plan string
	)
	err = db.Query().Exec(ctx,
		`SELECT CAST(42 AS Uint32); SELECT CAST(43 AS Uint32);`,
		query.WithExecMode(query.ExecModeExplain),
		query.WithStatsMode(query.StatsModeNone, func(stats query.Stats) {
			ast = stats.QueryAST()
			plan = stats.QueryPlan()
		}),
		query.WithIdempotent(),
	)
	if err != nil {
		panic(err)
	}
	fmt.Println(plan)
	fmt.Println(ast)
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions