Skip to content

Commit 0b1ca60

Browse files
committed
SQL.md
1 parent 548257a commit 0b1ca60

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

SQL.md

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@ Package `ydb-go-sdk` provides usage `database/sql` API also.
77
1. [Initialization of `database/sql` driver](#init)
88
* [Configure driver with `ydb.Connector` (recommended way)](#init-connector)
99
* [Configure driver only with data source name (connection string)](#init-dsn)
10-
2. [Execute queries](#queries)
10+
2. [About session pool](#session-pool)
11+
3. [Execute queries](#queries)
1112
* [On database object](#queries-db)
1213
* [With transaction](#queries-tx)
13-
3. [Query modes (DDL, DML, DQL, etc.)](#query-modes)
14-
4. [Retry helpers for `YDB` `database/sql` driver](#retry)
14+
4. [Query modes (DDL, DML, DQL, etc.)](#query-modes)
15+
5. [Retry helpers for `YDB` `database/sql` driver](#retry)
1516
* [Over `sql.Conn` object](#retry-conn)
1617
* [Over `sql.Tx`](#retry-tx)
17-
5. [Query args types](#arg-types)
18-
6. [Get native driver from `*sql.DB`](#unwrap)
18+
6. [Query args types](#arg-types)
19+
7. [Get native driver from `*sql.DB`](#unwrap)
1920

2021
## Initialization of `database/sql` driver <a name="init"></a>
2122

@@ -57,6 +58,17 @@ Data source name parameters:
5758
* static credentials with authority part of URI, like `grpcs://root:password@localhost:2135/local`
5859
* `query_mode=scripting` - you can redefine default [DML](https://en.wikipedia.org/wiki/Data_manipulation_language) query mode
5960

61+
## About session pool <a name="session-pool"></a>
62+
63+
Native driver `ydb-go-sdk/v3` implements internal session pool, which uses with `db.Table().Do()` or `db.Table().DoTx()` methods.
64+
Internal session pool configures with options like `ydb.WithSessionPoolSizeLimit()` and other.
65+
Unlike session pool in native driver, `database/sql` contains another session pool, which configures with `*sql.DB.SetMaxOpenConns` and `*sql.DB.SetMaxIdleConns`.
66+
Lifetime of `YDB` session depends on driver configuration and predefined errors, such as `sql.driver.ErrBadConn`.
67+
`YDB` driver for `database/sql` transform internal `YDB` errors into `sql.driver.ErrBadConn` depending on result of internal error check (delete session on error or not and other).
68+
In most cases this behaviour of `database/sql` driver implementation for specific RDBMS completes queries without result errors.
69+
But some errors on unfortunate cases may be get on client-side.
70+
That's why querying must be wrapped with retry helpers, such as `retry.Do` or `retry.DoTx` (see more about retry helpers in [retry section](#retry)).
71+
6072
## Execute queries <a name="queries"></a>
6173

6274
### On database object <a name="queries-db"></a>

0 commit comments

Comments
 (0)