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