Skip to content

Commit 931aeaa

Browse files
committed
* Supported column name prefix __discard_column_ for discard columns in result sets
1 parent 2b14af7 commit 931aeaa

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
* Supported column name prefix `__discard_column_` for discard columns in result sets
12
* Made `StatusIds_SESSION_EXPIRED` retriable for idempotent operations
23

34
## v3.55.0

internal/xsql/rows.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"database/sql"
66
"database/sql/driver"
77
"io"
8+
"strings"
89
"sync"
910

1011
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
@@ -23,6 +24,8 @@ var (
2324
_ driver.Rows = &single{}
2425

2526
_ types.Scanner = &valuer{}
27+
28+
ignoreColumnPrefixName = "__discard_column_"
2629
)
2730

2831
type rows struct {
@@ -43,7 +46,9 @@ func (r *rows) Columns() []string {
4346
})
4447
cs := make([]string, 0, r.result.CurrentResultSet().ColumnCount())
4548
r.result.CurrentResultSet().Columns(func(m options.Column) {
46-
cs = append(cs, m.Name)
49+
if !strings.HasPrefix(m.Name, ignoreColumnPrefixName) {
50+
cs = append(cs, m.Name)
51+
}
4752
})
4853
return cs
4954
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
//go:build integration
2+
// +build integration
3+
4+
package integration
5+
6+
import (
7+
"context"
8+
"database/sql"
9+
"testing"
10+
"time"
11+
12+
"github.com/ydb-platform/ydb-go-sdk/v3"
13+
"github.com/ydb-platform/ydb-go-sdk/v3/retry"
14+
)
15+
16+
func TestDatabaseSqlDiscardColumn(t *testing.T) {
17+
scope := newScope(t)
18+
db := scope.SQLDriverWithFolder(
19+
ydb.WithTablePathPrefix(scope.Folder()),
20+
ydb.WithAutoDeclare(),
21+
ydb.WithNumericArgs(),
22+
)
23+
dt := time.Date(2023, 3, 1, 16, 34, 18, 0, time.UTC)
24+
25+
var row *sql.Row
26+
err := retry.Retry(scope.Ctx, func(ctx context.Context) (err error) {
27+
row = db.QueryRowContext(ctx, `
28+
SELECT
29+
$1 AS vInt,
30+
$2 AS __discard_column_1,
31+
$3 AS __discard_column_2,
32+
$4 AS __discard_column_3
33+
`, 1, "2", 3.0, dt,
34+
)
35+
return row.Err()
36+
})
37+
scope.Require.NoError(err)
38+
39+
var resInt int
40+
scope.Require.NoError(row.Scan(&resInt))
41+
42+
scope.Require.Equal(1, resInt)
43+
}

0 commit comments

Comments
 (0)