diff --git a/CHANGELOG.md b/CHANGELOG.md index aae34facd..1248e907b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +* Changed default for `database/sql` driver from TABLE service to QUERY service + ## v3.121.0 * Changed internal pprof label to pyroscope supported format * Added `query.ImplicitTxControl()` transaction control (the same as `query.NoTx()` and `query.EmptyTxControl()`). See more about implicit transactions on [ydb.tech](https://ydb.tech/docs/en/concepts/transactions?version=v25.2#implicit) diff --git a/internal/xsql/connector.go b/internal/xsql/connector.go index c7d126b7b..a0e77a133 100644 --- a/internal/xsql/connector.go +++ b/internal/xsql/connector.go @@ -212,11 +212,13 @@ func Open( balancer: balancer, queryConfig: queryConfig, processor: func() Engine { - if overQueryService, _ := strconv.ParseBool(os.Getenv("YDB_DATABASE_SQL_OVER_QUERY_SERVICE")); overQueryService { - return QUERY + overQueryService, err := strconv.ParseBool(os.Getenv("YDB_DATABASE_SQL_OVER_QUERY_SERVICE")) + if err == nil && !overQueryService { + return TABLE } - return TABLE + // default is Query Engine + return QUERY }(), clock: clockwork.NewRealClock(), done: make(chan struct{}), diff --git a/tests/integration/database_sql_defaults_test.go b/tests/integration/database_sql_defaults_test.go new file mode 100644 index 000000000..4c7af3138 --- /dev/null +++ b/tests/integration/database_sql_defaults_test.go @@ -0,0 +1,22 @@ +//go:build integration +// +build integration + +package integration + +import ( + "database/sql" + "testing" + + _ "github.com/ydb-platform/ydb-go-sdk/v3" +) + +func TestDatabaseSQLDefaultProcessor(st *testing.T) { + t := newScope(st) + + db, err := sql.Open("ydb", t.ConnectionString()) + t.Require.NoError(err) + defer db.Close() + + _, err = db.Exec("DISCARD SELECT 1") + t.Require.Error(err, "DISCARD is supported in TABLE service but not in QUERY service") +}