ydb-go-sdk icon indicating copy to clipboard operation
ydb-go-sdk copied to clipboard

bug: `query.ExecModeExplain` returns `io.EOF` when scanning a row

Open pelageech opened this issue 6 months ago • 0 comments

Bug Report

YDB GO SDK version: 3.76.3

Environment macOS Sonoma 14.2.1 amd64

Current behavior:

2024/08/07 21:10:52 next rowEOF at 'github.com/ydb-platform/ydb-go-sdk/v3/internal/query.(*materializedResultSet).NextRow(result_set.go:79)'

Expected behavior: No error and query plan.

Steps to reproduce: Run the code.

Related code:

package main

import (
	"context"
	"log"
	"time"

	ydbOtel "github.com/ydb-platform/ydb-go-sdk-otel"
	"github.com/ydb-platform/ydb-go-sdk/v3"
	"github.com/ydb-platform/ydb-go-sdk/v3/query"
	"github.com/ydb-platform/ydb-go-sdk/v3/trace"
	"go.opentelemetry.io/otel/trace/noop"
)

func main() {
	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
	defer cancel()

	driver, err := ydb.Open(ctx, "grpc://localhost:2136/local")
	if err != nil {
		log.Fatal("open", err)
	}
	defer driver.Close(ctx)

	res, err := driver.Query().Execute(ctx, "SELECT CAST(42 AS Uint32);", query.WithExecMode(query.ExecModeExplain))
	if err != nil {
		log.Fatal("query", err)
	}

	set, err := res.NextResultSet(ctx)
	if err != nil {
		log.Fatal("next set", err)
	}

	row, err := set.NextRow(ctx)
	if err != nil {
		log.Fatal("next row", err)
	}
	_ = row
}

Other information:

pelageech avatar Aug 07 '24 14:08 pelageech