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

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