github.com/ydb-platform/ydb-go-sdk/v3@v3.57.0/CHANGELOG.md (about)

     1  ## v3.57.0
     2  * Added experimental implementation of query service client
     3  * Fixed sometime panic on topic writer closing
     4  * Added experimental query parameters builder `ydb.ParamsBuilder()`
     5  * Changed types of `table/table.{QueryParameters,ParameterOption}` to aliases on `internal/params.{Parameters,NamedValue}`
     6  * Fixed bug with optional decimal serialization 
     7  
     8  ## v3.56.2
     9  * Fixed return private error for commit to stopped partition in topic reader.
    10  * Stopped wrapping err error as transport error at topic streams (internals)
    11  
    12  ## v3.56.1
    13  * Fixed fixenv usage (related to tests only)
    14  
    15  ## v3.56.0
    16  * Fixed handle of operational errors in topic streams
    17  * The minimum version of Go in `ydb-go-sdk` has been raised to `go1.21`
    18  * Fixed topic writer infinite reconnections in some cases
    19  * Refactored nil on err `internal/grpcwrapper/rawydb/issues.go`, when golangci-lint nilerr enabled
    20  * Refactored nil on err `internal/grpcwrapper/rawtopic/describe_topic.go`, when golangci-lint nilerr enabled
    21  
    22  ## v3.55.3
    23  * Fixed handle of operational errors in topic streams (backported fix only)
    24  
    25  ## v3.55.2
    26  * Fixed init info in topic writer, when autoseq num turned off.
    27  
    28  ## v3.55.1
    29  * Supported column name prefix `__discard_column_` for discard columns in result sets
    30  * Made `StatusIds_SESSION_EXPIRED` retriable for idempotent operations
    31  
    32  ## v3.55.0
    33  * Refactored `internal/value/intervalValue.Yql()`
    34  * The minimum version of Go in `ydb-go-sdk` has been raised to `go1.20`
    35  
    36  ## v3.54.3
    37  * Added per message metadata support for topic api
    38  * Context for call options now have same lifetime as driver (previous - same lifetime as context for call Open function).
    39  * Extended metrics (fill database.sql callbacks, recognize TLI error)
    40  * Refactored config prefix in metrics
    41  * Removed excess status labels from metrics
    42  * Implement `fmt.Stringer` interface for `Driver` struct
    43  
    44  ## v3.54.2
    45  * Added context to some internal methods for better tracing
    46  * Added `trace.FunctionID` helper and `FunctionID` field to trace start info's
    47  * Replaced lazy initialization of ydb clients (table, topic, etc.) to explicit initialization on `ydb.Open` step
    48  
    49  ## v3.54.1
    50  * Fixed inconsistent labels in `metrics`
    51  
    52  ## v3.54.0
    53  * Allowed `sql.LevelSerializable` isolation level in read-write mode in `database/sql` transactions
    54  * Refactored traces and metrics
    55  * Added `{retry,table}.WithLabel` options for mark retriers calls
    56  * Added `ydb.WithTraceRetry` option
    57  * Moved `internal/allocator.Buffers` to package `internal/xstring`
    58  * Bumped `golang.org/x/sync` to `v0.3.0`
    59  * Bumped `google.golang.org/protobuf` to `v1.31.0`
    60  * Bumped `google.golang.org/grpc` to `v1.57.1`
    61  * Allowed grpc status error as arg in `internal/xerrors.TransportError(err)`
    62  * Added `interanl/xtest.CurrentFileLine()` helper for table tests
    63  * Added `internal/credentials.IsAccessError(err)` helper for check access errors
    64  * Changed period for re-fresh static credentials token from `1/2` to `1/10` to expiration time
    65  * Added `table.SnapshotReadOnlyTxControl()` helper for get transaction control with snapshot read-only
    66  
    67  ## v3.53.4
    68  * Downgrade `golang.org/x/net` from `0.17.0` to `0.15.0`
    69  * Downgrade `golang.org/x/sys` from `v0.13.0` to `v0.12.0`
    70  * Downgrade `golang.org/x/crypto` from `v0.14.0` to `v0.13.0`
    71  
    72  ## v3.53.3
    73  * Refactored credentials options (from funcs to interfaces and types)
    74  * Fixed stringification of credentials object
    75  
    76  ## v3.53.2
    77  * Fixed panic when try to unwrap values with more than 127 columns with custom ydb unmarshaler
    78  
    79  ## v3.53.1
    80  * Bumps `github.com/ydb-platform/ydb-go-genproto` for support `query` service
    81  * Bumps `golang.org/x/net` from `0.7.0` to `0.17.0`
    82  * Bumps `golang.org/x/sys` from `v0.5.0` to `v0.13.0`
    83  * Bumps `golang.org/x/text` from `v0.7.0` to `v0.13.0`
    84  
    85  ## v3.53.0
    86  * Removed `internal/backoff.Backoff.Wait` interface method for exclude resource leak with bug-provoked usage of `time.After` method
    87  * Marked as deprecated `retry.WithDoRetryOptions` and `retry.WithDoTxRetryOptions`
    88  * Added receiving first result set on construct `internal/table/scanner.NewStream()`
    89  * Added experimental package `metrics` with SDK metrics
    90  * Fixed redundant trace call for finished `database/sql` transactions
    91  * Added repeater event type to wake-up func context
    92  * Refactored default logger format
    93  * Refactored `internal/conn.coonError` format
    94  * Fixed data race on `internal/conn.conn.cc` access
    95  
    96  ## v3.52.3
    97  * Removed almost all experimental marks from topic api.
    98  * Rename some topic APIs (old names was deprecated and will be removed in one of next versions).
    99  * Deprecated topic options (the option will be removed): min size of read messages batch
   100  * Deprecated WithOnWriterFirstConnected callback, use Writer.WaitInitInfo instead.
   101  * Changed topic Codec base type from int to int32 (was experimental code)
   102  * Added `WaitInit` and `WaitInitInfo` method to the topic reader and writer
   103  * Remove extra allocations in `types.TupleValue`, `types.ListValue` and `types.SetValue`
   104  
   105  ## v3.52.2
   106  * Removed support of placeholder "_" for ignoring columns in `database/sql` result sets
   107  
   108  ## v3.52.1
   109  * Merged `internal/xsql/conn.{GetTables,GetAllTables}` methods for `DRY`
   110  * Replaced `internal/xsql.Connector.PathNormalizer` default from `nopPathNormalizer` to `bind.TablePathPrefix` with database name as path prefix
   111  * Supported placeholder "_" for ignored column names in `database/sql` result sets
   112  
   113  ## v3.52.0
   114  * Added `table.Session.CopyTables` method
   115  * Added `x-ydb-trace-id` header into grpc calls
   116  * Improved topic reader logs
   117  * Fixed `internal/xstring` package with deprecated warning in `go1.21` about `reflect.{String,Slice}Header`
   118  
   119  ## v3.51.3
   120  * Added `internal/xstring.{FromBytes([]byte),ToBytes(string)` for increase performance on `string` from/to `[]byte` conversion
   121  
   122  ## v3.51.2
   123  * Added `table/options.ReadFromSnapshot(bool)` option for `session.StreamReadTable()`
   124  
   125  ## v3.51.1
   126  * Added checking condition for `tx.Rollback()` in `retry.DoTx`
   127  
   128  ## v3.51.0
   129  * Added node info to grpc errors
   130  
   131  ## v3.50.0
   132  * Added methods `TotalCPUTime()` and `TotalDuration()` to `table/stats/QueryStats` interface
   133  * Added check if commit order is bad in sync mode
   134  
   135  ## v3.49.1
   136  * Added `table.options.WithIgnoreTruncated` option for `session.Execute` method
   137  * Added `table.result.ErrTruncated` error for check it with `errors.Is()` outside of `ydb-go-sdk`
   138  
   139  ## v3.49.0
   140  * Added `table.Session.ReadRows` method for getting rows by keys
   141  * Added `table/options.ChangefeedFormatDynamoDBStreamsJSON` format of `DynamoDB` change feeds
   142  
   143  ## v3.48.8
   144  * Fixed `sugar.RemoveRecursive()` for column table type
   145  
   146  ## v3.48.7
   147  * Added `sugar.StackRecord()` helper for stringification of current file path and line
   148  * Updated `google.golang.org/grpc` from `v1.49.0` to `v1.53.0` due to vulnerability
   149  * Updated `google.golang.org/protobuf` from `v1.28.0` to `v1.28.1` due to vulnerability
   150  * Implemented implicit standard interface `driver.RowsColumnTypeNullable` in `internal/xsql.rows`
   151  * Upgraded errors description from `retry.Retry` with attempts info
   152  
   153  ## v3.48.6
   154  * Added builder for topic reader message (usable for tests)
   155  
   156  ## v3.48.5
   157  * Removed `log.Secret` helper as unnessesarry in public API after refactoring logging subsystem
   158  * Enriched the error with important details from initial discovery
   159  * Added `internal.{secret,stack}` packages
   160  * Implemented `fmt.Stringer` interface in credential types
   161  
   162  ## v3.48.4
   163  * Added `ydb.IsOperationErrorTransactionLocksInvalidated(err)` helper for checks `TLI` flag in err
   164  
   165  ## v3.48.3
   166  * Added `table/types.IsOptional()` helper
   167  
   168  ## v3.48.2
   169  * Refactored tests
   170  
   171  ## v3.48.1
   172  * Added `sugar.Is{Entry,ColumnTable}Exists` helper
   173  
   174  ## v3.48.0
   175  * Fixed stopping topic reader by grpc stream shutdown
   176  * Fixed `database/sql` driver for get and parse container ydb types
   177  * Changed `table/scanner.scanner.Any()` behaviour: for non-primitive types returns raw `table/types.Value` instead nil from previous behaviour
   178  * Added `table/types.{ListItems,VariantValue,DictValues}` helpers for get internal content of abstract `table/types.Value`
   179  * Marked as deprecated `table/types.DictFields` (use `table/types.DictValues` instead)
   180  
   181  ## v3.47.5
   182  * Added `scheme.Entry.IsColumnTable()` helper
   183  
   184  ## v3.47.4
   185  * Disabled check of node exists with `balancers.SingleConn`
   186  * Improved code with `go-critic` linter
   187  * Added session info into `database/sql` event `connected`
   188  
   189  ## v3.47.3
   190  * Added `table/options.Description.Tiering` field
   191  
   192  ## v3.47.2
   193  * Refactored `internal/cmd/gtrace` tool (prefer pointers instead trace struct copies) for bust performance
   194  * Fixed usage of generated traces in code
   195  
   196  ## v3.47.1
   197  * Removed test artifacts from repository
   198  
   199  ## v3.47.0
   200  * Added `table/types.ToDecimal()` converter from `table/types.Value` to `table/types.Decimal`
   201  
   202  ## v3.46.1
   203  * Implemented `internal/xcontext.With{Cancel,Timeout}` with stack record and switched all usages from standard `context.With{Cancel,Timeout}`
   204  
   205  ## v3.46.0
   206  * Refactored package `log` for support typed fields in log messages
   207  
   208  ## v3.45.0
   209  * Added `table/options.WithPartitions` for configure partitioning policy
   210  * Marked as deprecated `table/options.WithPartitioningPolicy{UniformPartitions,ExplicitPartitions}` (use `table/options.With{UniformPartitions,ExplicitPartitions}` instead)
   211  
   212  ## v3.44.3
   213  * Fixed bug of processing endpoint with `node_id=0`
   214  * Refactored of checking node ID in cluster discovery before `Get` and during in `Put` of session into session pool
   215  
   216  ## v3.44.2
   217  * Removed debug print
   218  
   219  ## v3.44.1
   220  * Fixed bug with returning session into pool before second discovery
   221  
   222  ## v3.44.0
   223  * Added `table/options.WithCallOptions` options for append custom grpc call options into `session.{BulkUpsert,Execute,StreamExecuteScanQuery}`
   224  * Supported fake transactions in `database/sql` driver over connector option `ydb.WithFakeTx(queryMode)` and connection string param `go_fake_tx`
   225  * Removed `testutil/timeutil` package (all usages replaced with `clockwork` package)
   226  * Changed behaviour of retryer on transport errors `cancelled` and `deadline exceeded` - will retry idempotent operation if context is not done
   227  * Added address of node to operation error description as optional
   228  * Fixed bug with put session from unknown node
   229  * Fixed bug with parsing of `TzTimestamp` without microseconds
   230  * Fixed code -1 of retryable error if wrapped error with code
   231  * Added `ydb.MustOpen` and `ydb.MustConnector` helpers
   232  * Fixed `internal/xerrors.Transport` error wrapping for case when given error is not transport error
   233  * Added grpc and operation codes to errors string description
   234  * Extend `scheme.Client` interface with method `Database`
   235  * Removed `driver.ResultNoRows` in `internal/xsql`
   236  * Added `ydb.{WithTablePathPrefix,WithAutoDeclare,WithPositionalArgs,WithNumericalArgs}` query modifiers options
   237  * Supported binding parameters for `database/sql` driver over connector option `ydb.WithAutoBind()` and connection string params `go_auto_bind={table_path_prefix(path),declare,numeric,positional}`
   238  * Added `testutil.QueryBind` test helper
   239  * Fixed topic retry policy callback call: not call it with nil error
   240  * Fixed bug with no checking operation error on `discovery.Client` calls
   241  * Allowed zero create session timeout in `ydb.WithSessionPoolCreateSessionTimeout(timeout)` (less than or equal to zero - no used timeout on create session request)
   242  * Added examples with own `go.mod`
   243  * Marked as deprecated `ydb.WithErrWriter(w)` and `ydb.WithOutWriter(w)` logger options
   244  * Added `ydb.WithWriter(w)` logger option
   245  
   246  ## v3.43.0
   247  **Small broken changes**
   248  
   249  Most users can skip there notes and upgrade as usual because build break rare used methods (expiremental API and api for special cases, not need for common use YDB) and this version has no any behavior changes.
   250  
   251  Changes for experimental topic API:
   252  * Moved `producer_id` from required positional argument to option `WithProducerID` (and it is optional now)
   253  * Removed `WithMessageGroupID` option (because not supported now)
   254  
   255  Changes in ydb connection:
   256  * Publish internal private struct `ydb.connection` as `ydb.Driver` (it is implement `ydb.Connection`)
   257  * `ydb.Connection` marked as deprecated
   258  * Changed return type of `ydb.Open(...)` from `ydb.Connection` to `*ydb.Driver`
   259  * Changed return type of `ydb.New(...)` from `ydb.Connection` to `*ydb.Driver`
   260  * Changed argument type for `ydb.GRPCConn` from `ydb.Connection` to `*ydb.Driver`
   261  * Removed method `With` from `ydb.Connection` (use `*Driver.With` instead).
   262  
   263  Changes in package `sugar`:
   264  * Changed a type of database arg in `sugar.{MakeRecursive,RemoveRecursive}` from `ydb.Connection` to minimal required local interface
   265  
   266  Dependencies:
   267  * Up minimal supported version of `go` to `1.17` for update dependencies (new `golang.org/x` doesn't compiled for `go1.16`)
   268  * Upgrade `golang.org/x/...`  for prevent issues: `CVE-2021-33194`, `CVE-2022-27664`, `CVE-2021-31525`, `CVE-2022-41723`
   269  
   270  ## v3.42.15
   271  * Fixed checking `nil` error with `internal/xerrors.Is`
   272  
   273  ## v3.42.14
   274  * Supported `scheme.EntryTopic` path child entry in `sugar.RemoveRecursive`
   275  
   276  ## v3.42.13
   277  * Fixed default state of `internal/xerrors.retryableError`: it inherit properties from parent error as possible
   278  * Marked event `grpc/stats.End` as ignored at observing status of grpc connection
   279  
   280  ## v3.42.12
   281  * Replaced the balancer connection to discovery service from short-lived grpc connection to `internal/conn` lazy connection (revert related changes from `v3.42.6`)
   282  * Marked as deprecated `trace.Driver.OnBalancerDialEntrypoint` event callback
   283  * Deprecated `trace.Driver.OnConnTake` event callback
   284  * Added `trace.Driver.OnConnDial` event callback
   285  
   286  ## v3.42.11
   287  * Fixed validation error for `topicoptions.WithPartitionID` option of start topic writer.
   288  
   289  ## v3.42.10
   290  * Added exit from retryer if got grpc-error `Unauthenticated` on `discovery/ListEndpoints` call
   291  
   292  ## v3.42.9
   293  * Added `internal/xerrors.Errorf` error for wrap multiple errors and check them with `errors.Is` of `errors.As`
   294  * Fixed corner cases of `internal/wait.Wait`
   295  * Added check of port in connection string and error throw
   296  * Fixed bug with initialization of connection pool before apply static credentials
   297  * Refactored of applying grpc dial options with defaults
   298  * Added `trace.Driver.{OnBalancerDialEntrypoint,OnBalancerClusterDiscoveryAttempt}` trace events
   299  * Fixed compilation of package `internal/xresolver` with `google.golang.org/grpc@v1.53`
   300  * Fixed returning `io.EOF` on `rows.Next` and `rows.NextResultSet`
   301  * Added wrapping of errors from unary and stream results
   302  * Added error throw on `database/sql.Conn.BeginTx()`, `*sql.Tx.ExecContext` and `*sql.Tx.QueryContext` if query mode is not `ydb.DataQueryMode`
   303  * Added test for `database/sql` scan-query
   304  
   305  ## v3.42.8
   306  * Fixed `internal/scheme/helpers/IsDirectoryExists(..)` recursive bug
   307  
   308  ## v3.42.7
   309  * Fixed `sugar.IsTableExists` with recursive check directory exists
   310  * Added `sugar.IsDirectoryExists`
   311  * Changed type of `table/options.IndexType` for type checks
   312  * Added constants `table/options.IndexTypeGlobal` and `table/options.IndexTypeGlobalAsync`
   313  * Added `table/options.IndexDescription.Type` field with `table/options.IndexType` type
   314  
   315  ## v3.42.6
   316  * Implemented `driver.RowsColumnTypeDatabaseTypeName` interface in `internal/xsql.rows` struct
   317  * Extended `internal/xsql.conn` struct with methods for getting `YDB` metadata
   318  * Added `scheme.Client` to `internal/xsql.connection` interface
   319  * Added `helpers` package with method for checking existence of table, refactored `sugar.IsTableExists()`
   320  * Added checks for nil option to all opts range loops
   321  * Moved content of package `internal/ctxlabels` into `internal/xcontext`
   322  * Implemented `GRPCStatus` method in `internal/xerrors/transportError`
   323  * Added different implementations of stacktrace error for grpc errors and other
   324  * Dropped `internal/xnet` package as useless
   325  * Fixed default grpc dial options
   326  * Replaced single connection for discovery repeater into connection which creates each time for discovery request
   327  * Fixed retry of cluster discovery on initialization
   328  * Fixed dial timeout processing
   329  
   330  ## v3.42.5
   331  * Fixed closing of `database/sql` connection (aka `YDB` session)
   332  * Made `session.Close()` as `nop` for idled session
   333  * Implemented goroutine for closing idle connection in `database/sql` driver
   334  * Separated errors of commit from other reader and to expired session
   335  * Fixed wrapping error in `internal/balancer/Balancer.wrapCall()`
   336  
   337  ## v3.42.4
   338  * Added `ydb.WithDisableServerBalancer()` database/sql connector option
   339  
   340  ## v3.42.3
   341  * Added `credentials.NewStaticCredentials()` static credentials constructor
   342  * Changed `internal/credentials.NewStaticCredentials()` signature and behaviour for create grpc connection on each call to auth service
   343  * Downgrade `google.golang.org/grpc` to `v1.49.0`
   344  
   345  ## v3.42.2
   346  * Added `trace.Details.Details()` method for use external detailer
   347  
   348  ## v3.42.1
   349  * Fixed lazy transaction example for `godoc`
   350  
   351  ## v3.42.0
   352  * Added retry policy options for topics: `topic/topicoptions.WithReaderCheckRetryErrorFunction`, `topic/topicoptions.WithReaderStartTimeout`, `topic/topicoptions.WithWriterCheckRetryErrorFunction`, `topic/topicoptions.WithWriterStartTimeout`
   353  * Refactored `internal/conn` middlewares
   354  * Added `trace.tableSessionInfo.LastUsage()` method for get last usage timestamp
   355  * Reverted `tx.WithCommit()` changes for fix unstable behaviour of lazy transactions
   356  * Added `options.WithCommit()` option for execute query with auto-commit flag
   357  * Removed `trace.TableTransactionExecuteStartInfo.KeepInCache` field as redundant
   358  
   359  ## v3.41.0
   360  * Added option for set interval of auth token update in topic streams
   361  * Supported internal allocator in `{session,statement}.Execute` for decrease memory usage
   362  * Fixed typo in `topic/README.md`
   363  * Upgraded `ydb-go-genproto` dependency
   364  * Fixed duplicating of traces in `table.Client.Do()` call
   365  * Supported `table.Transaction.WithCommit()` method for execute query and auto-commit after
   366  * Added `DataColumns` to `table.options.IndexDescription`
   367  * Added `scheme.EntryColumnStore` and `scheme.EntryColumnColumn` entry types
   368  * Added `table.options.WithPartitioningBy(columns)` option
   369  
   370  ## v3.40.1
   371  * Added constructor of `options.TimeToLiveSettings` and fluent modifiers
   372  
   373  ## v3.40.0
   374  * Added `options.WithAddAttribute` and `options.WithDropAttribute` options for `session.AlterTable` request
   375  * Added `options.WithAddIndex` and `options.WithDropIndex` options for `session.AlterTable` request
   376  * Added return error while create topic writer with not equal producer id and message group id.
   377  * Added package `meta` with methods about `YDB` metadata
   378  * Added `meta.WithTrailerCallback(ctx, callback)` context modifier for attaching callback function which will be called on incoming metadata
   379  * Added `meta.ConsumedUnits(metadata.MD)` method for getting consumed units from metadata
   380  * Added `NestedCall` field to retry trace start infos for alarm on nested calls
   381  * Added `topicoptions.WithWriterTrace` option for attach tracer into separated writer
   382  * Added `sugar.IsTableExists()` helper for check existence of table
   383  
   384  ## v3.39.0
   385  * Removed message level partitioning from experimental topic API. It is unavailable on server side yet.
   386  * Supported `NullValue` type as received type from `YDB`
   387  * Supported `types.SetValue` type
   388  * Added `types.CastTo(types.Value, destination)` public method for cast `types.Value` to golang native type value destination
   389  * Added `types.TupleItem(types.Value)`, `types.StructFields(types.Value)` and `types.DictValues(types.Value)` funcs (extractors of internal fields of tuple, struct and dict values)
   390  * Added `types.Value.Yql()` func for getting values string representation as `YQL` literal
   391  * Added `types.Type.Yql()` func for getting `YQL` representation of type
   392  * Marked `table/types.WriteTypeStringTo` as deprecated
   393  * Added `table/options.WithDataColumns` for supporting covering indexes
   394  * Supported `balancer` query string parameter in `DSN`
   395  * Fixed bug with scanning `YSON` value from result set
   396  * Added certificate caching in `WithCertificatesFromFile` and `WithCertificatesFromPem`
   397  
   398  ## v3.38.5
   399  * Fixed bug from scan unexpected column name
   400  
   401  ## v3.38.4
   402  * Changed type of `table/options.{Create,Alter,Drop}TableOption` from func to interface
   403  * Added implementations of `table/options.{Create,Alter,Drop}Option`
   404  * Changed type of `topic/topicoptions.{Create,Alter,Drop}Option` from func to interface
   405  * Added implementations of `topic/topicoptions.{Create,Alter}Option`
   406  * Fix internal race-condition bugs in internal background worker
   407  
   408  ## v3.38.3
   409  * Added retries to initial discovering
   410  
   411  ## v3.38.2
   412  * Added missing `RetentionPeriod` parameter for topic description
   413  * Fixed reconnect problem for topic client
   414  * Added queue limit for sent messages and split large grpc messages while send to topic service
   415  * Improved control plane for topic services: allow list topic in schema, read cdc feeds in table, retry on contol plane operations in topic client, full info in topic describe result
   416  * Allowed writing zero messages to topic writer
   417  
   418  ## v3.38.1
   419  * Fixed deadlock with implicit usage of `internal.table.Client.internalPoolAsyncCloseSession`
   420  
   421  ## v3.38.0
   422  * Fixed commit errors for experimental topic reader
   423  * Updated `ydb-go-genproto` dependency
   424  * Added `table.WithSnapshotReadOnly()` `TxOption` for supporting `SnapshotReadOnly` transaction control
   425  * Fixed bug in `db.Scripting()` queries (not checked operation results)
   426  * Added `sugar.ToYdbParam(sql.NamedArg)` helper for converting `sql.NamedArg` to `table.ParameterOption`
   427  * Changed type `table.ParameterOption` for getting name and value from `table.ParameterOption` instance
   428  * Added topic writer experimental api with internal logger
   429  
   430  ## v3.37.8
   431  * Refactored the internal closing behaviour of table client
   432  * Implemented the `sql.driver.Validator` interface
   433  * Fixed update token for topic reader
   434  * Marked sessions which creates from `database/sql` driver as supported server-side session balancing
   435  
   436  ## v3.37.7
   437  * Changed type of truncated result error from `StreamExecuteScanQuery` to retryable error
   438  * Added closing sessions if node removed from discovery results
   439  * Moved session status type from `table/options` package to `table`
   440  * Changed session status source type from `uint32` to `string` alias
   441  
   442  ## v3.37.6
   443  * Added to balancer notifying mechanism for listening in table client event about removing some nodes and closing sessions on them
   444  * Removed from public client interfaces `closer.Closer` (for exclude undefined behaviour on client-side)
   445  
   446  ## v3.37.5
   447  * Refactoring of `xsql` errors checking
   448  
   449  ## v3.37.4
   450  * Revert the marking of context errors as required to delete session
   451  
   452  ## v3.37.3
   453  * Fixed alter topic request - stop send empty setSupportedCodecs if customer not set them
   454  * Marked the context errors as required to delete session
   455  * Added log topic api reader for internal logger
   456  
   457  ## v3.37.2
   458  * Fixed nil pointer exception in topic reader if reconnect failed
   459  
   460  ## v3.37.1
   461  * Refactored the `xsql.badconn.Error`
   462  
   463  ## v3.37.0
   464  * Supported read-only `sql.LevelSnapshot` isolation with fake transaction and `OnlineReadOnly` transaction control (transient, while YDB clusters are not updated with true snapshot isolation mode)
   465  * Supported the `*sql.Conn` as input type `ydb.Unwrap` helper for go's 1.18
   466  
   467  ## v3.36.2
   468  * Changed output of `sugar.GenerateDeclareSection` (added error as second result)
   469  * Specified `sugar.GenerateDeclareSection` for `go1.18` (supports input types `*table.QueryParameters` `[]table.ParameterOption` or `[]sql.NamedArg`)
   470  * Supports different go's primitive value types as arg of `sql.Named("name", value)`
   471  * Added `database/sql` example and docs
   472  
   473  ## v3.36.1
   474  * Fixed `xsql.Rows` error checking
   475  
   476  ## v3.36.0
   477  * Changed behavior on `result.Err()` on truncated result (returns non-retryable error now, exclude `StreamExecuteScanQuery`)
   478  * Added `ydb.WithIgnoreTruncated` option for disabling errors on truncated flag
   479  * Added simple transaction control constructors `table.OnlineReadOnlyTxControl()` and `table.StaleReadOnlyTxControl()`
   480  * Added transaction control specifier with context `ydb.WithTxControl`
   481  * Added value constructors `types.BytesValue`, `types.BytesValueFromString`, `types.TextValue`
   482  * Removed auto-prepending declare section on `xsql` queries
   483  * Supports `time.Time` as type destination in `xsql` queries
   484  * Defined default dial timeout (5 seconds)
   485  
   486  ## v3.35.1
   487  * Removed the deprecation warning for `ydb.WithSessionPoolIdleThreshold` option
   488  
   489  ## v3.35.0
   490  * Replaced internal table client background worker to plain wait group for control spawned goroutines
   491  * Replaced internal table client background session keeper to internal background session garbage collector for idle sessions
   492  * Extended the `DescribeTopicResult` struct
   493  
   494  ## v3.34.2
   495  * Added some description to error message from table pool get
   496  * Moved implementation `sugar.GenerateDeclareSection` to `internal/table`
   497  * Added transaction trace callbacks and internal logging with them
   498  * Stored context from `BeginTx` to `internal/xsql` transaction
   499  * Added automatically generated declare section to query text in `database/sql` usage
   500  * Removed supports `sql.LevelSerializable`
   501  * Added `retry.Do` helper for retry custom lambda with `database/sql` without transactions
   502  * Removed `retry.WithTxOptions` option (only default isolation supports)
   503  
   504  ## v3.34.1
   505  * Changed `database/sql` driver `prepare` behaviour to `nop` with proxing call to conn exec/query with keep-in-cache flag
   506  * Added metadata to `trace.Driver.OnInvoke` and `trace.Driver.OnNewStream` done events
   507  
   508  ## v3.34.0
   509  * Improved the `xsql` errors mapping to `driver.ErrBadConn`
   510  * Extended `retry.DoTx` test for to achieve equivalence with `retry.Retry` behaviour
   511  * Added `database/sql` events for tracing `database/sql` driver events
   512  * Added internal logging for `database/sql` events
   513  * Supports `YDB_LOG_DETAILS` environment variable for specify scope of log messages
   514  * Removed support of `YDB_LOG_NO_COLOR` environment variable
   515  * Changed default behaviour of internal logger to without coloring
   516  * Fixed coloring (to true) with environment variable `YDB_LOG_SEVERITY_LEVEL`
   517  * Added `ydb.WithStaticCredentials(user, password)` option for make static credentials
   518  * Supports static credentials as part of connection string (dsn - data source name)
   519  * Changed minimal supported version of go from 1.14 to 1.16 (required for jwt library)
   520  
   521  
   522  ## v3.33.0
   523  * Added `retry.DoTx` helper for retrying `database/sql` transactions
   524  * Implemented `database/sql` driver over `ydb-go-sdk`
   525  * Marked as deprecated `trace.Table.OnPoolSessionNew` and `trace.Table.OnPoolSessionClose` events
   526  * Added `trace.Table.OnPoolSessionAdd` and `trace.Table.OnPoolSessionRemove` events
   527  * Refactored session lifecycle in session pool for fix flaked `TestTable`
   528  * Fixed deadlock in topicreader batcher, while add and read raw server messages
   529  * Fixed bug in `db.Topic()` with send response to stop partition message
   530  
   531  ## v3.32.1
   532  * Fixed flaky TestTable
   533  * Renamed topic events in `trace.Details` enum
   534  
   535  ## v3.32.0
   536  * Refactored `trace.Topic` (experimental) handlers
   537  * Fixed signature and names of helpers in `topic/topicsugar` package
   538  * Allowed parallel reading and committing topic messages
   539  
   540  ## v3.31.0
   541  * Extended the `ydb.Connection` interface with experimental `db.Topic()` client (control plane and reader API)
   542  * Removed `ydb.RegisterParser()` function (was needed for `database/sql` driver outside `ydb-go-sdk` repository, necessity of `ydb.RegisterParser()` disappeared with implementation `database/sql` driver in same repository)
   543  * Refactored `db.Table().CreateSession(ctx)` (maked retryable with internal create session timeout)
   544  * Refactored `internal/table/client.createSession(ctx)` (got rid of unnecessary goroutine)
   545  * Supported many user-agent records
   546  
   547  ## v3.30.0
   548  * Added `ydb.RegisterParser(name string, parser func(value string) []ydb.Option)` function for register parser of specified param name (supporting additional params in connection string)
   549  * Fixed writing `KeepInCacheFlag` in table traces
   550  
   551  ## v3.29.5
   552  * Fixed regression of `table/types.WriteTypeStringTo`
   553  
   554  ## v3.29.4
   555  * Added touching of last updated timestamp in existing conns on stage of applying new endpoint list
   556  
   557  ## v3.29.3
   558  * Reverted `xerrors.IsTransportError(err)` behaviour for raw grpc errors to false
   559  
   560  ## v3.29.2
   561  * Enabled server-side session balancing for sessions created from internal session pool
   562  * Removed unused public `meta.Meta` methods
   563  * Renamed `meta.Meta.Meta(ctx)` public method to `meta.Meta.Context(ctx)`
   564  * Reverted default balancer to `balancers.RandomChoice()`
   565  
   566  ## v3.29.1
   567  * Changed default balancer to `balancers.PreferLocalDC(balancers.RandomChoice())`
   568  
   569  ## v3.29.0
   570  * Refactored `internal/value` package for decrease CPU and memory workload with GC
   571  * Added `table/types.Equal(lhs, rhs)` helper for check equal for two types
   572  
   573  ## v3.28.3
   574  * Fixed false-positive node pessimization on receiving from stream io.EOF
   575  
   576  ## v3.28.2
   577  * Upgraded dependencies (grpc, protobuf, testify)
   578  
   579  ## v3.28.1
   580  * Marked dial errors as retryable
   581  * Supported node pessimization on dialing errors
   582  * Marked error from `Invoke` and `NewStream` as retryable if request not sended to server
   583  
   584  ## v3.28.0
   585  * Added `sugar.GenerateDeclareSection()` helper for make declare section in `YQL`
   586  * Added check when parameter name not started from `$` and automatically prepends it to name
   587  * Refactored connection closing
   588  
   589  ## v3.27.0
   590  * Added internal experimental packages `internal/value/exp` and `internal/value/exp/allocator` with alternative value implementations with zero-allocation model
   591  * Supported parsing of database name from connection string URI path
   592  * Added `options.WithExecuteScanQueryStats` option
   593  * Added to query stats plan and AST
   594  * Changed behaviour of `result.Stats()` (if query result have no stats - returns `nil`)
   595  * Added context cancel with specific error
   596  * Added mutex wrapper for mutex, rwmutex for guarantee unlock and better show critical section
   597  
   598  ## v3.26.10
   599  * Fixed syntax mistake in `trace.TablePooStateChangeInfo` to `trace.TablePoolStateChangeInfo`
   600  
   601  ## v3.26.9
   602  * Fixed bug with convert ydb value to `time.Duration` in `result.Scan[WithDefaults,Named]()`
   603  * Fixed bug with make ydb value from `time.Duration` in `types.IntervalValueFromDuration(d)`
   604  * Marked `table/types.{IntervalValue,NullableIntervalValue}` as deprecated
   605  
   606  ## v3.26.8
   607  * Removed the processing of trailer metadata on stream calls
   608  
   609  ## v3.26.7
   610  * Updated the `ydb-go-genproto` dependency
   611  
   612  ## v3.26.6
   613  * Defined the `SerializableReadWrite` isolation level by default in `db.Table.DoTx(ctx, func(ctx, tx))`
   614  * Updated the `ydb-go-genproto` dependency
   615  
   616  ## v3.26.5
   617  * Disabled the `KeepInCache` policy for queries without params
   618  
   619  ## v3.26.4
   620  * Updated the indirect dependency to `gopkg.in/yaml.v3`
   621  
   622  ## v3.26.3
   623  * Removed `Deprecated` mark from `table/session.Prepare` method
   624  * Added comments for `table/session.Execute` method
   625  
   626  ## v3.26.2
   627  * Refactored of making permissions from scheme entry
   628  
   629  ## v3.26.1
   630  * Removed deprecated traces
   631  
   632  ## v3.26.0
   633  * Fixed data race on session stream queries
   634  * Renamed `internal/router` package to `internal/balancer` for unambiguous understanding of package mission
   635  * Implemented detection of local data-center with measuring tcp dial RTT
   636  * Added `trace.Driver.OnBalancer{Init,Close,ChooseEndpoint,Update}` events
   637  * Marked the driver cluster events as deprecated
   638  * Simplified the balancing logic
   639  
   640  ## v3.25.3
   641  * Changed primary license to `Apache2.0` for auto-detect license
   642  * Refactored `types.Struct` value creation
   643  
   644  ## v3.25.2
   645  * Fixed repeater initial force timeout from 500 to 0.5 second
   646  
   647  ## v3.25.1
   648  * Fixed bug with unexpected failing of call `Invoke` and `NewStream` on closed cluster
   649  * Fixed bug with releasing `internal/conn/conn.Pool` in cluster
   650  * Replaced interface `internal/conn/conn.Pool` to struct `internal/conn/conn.Pool`
   651  
   652  ## v3.25.0
   653  * Added `ydb.GRPCConn(ydb.Connection)` helper for connect to driver-unsupported YDB services
   654  * Marked as deprecated `session.Prepare` callback
   655  * Marked as deprecated `options.WithQueryCachePolicyKeepInCache` and `options.WithQueryCachePolicy` options
   656  * Added `options.WithKeepInCache` option
   657  * Enabled by default keep-in-cache policy for data queries
   658  * Removed from `ydb.Connection` embedding of `grpc.ClientConnInterface`
   659  * Fixed stopping of repeater
   660  * Added log backoff between force repeater wake up's (from 500ms to 32s)
   661  * Renamed `trace.DriverRepeaterTick{Start,Done}Info` to `trace.DriverRepeaterWakeUp{Start,Done}Info`
   662  * Fixed unexpected `NullFlag` while parse nil `JSONDocument` value
   663  * Removed `internal/conn/conn.streamUsages` and `internal/conn/conn.usages` (`internal/conn.conn` always touching last usage timestamp on API calls)
   664  * Removed auto-reconnecting for broken conns
   665  * Renamed `internal/database` package to `internal/router` for unambiguous understanding of package mission
   666  * Refactored applying actual endpoints list after re-discovery (replaced diff-merge logic to swap cluster struct, cluster and balancers are immutable now)
   667  * Added `trace.Driver.OnUnpessimizeNode` trace event
   668  
   669  ## v3.24.2
   670  * Changed default balancer to `RandomChoice()` because `PreferLocalDC()` balancer works incorrectly with DNS-balanced call `Discovery/ListEndpoints`
   671  
   672  ## v3.24.1
   673  * Refactored initialization of coordination, ratelimiter, scheme, scripting and table clients from `internal/lazy` package to each client initialization with `sync.Once`
   674  * Removed `internal/lazy` package
   675  * Added retry option `retry.WithStackTrace` for wrapping errors with stacktrace
   676  
   677  ## v3.24.0
   678  * Fixed re-opening case after close lazy-initialized clients
   679  * Removed dependency of call context for initializing lazy table client
   680  * Added `config.AutoRetry()` flag with `true` value by default. `config.AutoRetry()` affects how to errors handle in sub-clients calls.
   681  * Added `config.WithNoAutoRetry` for disabling auto-retry on errors in sub-clients calls
   682  * Refactored `internal/lazy` package (supported check `config.AutoRetry()`, removed all error wrappings with stacktrace)
   683  
   684  ## v3.23.0
   685  * Added `WithTLSConfig` option for redefine TLS config
   686  * Added `sugar.LoadCertificatesFromFile` and `sugar.LoadCertificatesFromPem` helpers
   687  
   688  ## v3.22.0
   689  * Supported `json.Unmarshaler` type for scanning row to values
   690  * Reimplemented `sugar.DSN` with `net/url`
   691  
   692  ## v3.21.0
   693  * Fixed gtrace tool generation code style bug with leading spaces
   694  * Removed accounting load factor (unused field) in balancers
   695  * Enabled by default anonymous credentials
   696  * Enabled by default internal dns resolver
   697  * Removed from defaults `grpc.WithBlock()` option
   698  * Added `ydb.Open` method with required param connection string
   699  * Marked `ydb.New` method as deprecated
   700  * Removed package `dsn`
   701  * Added `sugar.DSN` helper for make dsn (connection string)
   702  * Refactored package `retry` (moved `retryBackoff` and `retryMode` implementations to `internal`)
   703  * Refactored `config.Config` (remove interface `Config`, renamed private struct `config` to `Config`)
   704  * Moved `discovery/config` to `internal/discovery/config`
   705  * Moved `coordination/config` to `internal/coordination/config`
   706  * Moved `scheme/config` to `internal/scheme/config`
   707  * Moved `scripting/config` to `internal/scripting/config`
   708  * Moved `table/config` to `internal/table/config`
   709  * Moved `ratelimiter/config` to `internal/ratelimiter/config`
   710  
   711  ## v3.20.2
   712  * Fixed race condition on lazy clients first call
   713  
   714  ## v3.20.1
   715  * Fixed gofumpt linter issue on `credentials/credentials.go`
   716  
   717  ## v3.20.0
   718  * Added `table.DefaultTxControl()` transaction control creator with serializable read-write isolation mode and auto-commit
   719  * Fixed passing nil query parameters
   720  * Fixed locking of cluster during call `cluster.Get`
   721  
   722  ## v3.19.1
   723  * Simplified README.md for godoc documentation in pkg.go.dev
   724  
   725  ## v3.19.0
   726  * Added public package `dsn` for making piped data source name (connection string)
   727  * Marked `ydb.WithEndpoint`, `ydb.WithDatabase`, `ydb.WithSecure`, `ydb.WithInsecure` options as deprecated
   728  * Moved `ydb.RegisterParser` to package `dsn`
   729  * Added version into all error and warn log messages
   730  
   731  ## v3.18.5
   732  * Fixed duplicating `WithPanicCallback` proxying to table config options
   733  * Fixed comments for `xerrros.Is` and `xerrros.As`
   734  
   735  ## v3.18.4
   736  * Renamed internal packages `errors`, `net` and `resolver` to `xerrors`, `xnet` and `xresolver` for excluding ambiguous interpretation
   737  * Renamed internal error wrapper `xerrors.New` to `xerrors.Wrap`
   738  
   739  ## v3.18.3
   740  * Added `WithPanicCallback` option to all service configs (discovery, coordination, ratelimiter, scheme, scripting, table) and auto-applying from `ydb.WithPanicCallback`
   741  * Added panic recovering (if defined `ydb.WithPanicCallback` option) which thrown from retry operation
   742  
   743  ## v3.18.2
   744  * Refactored balancers (makes concurrent-safe)
   745  * Excluded separate balancers lock from cluster
   746  * Refactored `cluster.Cluster` interface (`Insert` and `Remove` returning nothing now)
   747  * Replaced unsafe `cluster.close` boolean flag to `cluster.done` chan for listening close event
   748  * Added internal checker `cluster.isClosed()` for check cluster state
   749  * Extracted getting available conn from balancer to internal helper `cluster.get` (called inside `cluster.Get` as last effort)
   750  * Added checking `conn.Conn` availability with `conn.Ping()` in prefer nodeID case
   751  
   752  ## v3.18.1
   753  * Added `conn.Ping(ctx)` method for check availability of `conn.Conn`
   754  * Refactored `cluster.Cluster.Get(ctx)` to return only available connection (instead of returning any connection from balancer)
   755  * Added address to error description thrown from `conn.take()`
   756  * Renamed package `internal/db` to `internal/database` to exclude collisions with variable name `db`
   757  
   758  ## v3.18.0
   759  * Added `go1.18` to test matrix
   760  * Added `ydb.WithOperationTimeout` and `ydb.WithOperationCancelAfter` context modifiers
   761  
   762  ## v3.17.0
   763  * Removed redundant `trace.With{Table,Driver,Retry}` and `trace.Context{Table,Driver,Retry}` funcs
   764  * Moved `gtrace` tool from `./cmd/gtrace` to `./internal/cmd/gtrace`
   765  * Refactored `gtrace` tool for generate `Compose` options
   766  * Added panic recover on trace calls in `Compose` call step
   767  * Added `trace.With{Discovery,Driver,Coordination,Ratelimiter,Table,Scheme,Scripting}PanicCallback` options
   768  * Added `ydb.WithPanicCallback` option
   769  
   770  ## v3.16.12
   771  * Fixed bug with check acquire error over `ydb.IsRatelimiterAcquireError`
   772  * Added full changelog link to github release description
   773  
   774  ## v3.16.11
   775  * Added stacktrace to errors with issues
   776  
   777  ## v3.16.10
   778  * Refactored `cluster.Cluster` and `balancer.Balancer` interfaces (removed `Update` method)
   779  * Replaced `cluster.Update` with `cluster.Remove` and `cluster.Insert` calls
   780  * Removed `trace.Driver.OnClusterUpdate` event
   781  * Fixed bug with unexpected changing of local datacenter flag in endpoint
   782  * Refactored errors wrapping (stackedError are not ydb error now, checking `errors.IsYdb(err)` with `errors.As` now)
   783  * Wrapped retry operation errors with `errors.WithStackTrace(err)`
   784  * Changed `trace.RetryLoopStartInfo.Context` type from `context.Context` to `*context.Context`
   785  
   786  ## v3.16.9
   787  * Refactored internal operation and transport errors
   788  
   789  ## v3.16.8
   790  * Added `config.ExcludeGRPCCodesForPessimization()` opttion for exclude some grpc codes from pessimization rules
   791  * Refactored pessimization node conditions
   792  * Added closing of ticker in `conn.Conn.connParker`
   793  * Removed `config.WithSharedPool` and usages it
   794  * Removed `conn.Creator` interface and usage it
   795  * Removed unnecessary options append in `ydb.With`
   796  
   797  ## v3.16.7
   798  * Added closing `conn.Conn` if discovery client build failure
   799  * Added wrapping errors with stacktrace
   800  * Added discharging banned state of `conn.Conn` on `cluster.Update` step
   801  
   802  ## v3.16.6
   803  * Rollback moving `meta.Meta` call to conn exclusively from `internal/db` and `internal/discovery`
   804  * Added `WithMeta()` discovery config option
   805  
   806  ## v3.16.5
   807  * Added `config.SharedPool()` setting and `config.WithSharedPool()` option
   808  * Added management of shared pool flag on change dial timeout and credentials
   809  * Removed explicit checks of conditions for use (or not) shared pool in `ydb.With()`
   810  * Renamed `internal/db` interfaces
   811  * Changed signature of `conn.Conn.Release` (added error as result)
   812  
   813  ## v3.16.4
   814  * Removed `WithMeta()` discovery config option
   815  * Moved `meta.Meta` call to conn exclusively
   816  
   817  ## v3.16.3
   818  * Replaced panic on cluster close to error issues
   819  
   820  ## v3.16.2
   821  * Fixed bug in `types.Nullable()`
   822  * Refactored package `meta`
   823  * Removed explicit call meta in `db.New()`
   824  
   825  ## v3.16.1
   826  * Added `WithMeta()` discovery config option
   827  * Fixed bug with credentials on discovery
   828  
   829  ## v3.16.0
   830  * Refactored internal dns-resolver
   831  * Added option `config.WithInternalDNSResolver` for use internal dns-resolver and use resolved IP-address for dialing instead FQDN-address
   832  
   833  ## v3.15.1
   834  * Removed all conditions for trace retry errors
   835  * Fixed background color of warn messages
   836  * Added to log messages additional information about error, such as retryable (or not), delete session (or not), etc.
   837  
   838  ## v3.15.0
   839  * Added github action for publish release tags
   840  * Refactored version constant (split to major, minor and patch constants)
   841  * Added `table.types.Nullable{*}Value` helpers and `table.types.Nullable()` common helper
   842  * Fixed race on check trailer on closing table grpc-stream
   843  * Refactored traces (start and done struct names have prefix about trace)
   844  * Replaced `errors.Error`, `errors.Errorf` and `errors.ErrorfSkip` to single `errors.WithStackTrace`
   845  * Refactored table client options
   846  * Declared and implemented interface `errors.isYdbError` for checking ybd/non-ydb errors
   847  * Fixed double tracing table do events
   848  * Added `retry.WithFastBackoff` and `retry.WithFastBackoff` options
   849  * Refactored `table.CreateSession` as retry operation with options
   850  * Moved log level from root of repository to package `log`
   851  * Added details and address to transport error
   852  * Fixed `recursive` param in `ratelimiter.ListResource`
   853  * Added counting stream usages for exclude park connection if it in use
   854  * Added `trace.Driver` events about change stream usage and `conn.Release()` call
   855  
   856  ## 3.14.4
   857  * Implemented auto-removing `conn.Conn` from `conn.Pool` with counting usages of `conn.Conn`
   858  * Refactored naming of source files which declares service client interfaces
   859  
   860  ## 3.14.3
   861  * Fixed bug with update balancer element with nil handle
   862  
   863  ## 3.14.2
   864  * Refactored internal error wrapping (with file and line identification) - replaced `fmt.Printf("%w", err)` error wrapping to internal `stackError`
   865  
   866  ## 3.14.1
   867  * Added `balacers.CreateFromConfig` balancer creator
   868  * Added `Create` method to interface `balancer.Balancer`
   869  
   870  ## 3.14.0
   871  * Added `balacers.FromConfig` balancer creator
   872  
   873  ## 3.13.3
   874  * Fixed linter issues
   875  
   876  ## 3.13.2
   877  * Fixed race with read/write pool conns on closing conn
   878  
   879  ## 3.13.1
   880  * Improved error messages
   881  * Defended `cluster.balancer` with `sync.RWMutex` on `cluster.Insert`, `cluster.Update`, `cluster.Remove` and `cluster.Get`
   882  * Excluded `Close` and `Park` methods from `conn.Conn` interface
   883  * Fixed bug with `Multi` balancer `Create()`
   884  * Improved `errors.IsTransportError` (check a few transport error codes instead check single transport error code)
   885  * Improved `errors.Is` (check a few errors instead check single error)
   886  * Refactored YDB errors checking API on client-side
   887  * Implemented of scripting traces
   888  
   889  ## 3.13.0
   890  * Refactored `Connection` interface
   891  * Removed `CustomOption` and taking client with custom options
   892  * Removed `proxy` package
   893  * Improved `db.With()` helper for child connections creation
   894  * Set shared `conn.Pool` for all children `ydb.Connection`
   895  * Fixed bug with `RoundRobin` and `RandomChoice` balancers `Create()`
   896  
   897  ## 3.12.1
   898  * Added `trace.Driver.OnConnPark` event
   899  * Added `trace.Driver.OnConnClose` event
   900  * Fixed bug with closing nil session in table retryer
   901  * Restored repeater `Force` call on pessimize event
   902  * Changed mutex type in `conn.Conn` from `sync.Mutex` to `sync.RWMutex` for exclude deadlocks
   903  * Reverted applying empty `discovery` results to `cluster`
   904  
   905  ## 3.12.0
   906  * Added `balancers.Prefer` and `balancers.PreferWithFallback` constructors
   907  
   908  ## 3.11.13
   909  * Added `trace.Driver.OnRepeaterWakeUp` event
   910  * Refactored package `repeater`
   911  
   912  ## 3.11.12
   913  * Added `trace.ClusterInsertDoneInfo.Inserted` boolean flag for notify about success of insert endpoint into balancer
   914  * Added `trace.ClusterRemoveDoneInfo.Removed` boolean flag for notify about success of remove endpoint from balancer
   915  
   916  ## 3.11.11
   917  * Reverted usage of `math/rand` (instead `crypto/rand`)
   918  
   919  ## 3.11.10
   920  * Imported tool gtrace to `./cmd/gtrace`
   921  * Changed minimal version of go from 1.13 to 1.14
   922  
   923  ## 3.11.9
   924  * Fixed composing of service traces
   925  * Fixed end-call of `trace.Driver.OnConnStateChange`
   926  
   927  ## 3.11.8
   928  * Added `trace.EndpointInfo.LastUpdated()` timestamp
   929  * Refactored `endpoint.Endpoint` (split to struct `endopint` and interface `Endpoint`)
   930  * Returned safe-thread copy of `endpoint.Endpoint` to trace callbacks
   931  * Added `endpoint.Endpoint.Touch()` func for refresh endpoint info
   932  * Added `conn.conn.onClose` slice for call optional funcs on close step
   933  * Added removing `conn.Conn` from `conn.Pool` on `conn.Conn.Close()` call
   934  * Checked cluster close/empty on keeper goroutine
   935  * Fixed `internal.errors.New` wrapping depth
   936  * Added context flag for no wrapping operation results as error
   937  * Refactored `trace.Driver` conn events
   938  
   939  ## 3.11.7
   940  * Removed internal alias-type `errors.IssuesIterator`
   941  
   942  ## 3.11.6
   943  * Changed `trace.GetCredentialsDoneInfo` token representation from bool to string
   944  * Added `log.Secret` helper for mask token
   945  
   946  ## 3.11.5
   947  * Replaced meta in `proxyConnection.Invoke` and `proxyConnection.NewStream`
   948  
   949  ## 3.11.4
   950  * Refactored `internal/cluster.Cluster` (add option for notify about external lock, lock cluster for update cluster endpoints)
   951  * Reverted `grpc.ClientConnInterface` API to `ydb.Connection`
   952  
   953  ## 3.11.3
   954  * Replaced in `table/types/compare_test.go` checking error by error message to checking with `errors.Is()`
   955  
   956  ## 3.11.2
   957  * Wrapped internal errors in retry operations
   958  
   959  ## 3.11.1
   960  * Excluded error wrapping from retry operations
   961  
   962  ## 3.11.0
   963  * Added `ydb.WithTLSSInsecureSkipVerify()` option
   964  * Added `trace.Table.OnPoolStateChange` event
   965  * Wrapped internal errors with print <func, file, line>
   966  * Removed `trace.Table.OnPoolTake` event (unused)
   967  * Refactored `trace.Details` matching by string pattern
   968  * Added resolver trace callback
   969  * Refactored initialization step of grpc dial options
   970  * Added internal package `net` with `net.Conn` proxy object
   971  * Fixed closing proxy clients
   972  * Added `ydb.Connection.With(opts ...ydb.CustomOption)` for taking proxy `ydb.Connection` with some redefined options
   973  * Added `ydb.MetaRequestType` and `ydb.MetaTraceID` aliases to internal `meta` package constants
   974  * Added `ydb.WithCustomCredentials()` option
   975  * Refactored `ydb.Ratelimiter().AcquireResource()` method (added options for defining type of acquire request)
   976  * Removed single point to define operation mode params (each grpc-call with `OperationParams` must explicit define `OperationParams`)
   977  * Removed defining operation params over context
   978  * Removed `config.RequestTimeout` and `config.StreamTimeout` (each grpc-call must manage context instead define `config.RequestTimeout` or `config.StreamTimeout`)
   979  * Added internal `OperationTimeout` and `OperationCancelAfter` to each client (ratelimiter, coordination, table, scheme, scripting, discovery) config. `OperationTimeout` and `OperationCancelAfter` config params defined from root config
   980  
   981  ## 3.10.0
   982  * Extended `trace.Details` constants for support per-service events
   983  * Added `trace.Discovery` struct for traces discovery events
   984  * Added `trace.Ratelimiter`, `trace.Coordination`, `trace.Scripting`, `trace.Scheme` stubs (will be implements in the future)
   985  * Added `ratelimiter/config`, `coordination/config`, `scripting/config`, `scheme/config`, `discovery/config` packages for specify per-service configs
   986  * Removed `trace.Driver.OnDiscovery` callback (moved to `trace.Discovery`)
   987  * Refactored initialization step (firstly makes discovery client)
   988  * Removed `internal/lazy.Discovery` (discovery client always initialized)
   989  * Fixed `trace.Table` event structs
   990  * Refactored grpc options for define dns-balancing configuration
   991  * Refactored `retry.Retry` signature (added `retry.WithID`, `retry.WithTrace` and `retry.WithIdempotent` opt-in args, required param `isIdempotentOperation` removed)
   992  * Refactored package `internal/repeater`
   993  
   994  ## 3.9.4
   995  * Fixed data race on closing session pool
   996  
   997  ## 3.9.3
   998  * Fixed busy loop on call internal logger with external logger implementation of `log.Logger`
   999  
  1000  ## 3.9.2
  1001  * Fixed `WithDiscoveryInterval()` option with negative argument (must use `SingleConn` balancer)
  1002  
  1003  ## 3.9.1
  1004  * Added `WithMinTLSVersion` option
  1005  
  1006  ## 3.9.0
  1007  * Removed `ydb.EndpointDatabase`, `ydb.ConnectionString` and `ydb.MustConnectionString` helpers
  1008  * Removed `ydb.ConnectParams` struct and `ydb.WithConnectParams` option creator
  1009  * Added internal package `dsn` for register external parsers and parse connection string
  1010  * Added `ydb.RegisterParser` method for registering external parser of connection string
  1011  
  1012  ## 3.8.12
  1013  * Unwrap sub-tests called as `t.Run(...)` in integration tests
  1014  * Updated `grpc` dependency (from `v1.38.0` to `v1.43.0`)
  1015  * Updated `protobuf` dependency (from `v1.26.0` to `v1.27.1`)
  1016  * Added internal retryers into `lazy.Ratelimiter`
  1017  * Added internal retryers into `lazy.Coordination`
  1018  * Added internal retryers into `lazy.Discovery`
  1019  * Added internal retryers into `lazy.Scheme`
  1020  * Added internal retryers into `lazy.Scripting`
  1021  * Added internal retryer into `lazy.Table.CreateSession`
  1022  
  1023  ## 3.8.11
  1024  * Fixed version
  1025  
  1026  ## 3.8.10
  1027  * Fixed misspell linter issue
  1028  
  1029  ## 3.8.9
  1030  * Removed debug print to log
  1031  
  1032  ## 3.8.8
  1033  * Refactored session shutdown test
  1034  
  1035  ## 3.8.7
  1036  * Ignored session shutdown test if no defined `YDB_SHUTDOWN_URLS` environment variable
  1037  
  1038  ## 3.8.6
  1039  * Added `ydb.WithInsecure()` option
  1040  
  1041  ## 3.8.5
  1042  * Fixed version
  1043  
  1044  ## 3.8.4
  1045  * Fixed syntax error in `CHANGELOG.md`
  1046  
  1047  ## 3.8.3
  1048  * Fixed `CHANGELOG.md`
  1049  
  1050  ## 3.8.2
  1051  * Updated `github.com/ydb-platform/ydb-go-genproto`
  1052  
  1053  ## 3.8.1
  1054  * Fixed `trace.Table.OnPoolDoTx` - added `Idempotent` flag to `trace.PoolDoTxStartInfo`
  1055  
  1056  ## 3.8.0
  1057  * Added `table.result.Result.ScanNamed()` scan function
  1058  * Changed connection secure to `true` by default
  1059  * Renamed public package `balancer` to `balancers` (this package contains only constructors of balancers)
  1060  * Moved interfaces from package `internal/balancer/ibalancer` to `internal/balancer`
  1061  * Added `NextResultSetErr()` func for select next result set and return error
  1062  * Added package `table/result/indexed` with interfaces `indexed.Required`, `indexed.Optional`, `indexed.RequiredOrOptional`
  1063  * Replaced abstract `interface{}` in `Scan` to `indexed.RequiredOrOptional`
  1064  * Replaced abstract `interface{}` in `ScanWithDefaults` to `indexed.Required`
  1065  * Replaced `trace.Table.OnPoolRetry` callback to `trace.Table.OnPoolDo` and `trace.Table.OnPoolDoTx` callbacks
  1066  * Supports server hint `session-close` for gracefully shutdown session
  1067  
  1068  ## 3.7.2
  1069  * Retry remove directory in `sugar.RemoveRecursive()` for retryable error
  1070  
  1071  ## 3.7.1
  1072  * Fixed panic on `result.Reset(nil)`
  1073  
  1074  ## 3.7.0
  1075  * Replaced `Option` to `CustomOption` on `Connection` interface methods
  1076  * Implements `WithCustom[Token,Database]` options for redefine database and token
  1077  * Removed experimental `balancer.PreferEndpoints[WithFallback][RegEx]` balancers
  1078  * Supported connections `TTL` with `Option` `WithConnectionTTL`
  1079  * Remove unnecessary `WithFastDial` option (lazy connections are always fast inserts into cluster)
  1080  * Added `Scripting` service client with API methods `Execute()`, `StreamExecute()` and `Explain()`
  1081  * Added `String()` method to `table.types.Type` interface
  1082  * Added `With[Custom]UserAgent()` `Option` and `CustomOption` constructors
  1083  * Refactored `log.Logger` interface and internal implementation
  1084  * Added `retry.RetryableError()` for returns user-defined error which must be retryed
  1085  * Renamed internal type `internal.errors.OperationCompleted` to `internal.errors.OperationStatus`
  1086  * Added `String()` method to `table.KeyRange` and `table.Value` types
  1087  * Replaced creation of goroutine on each stream call to explicit call stream.Recv() on NextResultSet()
  1088  
  1089  ## 3.6.2
  1090  * Refactored table retry helpers
  1091  * Added new `PreferLocations[WithFallback][RegEx]` balancers
  1092  * Added `trace.Details.String()` and `trace.Details.Strings()` helpers
  1093  * Added `trace.DetailsFromString(s)` and `trace.DetailsFromStrings(s)` helper
  1094  
  1095  ## 3.6.1
  1096  * Switched closing cluster after closing all sub-services
  1097  * Added windows and macOS runtimes to unit and integration tests
  1098  
  1099  ## 3.6.0
  1100  * Added `config/balancer` package with popular balancers
  1101  * Added new `PreferEndpoints[WithFallback][RegEx]` balancers
  1102  * Removed `config.BalancerConfig` struct
  1103  * Refactored internal packages (tree to flat, split balancers to different packages)
  1104  * Moved a taking conn to start of `conn.Invoke` /` conn.NewStream` for applying timeouts to alive conn instead lazy conn (previous logic applied timeouts to all request including dialing on lazy conn)
  1105  
  1106  ## 3.5.4
  1107  * Added auto-close stream result on end of stream
  1108  
  1109  ## 3.5.3
  1110  * Changed `Logger` interface for support custom loggers
  1111  * Added public type `LoggerOption` for proxies to internal `logger.Option`
  1112  * Fixed deadlock on table stream requests
  1113  
  1114  ## 3.5.2
  1115  * Fixed data race on closing table result
  1116  * Added custom dns-resolver to grpc options for use dns-balancing with round_robin balancing policy
  1117  * Wrapped with `recover()` system panic on getting system certificates pool
  1118  * Added linters and fixed issues from them
  1119  * Changed API of `sugar` package
  1120  
  1121  ## 3.5.1
  1122  * Added system certificates for `darwin` system
  1123  * Fixed `table.StreamResult` finishing
  1124  * Fixes `sugar.MakePath()`
  1125  * Added helper `ydb.MergeOptions()` for merge several `ydb.Option` to single `ydb.Option`
  1126  
  1127  ## 3.5.0
  1128  * Added `ClosabelSession` interface which extends `Session` interface and provide `Close` method
  1129  * Added `CreateSession` method into `table.Client` interface
  1130  * Added `Context` field into `trace.Driver.Net{Dial,Read,Write,Close}StartInfo` structs
  1131  * Added `Address` field into `trace.Driver.DiscoveryStartInfo` struct
  1132  * Improved logger options (provide err and out writers, provide external logger)
  1133  * Renamed package `table.resultset` to `table.result`
  1134  * Added `trace.Driver.{OnInit,OnClose}` events
  1135  * Changed unit/integration tests running
  1136  * Fixed/added YDB error checkers
  1137  * Dropped `ydb.WithDriverConfigOptions` (duplicate of `ydb.With`)
  1138  * Fixed freeze on closing driver
  1139  * Fixed `CGO` race on `Darwin` system when driver tried to expand tilde on certificates path
  1140  * Removed `EnsurePathExists` and `CleanupDatabase` from API of `scheme.Client`
  1141  * Added helpers `MakePath` and `CleanPath` to root of package `ydb-go-sdk`
  1142  * Removed call `types.Scanner.UnmarshalYDB()` inside `scanner.setDefaults()`
  1143  * Added `DoTx()` API method into `table.Client`
  1144  * Added `String()` method into `ConnectParams` for serialize params to connection string
  1145  * Added early exit from Rollback for committed transaction
  1146  * Moved `HasNextResultSet()` method from `Result` interface to common `result` interface. It provides access to `HasNextResultSet()` on both result interfaces (unary and stream results)
  1147  * Added public credentials constructors `credentials.NewAnonymousCredentials()` and `credentials.NewAccessTokenCredentials(token)`
  1148  
  1149  ## 3.4.4
  1150  * Prefer `ydb.table.types.Scanner` scanner implementation over `sql.Scanner`, when both available.
  1151  
  1152  ## 3.4.3
  1153  * Forced `round_robin` grpc load balancing instead default `pick_first`
  1154  * Added checker `IsTransportErrorCancelled`
  1155  
  1156  ## 3.4.2
  1157  * Simplified `Is{Transport,Operation}Error`
  1158  * Added `IsYdbError` helper
  1159  
  1160  ## 3.4.1
  1161  * Fixed retry reaction on operation error NotFound (non-retryable now)
  1162  
  1163  ## 3.4.0
  1164  * Fixed logic bug in `trace.Table.ExecuteDataQuery{Start,Done}Info`
  1165  
  1166  ## 3.3.3
  1167  * Cleared repeater context for discovery goroutine
  1168  * Fixed type of `trace.Details`
  1169  
  1170  ## 3.3.2
  1171  * Added `table.options.WithPartitioningSettings`
  1172  
  1173  ## 3.3.1
  1174  * Added `trace.DriverConnEvents` constant
  1175  
  1176  ## 3.3.0
  1177  * Stored node ID into `endpoint.Endpoint` struct
  1178  * Simplified <Host,Port> in `endpoint.Endpoint` to single fqdn Address
  1179  * On table session requests now preferred the endpoint by `ID` extracted from session `ID`. If
  1180    endpoint by `ID` not found - using the endpoint from balancer
  1181  * Upgraded internal logger for print colored messages
  1182  
  1183  ## 3.2.7
  1184  * Fixed compare endpoints func
  1185  
  1186  ## 3.2.6
  1187  * Reverted `NodeID` as key for link between session and endpoint because yandex-cloud YDB
  1188    installation not supported `Endpoint.ID` entity
  1189  
  1190  ## 3.2.5
  1191  * Dropped endpoint.Addr entity as unused. After change link type between session and endpoint
  1192    to NodeID endpoint.Addr became unnecessary for internal logic of driver
  1193  * Enabled integration test table pool health
  1194  * Fixed race on session stream requests
  1195  
  1196  ## 3.2.4
  1197  * Returned context error when context is done on `session.StreamExecuteScanQuery`
  1198    and `session.StreamReadTable`
  1199  
  1200  ## 3.2.3
  1201  * Fixed bug of interpret tilda in path of certificates file
  1202  * Added chapter to `README.md` about ecosystem of debug tools over `ydb-go-sdk`
  1203  
  1204  ## 3.2.2
  1205  * Fixed result type of `RawValue.String` (ydb string compatible)
  1206  * Fixed scans ydb types into string and slice byte receivers
  1207  
  1208  ## 3.2.1
  1209  * Upgraded dependencies
  1210  * Added `WithEndpoint` and `WithDatabase` Option constructors
  1211  
  1212  ## 3.2.0
  1213  * added package `log` with interface `log.Logger`
  1214  * implements `trace.Driver` and `trace.Table` with `log.Logger`
  1215  * added internal leveled logger which implement interface `log.Logger`
  1216  * supported environment variable `YDB_LOG_SEVERITY_LEVEL`
  1217  * changed name of the field `RetryAttempts` to` Attempts` in the structure `trace.PoolGetDoneInfo`.
  1218    This change reduces back compatibility, but there are no external uses of v3 sdk, so this change is
  1219    fine. We are sorry if this change broke your code
  1220  
  1221  ## 3.1.0
  1222  * published scheme Client interface
  1223  
  1224  ## 3.0.1
  1225  * refactored integration tests
  1226  * fixed table retry trace calls
  1227  
  1228  ## 3.0.0
  1229  * Refactored sources for splitting public interfaces and internal
  1230    implementation for core changes in the future without change major version
  1231  * Refactored of transport level of driver - now we use grpc code generation by stock `protoc-gen-go` instead internal protoc codegen. New API provide operate from codegen grpc-clients with driver as a single grpc client connection. But driver hide inside self a pool of grpc connections to different cluster endpoints YDB. All communications with YDB (base services includes to driver: table, discovery, coordiantion and ratelimiter) provides stock codegen grpc-clients now.
  1232  * Much changed API of driver for easy usage.
  1233  * Dropped package `ydbsql` (moved to external project)
  1234  * Extracted yandex-cloud authentication to external project
  1235  * Extracted examples to external project
  1236  * Changed of traces API for next usage in jaeger и prometheus
  1237  * Dropped old APIs marked as `deprecated`
  1238  * Added integration tests with docker ydb container
  1239  * Changed table session and endpoint link type from string address to integer NodeID
  1240  
  1241  ## 2.11.0
  1242  * Added possibility to override `x-ydb-database` metadata value
  1243  
  1244  ## 2.10.9
  1245  * Fixed context cancellation inside repeater loop
  1246  
  1247  ## 2.10.8
  1248  * Fixed data race on cluster get/pessimize
  1249  
  1250  ## 2.10.7
  1251  * Dropped internal cluster connections tracker
  1252  * Switched initial connect to all endpoints after discovery to lazy connect
  1253  * Added reconnect for broken conns
  1254  
  1255  ## 2.10.6
  1256  * Thrown context without deadline into discovery goroutine
  1257  * Added `Address` param to `DiscoveryStartInfo` struct
  1258  * Forced `round_bobin` grpc load balancing config instead default `pick_first`
  1259  * Fixed applying driver trace from context in `connect.New`
  1260  * Excluded using session pool usage for create/take sessions in `database/sql`
  1261    driver implementation. Package `ydbsql` with `database/sql` driver implementation
  1262    used direct `CreateSession` table client call in the best effort loop
  1263  
  1264  ## 2.10.5
  1265  * Fixed panic when ready conns is zero
  1266  
  1267  ## 2.10.4
  1268  * Initialized repeater permanently regardless of the value `DriverConfig.DiscoveryInterval`
  1269    This change allow forcing re-discovery depends on cluster state
  1270  
  1271  ## 2.10.3
  1272  * Returned context error when context is done on `StreamExecuteScanQuery`
  1273  
  1274  ## 2.10.2
  1275  * Fixed `mapBadSessionError()` in `ydbsql` package
  1276  
  1277  ## 2.10.1
  1278  * Fixed race on `ydbsql` concurrent connect. This hotfix only for v2 version
  1279  
  1280  ## 2.10.0
  1281  * Added `GlobalAsyncIndex` implementation of index interface
  1282  
  1283  ## 2.9.6
  1284  * Replaced `<session, endpoint>` link type from raw conn to plain endpoint address
  1285  * Moved checking linked endpoint from `driver.{Call,StreamRead}` to `cluster.Get`
  1286  * Added pessimization endpoint code for `driver.StreamRead` if transport error received
  1287  * Setted transport error `Cancelled` as needs to remove session from pool
  1288  * Deprecated connection use policy (used auto policy)
  1289  * Fixed goroutines leak on StreamRead call
  1290  * Fixed force re-discover on receive error after 1 second
  1291  * Added timeout to context in `cluster.Get` if context deadline not defined
  1292  
  1293  ## 2.9.5
  1294  * Renamed context idempotent operation flag
  1295  
  1296  ## 2.9.4
  1297  * Forced cancelled transport error as retriable (only idempotent operations)
  1298  * Renamed some internal retry mode types
  1299  
  1300  ## 2.9.3
  1301  * Forced grpc keep-alive PermitWithoutStream parameter to true
  1302  
  1303  ## 2.9.2
  1304  * Added errors without panic
  1305  
  1306  ## 2.9.1
  1307  * Added check nil grpc.ClientConn connection
  1308  * Processed nil connection error in keeper loop
  1309  
  1310  ## 2.9.0
  1311  * Added RawValue and supported ydb.Scanner in Scan
  1312  
  1313  ## 2.8.0
  1314  * Added NextResultSet for both streaming and non-streaming operations
  1315  
  1316  ## 2.7.0
  1317  * Dropped busy checker logic
  1318  * Refactoring of `RetryMode`, `RetryChecker` and `Retryer`
  1319  * Added fast/slow retry logic
  1320  * Supported context param for retry operation with no idempotent errors
  1321  * Added secondary indexes info to table describing method
  1322  
  1323  ## 2.6.1
  1324  * fix panic on lazy put to full pool
  1325  
  1326  ## 2.6.0
  1327  * Exported `SessionProvider.CloseSession` func
  1328  * Implements by default async closing session and putting busy
  1329    session into pool
  1330  * Added some session pool trace funcs for execution control of
  1331    goroutines in tests
  1332  * Switched internal session pool boolean field closed from atomic
  1333    usage to mutex-locked usage
  1334  
  1335  ## 2.5.7
  1336  * Added panic on double scan per row
  1337  
  1338  ## 2.5.6
  1339  * Supported nil and time conventions for scanner
  1340  
  1341  ## 2.5.5
  1342  * Reverted adds async sessionGet and opDo into `table.Retry`.
  1343  * Added `sessionClose()` func into `SessionProvider` interface.
  1344  
  1345  ## 2.5.4
  1346  * Remove ready queue from session pool
  1347  
  1348  ## 2.5.3
  1349  * Fix put session into pool
  1350  
  1351  ## 2.5.2
  1352  * Fix panic on operate with result scanner
  1353  
  1354  ## 2.5.1
  1355  * Fix lock on write to chan in case when context is done
  1356  
  1357  ## 2.5.0
  1358  * Added `ScanRaw` for scan results as struct, list, tuple, map
  1359  * Created `RawScanner` interface in order to generate method With
  1360  
  1361  ## 2.4.1
  1362  * Fixed deadlock in the session pool
  1363  
  1364  ## 2.4.0
  1365  * Added new scanner API.
  1366  * Fixed dualism of interpret data (default values were deprecated for optional values)
  1367  
  1368  ## 2.3.3
  1369  * Fixed `internal/stats/series.go` (index out of range)
  1370  * Optimized rotate buckets in the `Series`
  1371  
  1372  ## 2.3.2
  1373  * Moved `api/wrap.go` to root for next replacement api package to external genproto
  1374  
  1375  ## 2.3.1
  1376  * Correct session pool tests
  1377  * Fixed conditions with KeepAliveMinSize and `IdleKeepAliveThreshold`
  1378  
  1379  ## 2.3.0
  1380  * Added credentials connect options:
  1381    - `connect.WithAccessTokenCredentials(accessToken)`
  1382    - `connect.WithAnonymousCredentials()`
  1383    - `connect.WithMetadataCredentials(ctx)`
  1384    - `connect.WithServiceAccountKeyFileCredentiials(serviceAccountKeyFile)`
  1385  * Added auth examples:
  1386    - `example/auth/environ`
  1387    - `example/auth/access_token_credentials`
  1388    - `example/auth/anonymous_credentials`
  1389    - `example/auth/metadata_credentials`
  1390    - `example/auth/service_account_credentials`
  1391  
  1392  ## 2.2.1
  1393  * Fixed returning error from `table.StreamExecuteScanQuery`
  1394  
  1395  ## 2.2.0
  1396  * Supported loading certs from file using `YDB_SSL_ROOT_CERTIFICATES_FILE` environment variable
  1397  
  1398  ## 2.1.0
  1399  * Fixed erasing session from pool if session keep-alive count great then `IdleKeepAliveThreshold`
  1400  * Add major session pool config params as `connect.WithSessionPool*()` options
  1401  
  1402  ## 2.0.3
  1403  * Added panic for wrong `NextSet`/`NextStreamSet` call
  1404  
  1405  ## 2.0.2
  1406  * Fixed infinite keep alive session on transport errors `Cancelled` and `DeadlineExceeded`
  1407  
  1408  ## 2.0.1
  1409  * Fixed parser of connection string
  1410  * Fixed `EnsurePathExists` and `CleanupDatabase` methods
  1411  * Fixed `basic_example_v1`
  1412  * Renamed example cli flag `-link=connectionString` to `-ydb=connectionString` for connection string to YDB
  1413  * Added `-connect-timeout` flag to example cli
  1414  * Fixed some linter issues
  1415  
  1416  ## 2.0.0
  1417  * Renamed package ydbx to connect. New usage semantic: `connect.New()` instead `ydbx.Connect()`
  1418  * Added `healthcheck` example
  1419  * Fixed all examples with usage connect package
  1420  * Dropped `example/internal/ydbutil` package
  1421  * Simplified API of Traces - replace all pairs start/done to single handler with closure.
  1422  
  1423  ## 1.5.2
  1424  * Fixed `WithYdbCA` at nil certPool case
  1425  
  1426  ## 1.5.1
  1427  * Fixed package name of `ydbx`
  1428  
  1429  ## 1.5.0
  1430  * Added `ydbx` package
  1431  
  1432  ## 1.4.1
  1433  * Fixed `fmt.Errorf` error wrapping and some linter issues
  1434  
  1435  ## 1.4.0
  1436  * Added helper for create credentials from environ
  1437  * Added anonymous credentials
  1438  * Move YDB Certificate Authority from auth/iam package to root  package. YDB CA need to dial with
  1439    dedicated YDB and not need to dial with IAM. YDB CA automatically added to all grpc calling
  1440  
  1441  ## 1.3.0
  1442  * Added `Compose` method to traces
  1443  
  1444  ## 1.2.0
  1445  * Load YDB certificates by default with TLS connection
  1446  
  1447  ## 1.1.0
  1448  * Support scan-query method in `ydbsql` (database/sql API)
  1449  
  1450  ## 1.0.7
  1451  * Use `github.com/golang-jwt/jwt` instead of `github.com/dgrijalva/jwt-go`
  1452  
  1453  ## 1.0.6
  1454  * Append (if not exits) SYNC Operation mode on table calls: *Session, *DataQuery, *Transaction, KeepAlive
  1455  
  1456  ## 1.0.5
  1457  * Remove unused ContextDeadlineMapping driver config (always used default value)
  1458  * Simplify operation params logic
  1459  * Append (if not exits) SYNC Operation mode on ExecuteDataQuery call
  1460  
  1461  ## 1.0.4
  1462  * Fixed timeout and cancellation setting for YDB operations
  1463  * Introduced possibility to use `ContextDeadlineNoMapping` once again
  1464  
  1465  ## 1.0.3
  1466  * Negative `table.Client.MaxQueryCacheSize` will disable a client query cache now
  1467  * Refactoring of `meta.go` for simple adding in the future new headers to requests
  1468  * Added support `x-ydb-trace-id` as standard SDK header
  1469  
  1470  ## 1.0.2
  1471  * Implements smart lazy createSession for best control of create/delete session balance. This feature fix leakage of forgotten sessions on server-side
  1472  * Some imporvements of session pool stats
  1473  
  1474  ## 1.0.1
  1475  * Fix closing sessions on PutBusy()
  1476  * Force setting operation timeout from client context timeout (if this timeout less then default operation timeout)
  1477  * Added helper `ydb.ContextWithoutDeadline` for clearing existing context from any deadlines
  1478  
  1479  ## 1.0.0
  1480  * SDK versioning switched to `Semantic Versioning 2.0.0`
  1481  
  1482  ## 2021.04.1
  1483  * Added `table.TimeToLiveSettings` struct and corresponding
  1484    `table.WithTimeToLiveSettings`, `table.WithSetTimeToLive`
  1485    and `table.WithDropTimeToLive` options.
  1486  * Deprecated `table.TTLSettings` struct alongside with
  1487    `table.WithTTL`, `table.WithSetTTL` and `table.WithDropTTL` functions.
  1488  
  1489  ## 2021.03.2
  1490  * Add Truncated flag support.
  1491  
  1492  ## 2021.03.1
  1493  * Fixed a race between `SessionPool.Put` and `SessionPool.Get`, where the latter
  1494    would end up waiting forever for a session that is already in the pool.
  1495  
  1496  ## 2021.02.1
  1497  * Changed semantics of `table.Result.O...` methods (e.g., `OUTF8`):
  1498    it will not fail if current item is non-optional primitive.
  1499  
  1500  ## 2020.12.1
  1501  * added CommitTx method, which returns QueryStats
  1502  
  1503  ## 2020.11.4
  1504  * re-implementation of ydb.Value comparison
  1505  * fix basic examples
  1506  
  1507  ## 2020.11.3
  1508  * increase default and minimum `Dialer.KeepAlive` setting
  1509  
  1510  ## 2020.11.2
  1511  * added `ydbsql/connector` options to configure default list of `ExecDataQueryOption`
  1512  
  1513  ## 2020.11.1
  1514  * tune `grpc.Conn` behaviour
  1515  
  1516  ## 2020.10.4
  1517  * function to compare two ydb.Value
  1518  
  1519  ## 2020.10.3
  1520  * support scan query execution
  1521  
  1522  ## 2020.10.2
  1523  * add table Ttl options
  1524  
  1525  ## 2020.10.1
  1526  * added `KeyBloomFilter` support for `CreateTable`, `AlterTable` and `DescribeTalbe`
  1527  * added `PartitioningSettings` support for `CreateTable`, `AlterTable` and `DescribeTalbe`. Move to `PartitioningSettings` object
  1528  
  1529  ## 2020.09.3
  1530  * add `FastDial` option to `DriverConfig`.
  1531    This will allow `Dialer` to return `Driver` as soon as the 1st connection is ready.
  1532  
  1533  ## 2020.09.2
  1534  * parallelize endpoint operations
  1535  
  1536  ## 2020.09.1
  1537  * added `ProcessCPUTime` method to `QueryStats`
  1538  * added `ReadReplicasSettings` support for `CreateTable`, `AlterTable` and `DescribeTalbe`
  1539  * added `StorageSettings` support for `CreateTable`, `AlterTable` and `DescribeTalbe`
  1540  
  1541  ## 2020.08.2
  1542  * added `PartitioningSettings` support for `CreateTable` and `AlterTable`
  1543  
  1544  ## 2020.08.1
  1545  * added `CPUTime` and `AffectedShards` fields to `QueryPhase` struct
  1546  * added `CompilationStats` statistics
  1547  
  1548  ## 2020.07.7
  1549  * support manage table attributes
  1550  
  1551  ## 2020.07.6
  1552  * support Column Families
  1553  
  1554  ## 2020.07.5
  1555  * support new types: DyNumber, JsonDocument
  1556  
  1557  ## 2020.07.4
  1558  * added coordination service
  1559  * added rate_limiter service
  1560  
  1561  ## 2020.07.3
  1562  * made `api` wrapper for `internal` api subset
  1563  
  1564  ## 2020.07.2
  1565  * return TableStats and PartitionStats on DescribeTable request with options
  1566  * added `ydbsql/connector` option to configure `DefaultTxControl`
  1567  
  1568  ## 2020.07.1
  1569  * support go modules tooling for ydbgen
  1570  
  1571  ## 2020.06.2
  1572  * refactored `InstanceServiceAccount`: refresh token in background.
  1573    Also, will never produce error on creation
  1574  * added getting `ydb.Credentials` examples
  1575  
  1576  ## 2020.06.1
  1577  
  1578  * exported internal `api.Wrap`/`api.Unwrap` methods and linked structures
  1579  
  1580  ## 2020.04.5
  1581  
  1582  * return on discovery only endpoints that match SSL status of driver
  1583  
  1584  ## 2020.04.4
  1585  
  1586  * added GCP metadata auth style with `InstanceServiceAccount` in `auth.iam`
  1587  
  1588  ## 2020.04.3
  1589  
  1590  * fix race in `auth.metadata`
  1591  * fix races in test hooks
  1592  
  1593  ## 2020.04.2
  1594  
  1595  * set limits to grpc `MaxCallRecvMsgSize` and `MaxCallSendMsgSize` to 64MB
  1596  * remove deprecated IAM (jwt) `Client` structure
  1597  * fix panic on nil dereference while accessing optional fields of `IssueMessage` message
  1598  
  1599  ## 2020.04.1
  1600  
  1601  * added options to `DescribeTable` request
  1602  * added `ydbsql/connector` options to configure `pool`s  `KeepAliveBatchSize`, `KeepAliveTimeout`, `CreateSessionTimeout`, `DeleteTimeout`
  1603  
  1604  ## 2020.03.2
  1605  
  1606  * set session keepAlive period to 5 min - same as in other SDKs
  1607  * fix panic on access to index after pool close
  1608  
  1609  ## 2020.03.1
  1610  
  1611  * added session pre-creation limit check in pool
  1612  * added discovery trigger on more then half unhealthy transport connects
  1613  * await transport connect only if no healthy connections left
  1614  
  1615  ## 2020.02
  1616  
  1617  * support cloud IAM (jwt) authorization from service account file
  1618  * minimum version of Go become 1.13. Started support of new `errors` features