- Refactored golang types mapping into ydb types using
ydb.ParamsFromMap
anddatabase/sql
query arguments - Small breaking change: type mapping for
ydb.ParamsFromMap
anddatabase/sql
typeuuid.UUID
changed from ydb typeText
to ydb typeUUID
- Supported raw protobuf
*Ydb.TypedValue
usingydb.ParamsBuilder()
- Removed experimental helper
ydb.MustParamsFromMap
- Changed result of experimental helper
ydb.ParamsFromMap
from tuple <params.Parameters
,error
> toparams.Parameters
only
- Published
query.ExecuteOption
as alias tointernal/query/options.Execute
- Added
ydb.WithStaticCredentialsLogin
andydb.WithStaticCredentialsPassword
options
- Fixed string representation of
TzTimestamp
,TzDatetime
andTzDate
type values - Added
database/sql/driver.Value
as type destination for almost ydb values
- Avoid retrying requests finished with
UNAUTHORIZED
errors
- Fixed connections pool leak on closing
- Fixed error with incompleted data return from transaction.ReadQueryResult method
- Added option
query/WithResponsePartLimitSizeBytes(...)
for queries with query service
- Added
table/options.WithShardNodesInfo()
experimental option to get shard nodeId for describe table call
- Added
sugar.WithUserPassword(user,password)
option forsugar.DSN()
helper - Added
sugar.WithSecure(bool)
option forsugar.DSN()
helper - Small breaking change:
sugar.DSN
have only two required parameters (endpoint and database) from now on. Third parametersecure
must be passed as optionsugar.WithSecure(bool)
- Added experimental ydb.ParamsFromMap and ydb.MustParamsFromMap for build query parameters
- Refactored coordination traces
- gRPC connection will be forcefully closed on DNS resolver errors from now on
- Added
ydb.WithPreferredNodeID(ctx, nodeID)
context modifier for trying to execute queries on given nodeID
- Set the
pick_first
balancer for short-lived grpc connection inside ydb cluster discovery attempt
- Small broken change: added method
ID()
intospans.Span
interface (need to implement in adapter) - Fixed traceparent header for tracing grpc requests
- Fixed closing of child driver with shared balancer
- Refactored
database/sql
driver internals for query-service client support in the future
- Fixed nil pointer dereference in metabalancer initialization
- Changed behaviour on re-discovery: always open new grpc connection for discovery request
- Wrapped internal balancer with metadata middleware
- Returned log.XXX methods for create fields, removed from public at v3.85.0
- Added option
ydb.WithSharedBalancer(*Driver)
for child drivers
- Fixed send optional arguments to the server with
ydb.ParamsBuilder
- Removed UUID methods from ydb.ParamsBuilder()
- BREAK OLD STYLE WORK WITH UUID. See ydb-platform#1501 for details. At the version you must explicit choose way for work with uuid: old with bug or new (fixed).
- Fixed scan to optional uuid
- 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. Dedicated version for migrate code for workaround/fix uuid bug. See ydb-platform#1501 for details.
- Renamed
query.WithPoolID()
intoquery.WithResourcePool()
- Added experimental
query.WithPoolID()
execute option for define resource pool for execute query
- Added
spans.Retry
constructor oftrace.Retry
- Added experimental package
spans
with tracing adapter interfaces for OpenTelemetry, OpenTracing, etc. - Added
db.Topic().DescribeTopicConsumer()
method for displaying consumer information - Marked as deprecated options
ydb.WithDatabase(database)
andydb.WithEndpoint(endpoint)
- Added session info into
trace.TableSessionBulkUpsertStartInfo
- Added
meta.WithTraceParent
context modifier for explicit putting traceparent header into grpc calls
- Supported
db.Table().BulkUpsert()
from scv, arrow and ydb rows formats
- Fixed error on experimental
TopicListener.Close
- Disabled reporting of
ydb_go_sdk_query_session_count
when metrics are disabled - Disabled reporting of
ydb_go_sdk_ydb_query_session_create_latency
histogram metrics when metrics are disabled - Allowed skip column for
ScanStruct
by tag-
- Returned
topicwriter.ErrQueueLimitExceed
, accidental removed atv3.81.0
- Fixed tracing details check for some metrics
- Removed
experimantal
comment for query service client
- Fixed nil pointer dereference panic on failed
ydb.Open
- Added ip discovery. Server can show own ip address and target hostname in the ListEndpoint message. These fields are used to bypass DNS resolving.
- Added error ErrMessagesPutToInternalQueueBeforeError to topic writer
- Added write to topics within transactions
- Added
ydb.WithSessionPoolSessionUsageLimit()
option for limitation max count of session usage - Refactored experimental topic iterators in
topicsugar
package
- Fixed bug in experimental api:
ydb.ParamsBuilder().Param().Optional()
receive pointer and really produce optional value.
- Added
ydb.WithLazyTx(bool)
option for create lazy transactions onquery.Session.Begin
call - Added initial experimental topic and cdc-helpers, see examples in tests/integration/topic_helpers_test.go
- Added experimental
sugar.UnmarshalRows
for user unmarshaller structs in own code in go 1.23, change example for use the iterator. - Added
ydb_go_sdk_ydb_query_pool_size_index
metrics
- Fixed bug with doesn't rollback the transaction on the operation error in table service
- Fixed concurrent map writes in metrics
- Renamed method at experimental API
reader.PopBatchTx
toreader.PopMessagesBatchTx
- Fixed connections pool leak on failed
ydb.Open
call
- Fixed panic on usage metrics package from prometheus adapter on
trace.Driver.OnNewStream
callback
- Added option
ydb.WithSessionPoolSessionIdleTimeToLive
for restrict idle time of query sessions - Fixed bug with leak of query transactions
- Changed
ydb_go_sdk_ydb_driver_conn_requests
metrics splitted toydb_go_sdk_ydb_driver_conn_request_statuses
andydb_go_sdk_ydb_driver_conn_request_methods
- Fixed metadata for operation service connection
- Fixed composing query traces in call
db.Query.Do[Tx]
using optionquery.WithTrace
- Added
balancers.PreferNearestDC[WithFallback]
balancers - Marked as deprecated
balancers.PreferLocalDC[WithFallback]
balancers becauselocal
word is ambiguous for balancer idea
- Added
lastErr
from previous attempt inretry.RetryWithResult
- Replaced internal table client pool entities to
internal/pool
- Enabled by default usage of
internal/pool
ininternal/query.Client
- Changed
trace.Table
andtrace.Query
traces - Implemented
internal/pool
the same as table client pool frominternal/table.Client
- Added commit messages for topic listener
- EOF error in RecvMsg is no longer logged
- Changed result type of method
query.Executor.QueryResultSet
fromquery.ResultSet
toquery.ClosableResultSet
- Added
table/types.DecimalValueFromString
decimal type constructor
- Added log topic writer ack
- Replaced
operation.Client.List
to five methods for listing operationsoperation.List{BuildIndex,ImportFromS3,ExportToS3,ExportToYT,ExecuteQuery}
- Changed log message about send topic message
- Added experimental support for executing scripts over query service client (
query.Client.ExecuteScript
andquery.CLient.FetchScriptResults
) - Removed tx result from
query.Session.Execute
(tx can be obtained fromquery.Session.Begin
) - Changed behaviour of
query.Session.Begin
tonoop
for lazy initialization with first callquery.TxActor.Execute
- Splitted experimental method
query.Client.Execute
to methodsquery.Client.Exec
without result andquery.Client.Query
with result - Splitted experimental method
query.TxActor.Execute
to methodsquery.TxActor.Exec
without result andquery.TxActor.Query
with result - Renamed experimental method
query.Client.ReadResultSet
toquery.Client.QueryResultSet
- Renamed experimental method
query.Client.ReadRow
toquery.Client.QueryRow
- Removed experimental methods
query.Session.ReadResultSet
andquery.Session.ReadRows
- Removed experimental methods
query.TxActor.ReadResultSet
andquery.TxActor.ReadRows
- Removed experimental method
query.Client.Stats
- Option
query.WithIdempotent()
allowed forquery.Client.{Exec,Query,QueryResultSet,QueryRow}
methods now - Added experimental support for operation service client through
db.Operation()
method (supports methodsGet
,List
,Cancel
andForget
)
- Replaced requirements from go1.22 + experimantal flag to go1.23 for experimental range-over interface
- Fixed out of index item creation in
internal/pool.Pool
- Fixed tracing of
(*grpcClientStream).finish
event
- Added traces and logs for read messages from topic within transaction
- Changed result type of
query.Session.NodeID()
fromint64
touint32
for compatibility with table session and discovery - Removed experimental method
query.Result.Err()
- Added the finishing reading the grpc stream on
query.Result.Close()
call - Renamed experimental method
query.Result.Range()
toquery.Result.ResultSets()
- Renamed experimental method
query.ResultSet.Range()
toquery.ResultSet.Rows()
- Removed support of
go1.20
- Added PopMessages from topic within transaction
- Changed interface
table.TransactionIdentifier
(added private method) for prohibition of any implementations outside ydb-go-sdk
- Fixed bug with nil pointer dereference on trace callback from
query.createSession
- Fixed test message builder, now all method return itself pointer
- Fixed handle reconnection timeout error
- Fixed experimental topic listener handle stop partition event
- Fixed
query.WithCommit()
flag behaviour fortx.Execute
in query service - OAuth 2.0 token exchange: allowed multiple resource parameters in according to https://www.rfc-editor.org/rfc/rfc8693
- Added experimental topic listener implementation
- Fixed
internal/xstrings.Buffer()
leak without callbuffer.Free()
- Removed double quotas from goroutine labels background workers for prevent problem with pprof
- Fixed build for go1.20
- Fixed return more than one row error if real error raised on try read next row
- Fixed checking errors for session must be deleted
- Changed signature of filter func in balancers (replaced argument from
conn.Conn
type toendpoint.Info
)
- Improve config validation before start topic reader
- Added metrics over
db.Table().Do()
anddb.Table().DoTx()
- Added method
ydb.ParamsBuilder().Param(name).Any(value)
to add customtypes.Value
- Upgraded dependencies:
google.golang.org/grpc
- fromv1.57.1
tov1.62.1
github.com/google/uuid
- fromv1.3.0
tov1.6.0
golang.org/x/sync
- fromv0.3.0
tov0.6.0
- Fixed goroutine leak on close reader
- Fixed topic reader and writer WaitInit hunging on unretriable connection error
- Added
query.Client.Stats()
method - Added
query.Result.Stats()
method - Added
query.ResultSet.Index()
method - Support loading OAuth 2.0 token exchange credentials provider from config file
- Added options for JWT tokens for loading EC private keys and HMAC secrets
- Add retries to OAuth 2.0 token exchange credentials
- Fixed bug with reading empty result set parts.
- Fixed nil pointer dereference when closing result set
- Fixed bug with fail cast of grpc response to
operation.{Response,Status}
- Removed check the node is available for query and table service sessions
- Refactored the
balancers.PreferLocations()
function - it is a clean/pure function - Added experimental
balancers.WithNodeID()
context modifier for define per request the YDB endpoint by NodeID - Reverted the allowing the casts from signed YDB types to unsigned destination types if source value is not negative
- Replaced internal query session pool by default to stub for exclude impact from internal/pool
- Added description to scan errors with use query service client scanner
- Allowed the use of DSN without specifying the protocol/scheme
- Allowed casts from signed YDB types to unsigned destination types if source value is not negative
- Removed public
query.TxIdentifier
interface for exclude any external implementations for use with YDB
- Added experimental range functions to the
query.Result
andquery.ResultSet
types, available as for-range loops starting with Go version 1.22. These features can be enabled by setting the environment variableGOEXPERIMENT=rangefunc
. - Added public types for
tx.Option
,options.DoOption
andoptions.DoTxOption
- Changed
query.DefaultTxControl()
fromquery.SerializableReadWrite()
with commit toquery.NoTx()
- Added experimental
retry.DoWithResult
andretry.DoTxWithResult
helpers for retry lambda and return value from lambda
- Excluded
Query()
method from interfaceydb.Connection
. MethodQuery()
remains accessible fromydb.Driver
- Added
query/ResultSet.{Columns,ColumnTypes}
methods for get column names and types from query result set - Added experimental
retry.RetryWithResult
helper for retry lambda and return value from lambda
- Fixed
config.WithDatabase
behaviour with empty database in DSN string - Added experimental method
query/Client.Execute
for execute query and read materialized result
- Added experimental method for execute query and read only one row from result:
query/Client.ReadRow
query/Session.ReadRow
query/Transaction.ReadRow
- Added experimental method for execute query and read only one result set from result:
query/Client.ReadResultSet
query/Session.ReadResultSet
query/Transaction.ReadResultSet
- Added experimental
sugar.UnmarshallRow[T]
andsugar.UnmarshallResultSet[T]
helpers for converts YDB rows to typed objects
- Downgraded minimal version of Go to 1.20
- Refactored internal packages by
ifshort
linter issues
- Added experimental
ydb.{Register,Unregister}DsnParser
global funcs for register/unregister external custom DSN parser forydb.Open
andsql.Open
driver constructor - Simple implement option WithReaderWithoutConsumer
- Fixed bug: topic didn't send specified partition number to a server
- Fixed incorrect formatting of decimal. Implementation of decimal has been reverted to latest working version
- Fixed race of stop internal processes on close topic writer
- Fixed goroutines leak within topic reader on network problems
- Added
ydb.WithNodeAddressMutator
experimental option for mutate node addresses fromdiscovery.ListEndpoints
response - Added type assertion checks to enhance type safety and prevent unexpected panics in critical sections of the codebase
- Fixed the OAuth2 test
- Added
trace.DriverConnStreamEvents
details bit - Added
trace.Driver.OnConnStreamFinish
event
- Added flush messages from buffer before close topic writer
- Added Flush method for topic writer
- Added experimental package
retry/budget
for limit second and subsequent retry attempts - Refactored internals for enabling
containedctx
linter - Fixed the hanging semaphore issue on coordination session reconnect
- Fixed data race in
internal/conn.grpcClientStream
- Fixed data race using
log.WithNames
- Updated dependency
ydb-go-genproto
- Added processing of
Ydb.StatusIds_EXTERNAL_ERROR
inretry.Retry
- Supported OAuth 2.0 Token Exchange credentials provider
- Supported
table.Session.RenameTables
method - Fixed out of range panic if next query result set part is empty
- Updated the indirect dependencies
golang.org/x/net
tov0.17.0
andgolang.org/x/sys
tov0.13.0
due to vulnerability issue
- Added versioning policy
- Restored
WithSessionPoolKeepAliveMinSize
andWithSessionPoolKeepAliveTimeout
for backward compatibility. - Fixed leak timers
- 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)
- Added
Struct
support forVariant
inydb.ParamsBuilder()
- Added
go
with anonymous function case ingstack
- Changed default transaction control to
NoTx
for execute query through query service client
- Renamed
db.Coordination().CreateSession()
todb.Coordination().Session()
for compatibility with protos
- Added
Tuple
support forVariant
inydb.ParamsBuilder()
- Added additional traces for coordination service client internals
- Added experimental support of semaphores over coordination service client
- Fixed
gstack
logic for parsingast.BlockStmt
- Added internal
gstack
codegen tool for fillingstack.FunctionID
with value from call stack
- Fixed updating last usage timestamp for smart parking of the conns
- Added
Struct
support forydb.ParamsBuilder()
- Added support of
TzDate
,TzDateTime
,TzTimestamp
types inydb.ParamsBuilder()
- Added
trace.Query.OnTransactionExecute
event - Added query pool metrics
- Fixed logic of query session pool
- Changed initialization of internal driver clients to lazy
- Removed
ydb.WithSessionPoolSizeLimit()
option - Added async put session into pool if external context is done
- Dropped intermediate callbacks from
trace.{Table,Retry,Query}
events - Wrapped errors from
internal/pool.Pool.getItem
as retryable - Disabled the logic of background grpc-connection parking
- Improved stringification for postgres types
- Added
trace.Query.OnSessionBegin
event - Added
trace.Query.OnResult{New,NextPart,NextResultSet,Close}
events - Added
trace.Query.OnRow{Scan,ScanNamed,ScanStruct}
events
- Dropped all deprecated callbacks and events from traces
- Added
trace.Driver.OnConnStream{SendMsg,RecvMsg,CloseSend}
events - Added
trace.Query.OnSessionExecute
event
- Changed
List
constructor fromydb.ParamsBuilder().List().Build().Build()
toydb.ParamsBuilder().BeginList().EndList().Build()
- Changed
Set
constructor fromydb.ParamsBuilder().Set().Build().Build()
toydb.ParamsBuilder().BeginSet().EndSet().Build()
- Changed
Dict
constructor fromydb.ParamsBuilder().Dict().Build().Build()
toydb.ParamsBuilder().BeginDict().EndDict().Build()
- Changed
Optional
constructor fromydb.ParamsBuilder().Set().Build().Build()
toydb.ParamsBuilder().BeginOptional().EndOptional().Build()
- Added events into
trace.Query
trace - Rewrote
internal/pool
to buffered channel - Added
internal/xcontext.WithDone()
- Added
internal/xsync.{OnceFunc,OnceValue}
- Updated
google.golang.org/protobuf
fromv1.31.0
tov.33.0
- Added
ydb.ParamsBuilder().Pg().{Value,Int4,Int8,Unknown}
for postgres arguments - Added
Tuple
support forydb.ParamsBuilder()
- Added client pid to each gRPC requests to YDB over header
x-ydb-client-pid
- Added
ydb.WithApplicationName
option - Added
Dict
support forydb.ParamsBuilder()
- Added metrics over query service internals
- Added session create and delete events into
trace.Query
- Moved public type
query.SessionStatus
intointernal/query
package
- Fixed cases when some option is nil
- Added logs over query service internals
- Changed
trace.Query
events - Changed visibility of
query.{Do,DoTx}Options
from public to private
- Added experimental implementation of query service client
- Fixed sometime panic on topic writer closing
- Added experimental query parameters builder
ydb.ParamsBuilder()
- Changed types of
table/table.{QueryParameters,ParameterOption}
to aliases oninternal/params.{Parameters,NamedValue}
- Fixed bug with optional decimal serialization
- Fixed return private error for commit to stopped partition in topic reader.
- Stopped wrapping err error as transport error at topic streams (internals)
- Fixed fixenv usage (related to tests only)
- Fixed handle of operational errors in topic streams
- The minimum version of Go in
ydb-go-sdk
has been raised togo1.21
- Fixed topic writer infinite reconnections in some cases
- Refactored nil on err
internal/grpcwrapper/rawydb/issues.go
, when golangci-lint nilerr enabled - Refactored nil on err
internal/grpcwrapper/rawtopic/describe_topic.go
, when golangci-lint nilerr enabled
- Fixed handle of operational errors in topic streams (backported fix only)
- Fixed init info in topic writer, when autoseq num turned off.
- Supported column name prefix
__discard_column_
for discard columns in result sets - Made
StatusIds_SESSION_EXPIRED
retriable for idempotent operations
- Refactored
internal/value/intervalValue.Yql()
- The minimum version of Go in
ydb-go-sdk
has been raised togo1.20
- Added per message metadata support for topic api
- Context for call options now have same lifetime as driver (previous - same lifetime as context for call Open function).
- Extended metrics (fill database.sql callbacks, recognize TLI error)
- Refactored config prefix in metrics
- Removed excess status labels from metrics
- Implement
fmt.Stringer
interface forDriver
struct
- Added context to some internal methods for better tracing
- Added
trace.FunctionID
helper andFunctionID
field to trace start info's - Replaced lazy initialization of ydb clients (table, topic, etc.) to explicit initialization on
ydb.Open
step
- Fixed inconsistent labels in
metrics
- Allowed
sql.LevelSerializable
isolation level in read-write mode indatabase/sql
transactions - Refactored traces and metrics
- Added
{retry,table}.WithLabel
options for mark retriers calls - Added
ydb.WithTraceRetry
option - Moved
internal/allocator.Buffers
to packageinternal/xstring
- Bumped
golang.org/x/sync
tov0.3.0
- Bumped
google.golang.org/protobuf
tov1.31.0
- Bumped
google.golang.org/grpc
tov1.57.1
- Allowed grpc status error as arg in
internal/xerrors.TransportError(err)
- Added
interanl/xtest.CurrentFileLine()
helper for table tests - Added
internal/credentials.IsAccessError(err)
helper for check access errors - Changed period for re-fresh static credentials token from
1/2
to1/10
to expiration time - Added
table.SnapshotReadOnlyTxControl()
helper for get transaction control with snapshot read-only
- Downgrade
golang.org/x/net
from0.17.0
to0.15.0
- Downgrade
golang.org/x/sys
fromv0.13.0
tov0.12.0
- Downgrade
golang.org/x/crypto
fromv0.14.0
tov0.13.0
- Refactored credentials options (from funcs to interfaces and types)
- Fixed stringification of credentials object
- Fixed panic when try to unwrap values with more than 127 columns with custom ydb unmarshaler
- Bumps
github.com/ydb-platform/ydb-go-genproto
for supportquery
service - Bumps
golang.org/x/net
from0.7.0
to0.17.0
- Bumps
golang.org/x/sys
fromv0.5.0
tov0.13.0
- Bumps
golang.org/x/text
fromv0.7.0
tov0.13.0
- Removed
internal/backoff.Backoff.Wait
interface method for exclude resource leak with bug-provoked usage oftime.After
method - Marked as deprecated
retry.WithDoRetryOptions
andretry.WithDoTxRetryOptions
- Added receiving first result set on construct
internal/table/scanner.NewStream()
- Added experimental package
metrics
with SDK metrics - Fixed redundant trace call for finished
database/sql
transactions - Added repeater event type to wake-up func context
- Refactored default logger format
- Refactored
internal/conn.coonError
format - Fixed data race on
internal/conn.conn.cc
access
- Removed almost all experimental marks from topic api.
- Rename some topic APIs (old names was deprecated and will be removed in one of next versions).
- Deprecated topic options (the option will be removed): min size of read messages batch
- Deprecated WithOnWriterFirstConnected callback, use Writer.WaitInitInfo instead.
- Changed topic Codec base type from int to int32 (was experimental code)
- Added
WaitInit
andWaitInitInfo
method to the topic reader and writer - Remove extra allocations in
types.TupleValue
,types.ListValue
andtypes.SetValue
- Removed support of placeholder "_" for ignoring columns in
database/sql
result sets
- Merged
internal/xsql/conn.{GetTables,GetAllTables}
methods forDRY
- Replaced
internal/xsql.Connector.PathNormalizer
default fromnopPathNormalizer
tobind.TablePathPrefix
with database name as path prefix - Supported placeholder "_" for ignored column names in
database/sql
result sets
- Added
table.Session.CopyTables
method - Added
x-ydb-trace-id
header into grpc calls - Improved topic reader logs
- Fixed
internal/xstring
package with deprecated warning ingo1.21
aboutreflect.{String,Slice}Header
- Added
internal/xstring.{FromBytes([]byte),ToBytes(string)
for increase performance onstring
from/to[]byte
conversion
- Added
table/options.ReadFromSnapshot(bool)
option forsession.StreamReadTable()
- Added checking condition for
tx.Rollback()
inretry.DoTx
- Added node info to grpc errors
- Added methods
TotalCPUTime()
andTotalDuration()
totable/stats/QueryStats
interface - Added check if commit order is bad in sync mode
- Added
table.options.WithIgnoreTruncated
option forsession.Execute
method - Added
table.result.ErrTruncated
error for check it witherrors.Is()
outside ofydb-go-sdk
- Added
table.Session.ReadRows
method for getting rows by keys - Added
table/options.ChangefeedFormatDynamoDBStreamsJSON
format ofDynamoDB
change feeds
- Fixed
sugar.RemoveRecursive()
for column table type
- Added
sugar.StackRecord()
helper for stringification of current file path and line - Updated
google.golang.org/grpc
fromv1.49.0
tov1.53.0
due to vulnerability - Updated
google.golang.org/protobuf
fromv1.28.0
tov1.28.1
due to vulnerability - Implemented implicit standard interface
driver.RowsColumnTypeNullable
ininternal/xsql.rows
- Upgraded errors description from
retry.Retry
with attempts info
- Added builder for topic reader message (usable for tests)
- Removed
log.Secret
helper as unnessesarry in public API after refactoring logging subsystem - Enriched the error with important details from initial discovery
- Added
internal.{secret,stack}
packages - Implemented
fmt.Stringer
interface in credential types
- Added
ydb.IsOperationErrorTransactionLocksInvalidated(err)
helper for checksTLI
flag in err
- Added
table/types.IsOptional()
helper
- Refactored tests
- Added
sugar.Is{Entry,ColumnTable}Exists
helper
- Fixed stopping topic reader by grpc stream shutdown
- Fixed
database/sql
driver for get and parse container ydb types - Changed
table/scanner.scanner.Any()
behaviour: for non-primitive types returns rawtable/types.Value
instead nil from previous behaviour - Added
table/types.{ListItems,VariantValue,DictValues}
helpers for get internal content of abstracttable/types.Value
- Marked as deprecated
table/types.DictFields
(usetable/types.DictValues
instead)
- Added
scheme.Entry.IsColumnTable()
helper
- Disabled check of node exists with
balancers.SingleConn
- Improved code with
go-critic
linter - Added session info into
database/sql
eventconnected
- Added
table/options.Description.Tiering
field
- Refactored
internal/cmd/gtrace
tool (prefer pointers instead trace struct copies) for bust performance - Fixed usage of generated traces in code
- Removed test artifacts from repository
- Added
table/types.ToDecimal()
converter fromtable/types.Value
totable/types.Decimal
- Implemented
internal/xcontext.With{Cancel,Timeout}
with stack record and switched all usages from standardcontext.With{Cancel,Timeout}
- Refactored package
log
for support typed fields in log messages
- Added
table/options.WithPartitions
for configure partitioning policy - Marked as deprecated
table/options.WithPartitioningPolicy{UniformPartitions,ExplicitPartitions}
(usetable/options.With{UniformPartitions,ExplicitPartitions}
instead)
- Fixed bug of processing endpoint with
node_id=0
- Refactored of checking node ID in cluster discovery before
Get
and during inPut
of session into session pool
- Removed debug print
- Fixed bug with returning session into pool before second discovery
- Added
table/options.WithCallOptions
options for append custom grpc call options intosession.{BulkUpsert,Execute,StreamExecuteScanQuery}
- Supported fake transactions in
database/sql
driver over connector optionydb.WithFakeTx(queryMode)
and connection string paramgo_fake_tx
- Removed
testutil/timeutil
package (all usages replaced withclockwork
package) - Changed behaviour of retryer on transport errors
cancelled
anddeadline exceeded
- will retry idempotent operation if context is not done - Added address of node to operation error description as optional
- Fixed bug with put session from unknown node
- Fixed bug with parsing of
TzTimestamp
without microseconds - Fixed code -1 of retryable error if wrapped error with code
- Added
ydb.MustOpen
andydb.MustConnector
helpers - Fixed
internal/xerrors.Transport
error wrapping for case when given error is not transport error - Added grpc and operation codes to errors string description
- Extend
scheme.Client
interface with methodDatabase
- Removed
driver.ResultNoRows
ininternal/xsql
- Added
ydb.{WithTablePathPrefix,WithAutoDeclare,WithPositionalArgs,WithNumericalArgs}
query modifiers options - Supported binding parameters for
database/sql
driver over connector optionydb.WithAutoBind()
and connection string paramsgo_auto_bind={table_path_prefix(path),declare,numeric,positional}
- Added
testutil.QueryBind
test helper - Fixed topic retry policy callback call: not call it with nil error
- Fixed bug with no checking operation error on
discovery.Client
calls - Allowed zero create session timeout in
ydb.WithSessionPoolCreateSessionTimeout(timeout)
(less than or equal to zero - no used timeout on create session request) - Added examples with own
go.mod
- Marked as deprecated
ydb.WithErrWriter(w)
andydb.WithOutWriter(w)
logger options - Added
ydb.WithWriter(w)
logger option
Small broken changes
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.
Changes for experimental topic API:
- Moved
producer_id
from required positional argument to optionWithProducerID
(and it is optional now) - Removed
WithMessageGroupID
option (because not supported now)
Changes in ydb connection:
- Publish internal private struct
ydb.connection
asydb.Driver
(it is implementydb.Connection
) ydb.Connection
marked as deprecated- Changed return type of
ydb.Open(...)
fromydb.Connection
to*ydb.Driver
- Changed return type of
ydb.New(...)
fromydb.Connection
to*ydb.Driver
- Changed argument type for
ydb.GRPCConn
fromydb.Connection
to*ydb.Driver
- Removed method
With
fromydb.Connection
(use*Driver.With
instead).
Changes in package sugar
:
- Changed a type of database arg in
sugar.{MakeRecursive,RemoveRecursive}
fromydb.Connection
to minimal required local interface
Dependencies:
- Up minimal supported version of
go
to1.17
for update dependencies (newgolang.org/x
doesn't compiled forgo1.16
) - Upgrade
golang.org/x/...
for prevent issues:CVE-2021-33194
,CVE-2022-27664
,CVE-2021-31525
,CVE-2022-41723
- Fixed checking
nil
error withinternal/xerrors.Is
- Supported
scheme.EntryTopic
path child entry insugar.RemoveRecursive
- Fixed default state of
internal/xerrors.retryableError
: it inherit properties from parent error as possible - Marked event
grpc/stats.End
as ignored at observing status of grpc connection
- Replaced the balancer connection to discovery service from short-lived grpc connection to
internal/conn
lazy connection (revert related changes fromv3.42.6
) - Marked as deprecated
trace.Driver.OnBalancerDialEntrypoint
event callback - Deprecated
trace.Driver.OnConnTake
event callback - Added
trace.Driver.OnConnDial
event callback
- Fixed validation error for
topicoptions.WithPartitionID
option of start topic writer.
- Added exit from retryer if got grpc-error
Unauthenticated
ondiscovery/ListEndpoints
call
- Added
internal/xerrors.Errorf
error for wrap multiple errors and check them witherrors.Is
oferrors.As
- Fixed corner cases of
internal/wait.Wait
- Added check of port in connection string and error throw
- Fixed bug with initialization of connection pool before apply static credentials
- Refactored of applying grpc dial options with defaults
- Added
trace.Driver.{OnBalancerDialEntrypoint,OnBalancerClusterDiscoveryAttempt}
trace events - Fixed compilation of package
internal/xresolver
withgoogle.golang.org/[email protected]
- Fixed returning
io.EOF
onrows.Next
androws.NextResultSet
- Added wrapping of errors from unary and stream results
- Added error throw on
database/sql.Conn.BeginTx()
,*sql.Tx.ExecContext
and*sql.Tx.QueryContext
if query mode is notydb.DataQueryMode
- Added test for
database/sql
scan-query
- Fixed
internal/scheme/helpers/IsDirectoryExists(..)
recursive bug
- Fixed
sugar.IsTableExists
with recursive check directory exists - Added
sugar.IsDirectoryExists
- Changed type of
table/options.IndexType
for type checks - Added constants
table/options.IndexTypeGlobal
andtable/options.IndexTypeGlobalAsync
- Added
table/options.IndexDescription.Type
field withtable/options.IndexType
type
- Implemented
driver.RowsColumnTypeDatabaseTypeName
interface ininternal/xsql.rows
struct - Extended
internal/xsql.conn
struct with methods for gettingYDB
metadata - Added
scheme.Client
tointernal/xsql.connection
interface - Added
helpers
package with method for checking existence of table, refactoredsugar.IsTableExists()
- Added checks for nil option to all opts range loops
- Moved content of package
internal/ctxlabels
intointernal/xcontext
- Implemented
GRPCStatus
method ininternal/xerrors/transportError
- Added different implementations of stacktrace error for grpc errors and other
- Dropped
internal/xnet
package as useless - Fixed default grpc dial options
- Replaced single connection for discovery repeater into connection which creates each time for discovery request
- Fixed retry of cluster discovery on initialization
- Fixed dial timeout processing
- Fixed closing of
database/sql
connection (akaYDB
session) - Made
session.Close()
asnop
for idled session - Implemented goroutine for closing idle connection in
database/sql
driver - Separated errors of commit from other reader and to expired session
- Fixed wrapping error in
internal/balancer/Balancer.wrapCall()
- Added
ydb.WithDisableServerBalancer()
database/sql connector option
- Added
credentials.NewStaticCredentials()
static credentials constructor - Changed
internal/credentials.NewStaticCredentials()
signature and behaviour for create grpc connection on each call to auth service - Downgrade
google.golang.org/grpc
tov1.49.0
- Added
trace.Details.Details()
method for use external detailer
- Fixed lazy transaction example for
godoc
- Added retry policy options for topics:
topic/topicoptions.WithReaderCheckRetryErrorFunction
,topic/topicoptions.WithReaderStartTimeout
,topic/topicoptions.WithWriterCheckRetryErrorFunction
,topic/topicoptions.WithWriterStartTimeout
- Refactored
internal/conn
middlewares - Added
trace.tableSessionInfo.LastUsage()
method for get last usage timestamp - Reverted
tx.WithCommit()
changes for fix unstable behaviour of lazy transactions - Added
options.WithCommit()
option for execute query with auto-commit flag - Removed
trace.TableTransactionExecuteStartInfo.KeepInCache
field as redundant
- Added option for set interval of auth token update in topic streams
- Supported internal allocator in
{session,statement}.Execute
for decrease memory usage - Fixed typo in
topic/README.md
- Upgraded
ydb-go-genproto
dependency - Fixed duplicating of traces in
table.Client.Do()
call - Supported
table.Transaction.WithCommit()
method for execute query and auto-commit after - Added
DataColumns
totable.options.IndexDescription
- Added
scheme.EntryColumnStore
andscheme.EntryColumnColumn
entry types - Added
table.options.WithPartitioningBy(columns)
option
- Added constructor of
options.TimeToLiveSettings
and fluent modifiers
- Added
options.WithAddAttribute
andoptions.WithDropAttribute
options forsession.AlterTable
request - Added
options.WithAddIndex
andoptions.WithDropIndex
options forsession.AlterTable
request - Added return error while create topic writer with not equal producer id and message group id.
- Added package
meta
with methods aboutYDB
metadata - Added
meta.WithTrailerCallback(ctx, callback)
context modifier for attaching callback function which will be called on incoming metadata - Added
meta.ConsumedUnits(metadata.MD)
method for getting consumed units from metadata - Added
NestedCall
field to retry trace start infos for alarm on nested calls - Added
topicoptions.WithWriterTrace
option for attach tracer into separated writer - Added
sugar.IsTableExists()
helper for check existence of table
- Removed message level partitioning from experimental topic API. It is unavailable on server side yet.
- Supported
NullValue
type as received type fromYDB
- Supported
types.SetValue
type - Added
types.CastTo(types.Value, destination)
public method for casttypes.Value
to golang native type value destination - Added
types.TupleItem(types.Value)
,types.StructFields(types.Value)
andtypes.DictValues(types.Value)
funcs (extractors of internal fields of tuple, struct and dict values) - Added
types.Value.Yql()
func for getting values string representation asYQL
literal - Added
types.Type.Yql()
func for gettingYQL
representation of type - Marked
table/types.WriteTypeStringTo
as deprecated - Added
table/options.WithDataColumns
for supporting covering indexes - Supported
balancer
query string parameter inDSN
- Fixed bug with scanning
YSON
value from result set - Added certificate caching in
WithCertificatesFromFile
andWithCertificatesFromPem
- Fixed bug from scan unexpected column name
- Changed type of
table/options.{Create,Alter,Drop}TableOption
from func to interface - Added implementations of
table/options.{Create,Alter,Drop}Option
- Changed type of
topic/topicoptions.{Create,Alter,Drop}Option
from func to interface - Added implementations of
topic/topicoptions.{Create,Alter}Option
- Fix internal race-condition bugs in internal background worker
- Added retries to initial discovering
- Added missing
RetentionPeriod
parameter for topic description - Fixed reconnect problem for topic client
- Added queue limit for sent messages and split large grpc messages while send to topic service
- 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
- Allowed writing zero messages to topic writer
- Fixed deadlock with implicit usage of
internal.table.Client.internalPoolAsyncCloseSession
- Fixed commit errors for experimental topic reader
- Updated
ydb-go-genproto
dependency - Added
table.WithSnapshotReadOnly()
TxOption
for supportingSnapshotReadOnly
transaction control - Fixed bug in
db.Scripting()
queries (not checked operation results) - Added
sugar.ToYdbParam(sql.NamedArg)
helper for convertingsql.NamedArg
totable.ParameterOption
- Changed type
table.ParameterOption
for getting name and value fromtable.ParameterOption
instance - Added topic writer experimental api with internal logger
- Refactored the internal closing behaviour of table client
- Implemented the
sql.driver.Validator
interface - Fixed update token for topic reader
- Marked sessions which creates from
database/sql
driver as supported server-side session balancing
- Changed type of truncated result error from
StreamExecuteScanQuery
to retryable error - Added closing sessions if node removed from discovery results
- Moved session status type from
table/options
package totable
- Changed session status source type from
uint32
tostring
alias
- Added to balancer notifying mechanism for listening in table client event about removing some nodes and closing sessions on them
- Removed from public client interfaces
closer.Closer
(for exclude undefined behaviour on client-side)
- Refactoring of
xsql
errors checking
- Revert the marking of context errors as required to delete session
- Fixed alter topic request - stop send empty setSupportedCodecs if customer not set them
- Marked the context errors as required to delete session
- Added log topic api reader for internal logger
- Fixed nil pointer exception in topic reader if reconnect failed
- Refactored the
xsql.badconn.Error
- Supported read-only
sql.LevelSnapshot
isolation with fake transaction andOnlineReadOnly
transaction control (transient, while YDB clusters are not updated with true snapshot isolation mode) - Supported the
*sql.Conn
as input typeydb.Unwrap
helper for go's 1.18
- Changed output of
sugar.GenerateDeclareSection
(added error as second result) - Specified
sugar.GenerateDeclareSection
forgo1.18
(supports input types*table.QueryParameters
[]table.ParameterOption
or[]sql.NamedArg
) - Supports different go's primitive value types as arg of
sql.Named("name", value)
- Added
database/sql
example and docs
- Fixed
xsql.Rows
error checking
- Changed behavior on
result.Err()
on truncated result (returns non-retryable error now, excludeStreamExecuteScanQuery
) - Added
ydb.WithIgnoreTruncated
option for disabling errors on truncated flag - Added simple transaction control constructors
table.OnlineReadOnlyTxControl()
andtable.StaleReadOnlyTxControl()
- Added transaction control specifier with context
ydb.WithTxControl
- Added value constructors
types.BytesValue
,types.BytesValueFromString
,types.TextValue
- Removed auto-prepending declare section on
xsql
queries - Supports
time.Time
as type destination inxsql
queries - Defined default dial timeout (5 seconds)
- Removed the deprecation warning for
ydb.WithSessionPoolIdleThreshold
option
- Replaced internal table client background worker to plain wait group for control spawned goroutines
- Replaced internal table client background session keeper to internal background session garbage collector for idle sessions
- Extended the
DescribeTopicResult
struct
- Added some description to error message from table pool get
- Moved implementation
sugar.GenerateDeclareSection
tointernal/table
- Added transaction trace callbacks and internal logging with them
- Stored context from
BeginTx
tointernal/xsql
transaction - Added automatically generated declare section to query text in
database/sql
usage - Removed supports
sql.LevelSerializable
- Added
retry.Do
helper for retry custom lambda withdatabase/sql
without transactions - Removed
retry.WithTxOptions
option (only default isolation supports)
- Changed
database/sql
driverprepare
behaviour tonop
with proxing call to conn exec/query with keep-in-cache flag - Added metadata to
trace.Driver.OnInvoke
andtrace.Driver.OnNewStream
done events
- Improved the
xsql
errors mapping todriver.ErrBadConn
- Extended
retry.DoTx
test for to achieve equivalence withretry.Retry
behaviour - Added
database/sql
events for tracingdatabase/sql
driver events - Added internal logging for
database/sql
events - Supports
YDB_LOG_DETAILS
environment variable for specify scope of log messages - Removed support of
YDB_LOG_NO_COLOR
environment variable - Changed default behaviour of internal logger to without coloring
- Fixed coloring (to true) with environment variable
YDB_LOG_SEVERITY_LEVEL
- Added
ydb.WithStaticCredentials(user, password)
option for make static credentials - Supports static credentials as part of connection string (dsn - data source name)
- Changed minimal supported version of go from 1.14 to 1.16 (required for jwt library)
- Added
retry.DoTx
helper for retryingdatabase/sql
transactions - Implemented
database/sql
driver overydb-go-sdk
- Marked as deprecated
trace.Table.OnPoolSessionNew
andtrace.Table.OnPoolSessionClose
events - Added
trace.Table.OnPoolSessionAdd
andtrace.Table.OnPoolSessionRemove
events - Refactored session lifecycle in session pool for fix flaked
TestTable
- Fixed deadlock in topicreader batcher, while add and read raw server messages
- Fixed bug in
db.Topic()
with send response to stop partition message
- Fixed flaky TestTable
- Renamed topic events in
trace.Details
enum
- Refactored
trace.Topic
(experimental) handlers - Fixed signature and names of helpers in
topic/topicsugar
package - Allowed parallel reading and committing topic messages
- Extended the
ydb.Connection
interface with experimentaldb.Topic()
client (control plane and reader API) - Removed
ydb.RegisterParser()
function (was needed fordatabase/sql
driver outsideydb-go-sdk
repository, necessity ofydb.RegisterParser()
disappeared with implementationdatabase/sql
driver in same repository) - Refactored
db.Table().CreateSession(ctx)
(maked retryable with internal create session timeout) - Refactored
internal/table/client.createSession(ctx)
(got rid of unnecessary goroutine) - Supported many user-agent records
- 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) - Fixed writing
KeepInCacheFlag
in table traces
- Fixed regression of
table/types.WriteTypeStringTo
- Added touching of last updated timestamp in existing conns on stage of applying new endpoint list
- Reverted
xerrors.IsTransportError(err)
behaviour for raw grpc errors to false
- Enabled server-side session balancing for sessions created from internal session pool
- Removed unused public
meta.Meta
methods - Renamed
meta.Meta.Meta(ctx)
public method tometa.Meta.Context(ctx)
- Reverted default balancer to
balancers.RandomChoice()
- Changed default balancer to
balancers.PreferLocalDC(balancers.RandomChoice())
- Refactored
internal/value
package for decrease CPU and memory workload with GC - Added
table/types.Equal(lhs, rhs)
helper for check equal for two types
- Fixed false-positive node pessimization on receiving from stream io.EOF
- Upgraded dependencies (grpc, protobuf, testify)
- Marked dial errors as retryable
- Supported node pessimization on dialing errors
- Marked error from
Invoke
andNewStream
as retryable if request not sended to server
- Added
sugar.GenerateDeclareSection()
helper for make declare section inYQL
- Added check when parameter name not started from
$
and automatically prepends it to name - Refactored connection closing
- Added internal experimental packages
internal/value/exp
andinternal/value/exp/allocator
with alternative value implementations with zero-allocation model - Supported parsing of database name from connection string URI path
- Added
options.WithExecuteScanQueryStats
option - Added to query stats plan and AST
- Changed behaviour of
result.Stats()
(if query result have no stats - returnsnil
) - Added context cancel with specific error
- Added mutex wrapper for mutex, rwmutex for guarantee unlock and better show critical section
- Fixed syntax mistake in
trace.TablePooStateChangeInfo
totrace.TablePoolStateChangeInfo
- Fixed bug with convert ydb value to
time.Duration
inresult.Scan[WithDefaults,Named]()
- Fixed bug with make ydb value from
time.Duration
intypes.IntervalValueFromDuration(d)
- Marked
table/types.{IntervalValue,NullableIntervalValue}
as deprecated
- Removed the processing of trailer metadata on stream calls
- Updated the
ydb-go-genproto
dependency
- Defined the
SerializableReadWrite
isolation level by default indb.Table.DoTx(ctx, func(ctx, tx))
- Updated the
ydb-go-genproto
dependency
- Disabled the
KeepInCache
policy for queries without params
- Updated the indirect dependency to
gopkg.in/yaml.v3
- Removed
Deprecated
mark fromtable/session.Prepare
method - Added comments for
table/session.Execute
method
- Refactored of making permissions from scheme entry
- Removed deprecated traces
- Fixed data race on session stream queries
- Renamed
internal/router
package tointernal/balancer
for unambiguous understanding of package mission - Implemented detection of local data-center with measuring tcp dial RTT
- Added
trace.Driver.OnBalancer{Init,Close,ChooseEndpoint,Update}
events - Marked the driver cluster events as deprecated
- Simplified the balancing logic
- Changed primary license to
Apache2.0
for auto-detect license - Refactored
types.Struct
value creation
- Fixed repeater initial force timeout from 500 to 0.5 second
- Fixed bug with unexpected failing of call
Invoke
andNewStream
on closed cluster - Fixed bug with releasing
internal/conn/conn.Pool
in cluster - Replaced interface
internal/conn/conn.Pool
to structinternal/conn/conn.Pool
- Added
ydb.GRPCConn(ydb.Connection)
helper for connect to driver-unsupported YDB services - Marked as deprecated
session.Prepare
callback - Marked as deprecated
options.WithQueryCachePolicyKeepInCache
andoptions.WithQueryCachePolicy
options - Added
options.WithKeepInCache
option - Enabled by default keep-in-cache policy for data queries
- Removed from
ydb.Connection
embedding ofgrpc.ClientConnInterface
- Fixed stopping of repeater
- Added log backoff between force repeater wake up's (from 500ms to 32s)
- Renamed
trace.DriverRepeaterTick{Start,Done}Info
totrace.DriverRepeaterWakeUp{Start,Done}Info
- Fixed unexpected
NullFlag
while parse nilJSONDocument
value - Removed
internal/conn/conn.streamUsages
andinternal/conn/conn.usages
(internal/conn.conn
always touching last usage timestamp on API calls) - Removed auto-reconnecting for broken conns
- Renamed
internal/database
package tointernal/router
for unambiguous understanding of package mission - Refactored applying actual endpoints list after re-discovery (replaced diff-merge logic to swap cluster struct, cluster and balancers are immutable now)
- Added
trace.Driver.OnUnpessimizeNode
trace event
- Changed default balancer to
RandomChoice()
becausePreferLocalDC()
balancer works incorrectly with DNS-balanced callDiscovery/ListEndpoints
- Refactored initialization of coordination, ratelimiter, scheme, scripting and table clients from
internal/lazy
package to each client initialization withsync.Once
- Removed
internal/lazy
package - Added retry option
retry.WithStackTrace
for wrapping errors with stacktrace
- Fixed re-opening case after close lazy-initialized clients
- Removed dependency of call context for initializing lazy table client
- Added
config.AutoRetry()
flag withtrue
value by default.config.AutoRetry()
affects how to errors handle in sub-clients calls. - Added
config.WithNoAutoRetry
for disabling auto-retry on errors in sub-clients calls - Refactored
internal/lazy
package (supported checkconfig.AutoRetry()
, removed all error wrappings with stacktrace)
- Added
WithTLSConfig
option for redefine TLS config - Added
sugar.LoadCertificatesFromFile
andsugar.LoadCertificatesFromPem
helpers
- Supported
json.Unmarshaler
type for scanning row to values - Reimplemented
sugar.DSN
withnet/url
- Fixed gtrace tool generation code style bug with leading spaces
- Removed accounting load factor (unused field) in balancers
- Enabled by default anonymous credentials
- Enabled by default internal dns resolver
- Removed from defaults
grpc.WithBlock()
option - Added
ydb.Open
method with required param connection string - Marked
ydb.New
method as deprecated - Removed package
dsn
- Added
sugar.DSN
helper for make dsn (connection string) - Refactored package
retry
(movedretryBackoff
andretryMode
implementations tointernal
) - Refactored
config.Config
(remove interfaceConfig
, renamed private structconfig
toConfig
) - Moved
discovery/config
tointernal/discovery/config
- Moved
coordination/config
tointernal/coordination/config
- Moved
scheme/config
tointernal/scheme/config
- Moved
scripting/config
tointernal/scripting/config
- Moved
table/config
tointernal/table/config
- Moved
ratelimiter/config
tointernal/ratelimiter/config
- Fixed race condition on lazy clients first call
- Fixed gofumpt linter issue on
credentials/credentials.go
- Added
table.DefaultTxControl()
transaction control creator with serializable read-write isolation mode and auto-commit - Fixed passing nil query parameters
- Fixed locking of cluster during call
cluster.Get
- Simplified README.md for godoc documentation in pkg.go.dev
- Added public package
dsn
for making piped data source name (connection string) - Marked
ydb.WithEndpoint
,ydb.WithDatabase
,ydb.WithSecure
,ydb.WithInsecure
options as deprecated - Moved
ydb.RegisterParser
to packagedsn
- Added version into all error and warn log messages
- Fixed duplicating
WithPanicCallback
proxying to table config options - Fixed comments for
xerrros.Is
andxerrros.As
- Renamed internal packages
errors
,net
andresolver
toxerrors
,xnet
andxresolver
for excluding ambiguous interpretation - Renamed internal error wrapper
xerrors.New
toxerrors.Wrap
- Added
WithPanicCallback
option to all service configs (discovery, coordination, ratelimiter, scheme, scripting, table) and auto-applying fromydb.WithPanicCallback
- Added panic recovering (if defined
ydb.WithPanicCallback
option) which thrown from retry operation
- Refactored balancers (makes concurrent-safe)
- Excluded separate balancers lock from cluster
- Refactored
cluster.Cluster
interface (Insert
andRemove
returning nothing now) - Replaced unsafe
cluster.close
boolean flag tocluster.done
chan for listening close event - Added internal checker
cluster.isClosed()
for check cluster state - Extracted getting available conn from balancer to internal helper
cluster.get
(called insidecluster.Get
as last effort) - Added checking
conn.Conn
availability withconn.Ping()
in prefer nodeID case
- Added
conn.Ping(ctx)
method for check availability ofconn.Conn
- Refactored
cluster.Cluster.Get(ctx)
to return only available connection (instead of returning any connection from balancer) - Added address to error description thrown from
conn.take()
- Renamed package
internal/db
tointernal/database
to exclude collisions with variable namedb
- Added
go1.18
to test matrix - Added
ydb.WithOperationTimeout
andydb.WithOperationCancelAfter
context modifiers
- Removed redundant
trace.With{Table,Driver,Retry}
andtrace.Context{Table,Driver,Retry}
funcs - Moved
gtrace
tool from./cmd/gtrace
to./internal/cmd/gtrace
- Refactored
gtrace
tool for generateCompose
options - Added panic recover on trace calls in
Compose
call step - Added
trace.With{Discovery,Driver,Coordination,Ratelimiter,Table,Scheme,Scripting}PanicCallback
options - Added
ydb.WithPanicCallback
option
- Fixed bug with check acquire error over
ydb.IsRatelimiterAcquireError
- Added full changelog link to github release description
- Added stacktrace to errors with issues
- Refactored
cluster.Cluster
andbalancer.Balancer
interfaces (removedUpdate
method) - Replaced
cluster.Update
withcluster.Remove
andcluster.Insert
calls - Removed
trace.Driver.OnClusterUpdate
event - Fixed bug with unexpected changing of local datacenter flag in endpoint
- Refactored errors wrapping (stackedError are not ydb error now, checking
errors.IsYdb(err)
witherrors.As
now) - Wrapped retry operation errors with
errors.WithStackTrace(err)
- Changed
trace.RetryLoopStartInfo.Context
type fromcontext.Context
to*context.Context
- Refactored internal operation and transport errors
- Added
config.ExcludeGRPCCodesForPessimization()
opttion for exclude some grpc codes from pessimization rules - Refactored pessimization node conditions
- Added closing of ticker in
conn.Conn.connParker
- Removed
config.WithSharedPool
and usages it - Removed
conn.Creator
interface and usage it - Removed unnecessary options append in
ydb.With
- Added closing
conn.Conn
if discovery client build failure - Added wrapping errors with stacktrace
- Added discharging banned state of
conn.Conn
oncluster.Update
step
- Rollback moving
meta.Meta
call to conn exclusively frominternal/db
andinternal/discovery
- Added
WithMeta()
discovery config option
- Added
config.SharedPool()
setting andconfig.WithSharedPool()
option - Added management of shared pool flag on change dial timeout and credentials
- Removed explicit checks of conditions for use (or not) shared pool in
ydb.With()
- Renamed
internal/db
interfaces - Changed signature of
conn.Conn.Release
(added error as result)
- Removed
WithMeta()
discovery config option - Moved
meta.Meta
call to conn exclusively
- Replaced panic on cluster close to error issues
- Fixed bug in
types.Nullable()
- Refactored package
meta
- Removed explicit call meta in
db.New()
- Added
WithMeta()
discovery config option - Fixed bug with credentials on discovery
- Refactored internal dns-resolver
- Added option
config.WithInternalDNSResolver
for use internal dns-resolver and use resolved IP-address for dialing instead FQDN-address
- Removed all conditions for trace retry errors
- Fixed background color of warn messages
- Added to log messages additional information about error, such as retryable (or not), delete session (or not), etc.
- Added github action for publish release tags
- Refactored version constant (split to major, minor and patch constants)
- Added
table.types.Nullable{*}Value
helpers andtable.types.Nullable()
common helper - Fixed race on check trailer on closing table grpc-stream
- Refactored traces (start and done struct names have prefix about trace)
- Replaced
errors.Error
,errors.Errorf
anderrors.ErrorfSkip
to singleerrors.WithStackTrace
- Refactored table client options
- Declared and implemented interface
errors.isYdbError
for checking ybd/non-ydb errors - Fixed double tracing table do events
- Added
retry.WithFastBackoff
andretry.WithFastBackoff
options - Refactored
table.CreateSession
as retry operation with options - Moved log level from root of repository to package
log
- Added details and address to transport error
- Fixed
recursive
param inratelimiter.ListResource
- Added counting stream usages for exclude park connection if it in use
- Added
trace.Driver
events about change stream usage andconn.Release()
call
- Implemented auto-removing
conn.Conn
fromconn.Pool
with counting usages ofconn.Conn
- Refactored naming of source files which declares service client interfaces
- Fixed bug with update balancer element with nil handle
- Refactored internal error wrapping (with file and line identification) - replaced
fmt.Printf("%w", err)
error wrapping to internalstackError
- Added
balacers.CreateFromConfig
balancer creator - Added
Create
method to interfacebalancer.Balancer
- Added
balacers.FromConfig
balancer creator
- Fixed linter issues
- Fixed race with read/write pool conns on closing conn
- Improved error messages
- Defended
cluster.balancer
withsync.RWMutex
oncluster.Insert
,cluster.Update
,cluster.Remove
andcluster.Get
- Excluded
Close
andPark
methods fromconn.Conn
interface - Fixed bug with
Multi
balancerCreate()
- Improved
errors.IsTransportError
(check a few transport error codes instead check single transport error code) - Improved
errors.Is
(check a few errors instead check single error) - Refactored YDB errors checking API on client-side
- Implemented of scripting traces
- Refactored
Connection
interface - Removed
CustomOption
and taking client with custom options - Removed
proxy
package - Improved
db.With()
helper for child connections creation - Set shared
conn.Pool
for all childrenydb.Connection
- Fixed bug with
RoundRobin
andRandomChoice
balancersCreate()
- Added
trace.Driver.OnConnPark
event - Added
trace.Driver.OnConnClose
event - Fixed bug with closing nil session in table retryer
- Restored repeater
Force
call on pessimize event - Changed mutex type in
conn.Conn
fromsync.Mutex
tosync.RWMutex
for exclude deadlocks - Reverted applying empty
discovery
results tocluster
- Added
balancers.Prefer
andbalancers.PreferWithFallback
constructors
- Added
trace.Driver.OnRepeaterWakeUp
event - Refactored package
repeater
- Added
trace.ClusterInsertDoneInfo.Inserted
boolean flag for notify about success of insert endpoint into balancer - Added
trace.ClusterRemoveDoneInfo.Removed
boolean flag for notify about success of remove endpoint from balancer
- Reverted usage of
math/rand
(insteadcrypto/rand
)
- Imported tool gtrace to
./cmd/gtrace
- Changed minimal version of go from 1.13 to 1.14
- Fixed composing of service traces
- Fixed end-call of
trace.Driver.OnConnStateChange
- Added
trace.EndpointInfo.LastUpdated()
timestamp - Refactored
endpoint.Endpoint
(split to structendopint
and interfaceEndpoint
) - Returned safe-thread copy of
endpoint.Endpoint
to trace callbacks - Added
endpoint.Endpoint.Touch()
func for refresh endpoint info - Added
conn.conn.onClose
slice for call optional funcs on close step - Added removing
conn.Conn
fromconn.Pool
onconn.Conn.Close()
call - Checked cluster close/empty on keeper goroutine
- Fixed
internal.errors.New
wrapping depth - Added context flag for no wrapping operation results as error
- Refactored
trace.Driver
conn events
- Removed internal alias-type
errors.IssuesIterator
- Changed
trace.GetCredentialsDoneInfo
token representation from bool to string - Added
log.Secret
helper for mask token
- Replaced meta in
proxyConnection.Invoke
andproxyConnection.NewStream
- Refactored
internal/cluster.Cluster
(add option for notify about external lock, lock cluster for update cluster endpoints) - Reverted
grpc.ClientConnInterface
API toydb.Connection
- Replaced in
table/types/compare_test.go
checking error by error message to checking witherrors.Is()
- Wrapped internal errors in retry operations
- Excluded error wrapping from retry operations
- Added
ydb.WithTLSSInsecureSkipVerify()
option - Added
trace.Table.OnPoolStateChange
event - Wrapped internal errors with print <func, file, line>
- Removed
trace.Table.OnPoolTake
event (unused) - Refactored
trace.Details
matching by string pattern - Added resolver trace callback
- Refactored initialization step of grpc dial options
- Added internal package
net
withnet.Conn
proxy object - Fixed closing proxy clients
- Added
ydb.Connection.With(opts ...ydb.CustomOption)
for taking proxyydb.Connection
with some redefined options - Added
ydb.MetaRequestType
andydb.MetaTraceID
aliases to internalmeta
package constants - Added
ydb.WithCustomCredentials()
option - Refactored
ydb.Ratelimiter().AcquireResource()
method (added options for defining type of acquire request) - Removed single point to define operation mode params (each grpc-call with
OperationParams
must explicit defineOperationParams
) - Removed defining operation params over context
- Removed
config.RequestTimeout
andconfig.StreamTimeout
(each grpc-call must manage context instead defineconfig.RequestTimeout
orconfig.StreamTimeout
) - Added internal
OperationTimeout
andOperationCancelAfter
to each client (ratelimiter, coordination, table, scheme, scripting, discovery) config.OperationTimeout
andOperationCancelAfter
config params defined from root config
- Extended
trace.Details
constants for support per-service events - Added
trace.Discovery
struct for traces discovery events - Added
trace.Ratelimiter
,trace.Coordination
,trace.Scripting
,trace.Scheme
stubs (will be implements in the future) - Added
ratelimiter/config
,coordination/config
,scripting/config
,scheme/config
,discovery/config
packages for specify per-service configs - Removed
trace.Driver.OnDiscovery
callback (moved totrace.Discovery
) - Refactored initialization step (firstly makes discovery client)
- Removed
internal/lazy.Discovery
(discovery client always initialized) - Fixed
trace.Table
event structs - Refactored grpc options for define dns-balancing configuration
- Refactored
retry.Retry
signature (addedretry.WithID
,retry.WithTrace
andretry.WithIdempotent
opt-in args, required paramisIdempotentOperation
removed) - Refactored package
internal/repeater
- Fixed data race on closing session pool
- Fixed busy loop on call internal logger with external logger implementation of
log.Logger
- Fixed
WithDiscoveryInterval()
option with negative argument (must useSingleConn
balancer)
- Added
WithMinTLSVersion
option
- Removed
ydb.EndpointDatabase
,ydb.ConnectionString
andydb.MustConnectionString
helpers - Removed
ydb.ConnectParams
struct andydb.WithConnectParams
option creator - Added internal package
dsn
for register external parsers and parse connection string - Added
ydb.RegisterParser
method for registering external parser of connection string
- Unwrap sub-tests called as
t.Run(...)
in integration tests - Updated
grpc
dependency (fromv1.38.0
tov1.43.0
) - Updated
protobuf
dependency (fromv1.26.0
tov1.27.1
) - Added internal retryers into
lazy.Ratelimiter
- Added internal retryers into
lazy.Coordination
- Added internal retryers into
lazy.Discovery
- Added internal retryers into
lazy.Scheme
- Added internal retryers into
lazy.Scripting
- Added internal retryer into
lazy.Table.CreateSession
- Fixed version
- Fixed misspell linter issue
- Removed debug print to log
- Refactored session shutdown test
- Ignored session shutdown test if no defined
YDB_SHUTDOWN_URLS
environment variable
- Added
ydb.WithInsecure()
option
- Fixed version
- Fixed syntax error in
CHANGELOG.md
- Fixed
CHANGELOG.md
- Updated
github.com/ydb-platform/ydb-go-genproto
- Fixed
trace.Table.OnPoolDoTx
- addedIdempotent
flag totrace.PoolDoTxStartInfo
- Added
table.result.Result.ScanNamed()
scan function - Changed connection secure to
true
by default - Renamed public package
balancer
tobalancers
(this package contains only constructors of balancers) - Moved interfaces from package
internal/balancer/ibalancer
tointernal/balancer
- Added
NextResultSetErr()
func for select next result set and return error - Added package
table/result/indexed
with interfacesindexed.Required
,indexed.Optional
,indexed.RequiredOrOptional
- Replaced abstract
interface{}
inScan
toindexed.RequiredOrOptional
- Replaced abstract
interface{}
inScanWithDefaults
toindexed.Required
- Replaced
trace.Table.OnPoolRetry
callback totrace.Table.OnPoolDo
andtrace.Table.OnPoolDoTx
callbacks - Supports server hint
session-close
for gracefully shutdown session
- Retry remove directory in
sugar.RemoveRecursive()
for retryable error
- Fixed panic on
result.Reset(nil)
- Replaced
Option
toCustomOption
onConnection
interface methods - Implements
WithCustom[Token,Database]
options for redefine database and token - Removed experimental
balancer.PreferEndpoints[WithFallback][RegEx]
balancers - Supported connections
TTL
withOption
WithConnectionTTL
- Remove unnecessary
WithFastDial
option (lazy connections are always fast inserts into cluster) - Added
Scripting
service client with API methodsExecute()
,StreamExecute()
andExplain()
- Added
String()
method totable.types.Type
interface - Added
With[Custom]UserAgent()
Option
andCustomOption
constructors - Refactored
log.Logger
interface and internal implementation - Added
retry.RetryableError()
for returns user-defined error which must be retryed - Renamed internal type
internal.errors.OperationCompleted
tointernal.errors.OperationStatus
- Added
String()
method totable.KeyRange
andtable.Value
types - Replaced creation of goroutine on each stream call to explicit call stream.Recv() on NextResultSet()
- Refactored table retry helpers
- Added new
PreferLocations[WithFallback][RegEx]
balancers - Added
trace.Details.String()
andtrace.Details.Strings()
helpers - Added
trace.DetailsFromString(s)
andtrace.DetailsFromStrings(s)
helper
- Switched closing cluster after closing all sub-services
- Added windows and macOS runtimes to unit and integration tests
- Added
config/balancer
package with popular balancers - Added new
PreferEndpoints[WithFallback][RegEx]
balancers - Removed
config.BalancerConfig
struct - Refactored internal packages (tree to flat, split balancers to different packages)
- 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)
- Added auto-close stream result on end of stream
- Changed
Logger
interface for support custom loggers - Added public type
LoggerOption
for proxies to internallogger.Option
- Fixed deadlock on table stream requests
- Fixed data race on closing table result
- Added custom dns-resolver to grpc options for use dns-balancing with round_robin balancing policy
- Wrapped with
recover()
system panic on getting system certificates pool - Added linters and fixed issues from them
- Changed API of
sugar
package
- Added system certificates for
darwin
system - Fixed
table.StreamResult
finishing - Fixes
sugar.MakePath()
- Added helper
ydb.MergeOptions()
for merge severalydb.Option
to singleydb.Option
- Added
ClosabelSession
interface which extendsSession
interface and provideClose
method - Added
CreateSession
method intotable.Client
interface - Added
Context
field intotrace.Driver.Net{Dial,Read,Write,Close}StartInfo
structs - Added
Address
field intotrace.Driver.DiscoveryStartInfo
struct - Improved logger options (provide err and out writers, provide external logger)
- Renamed package
table.resultset
totable.result
- Added
trace.Driver.{OnInit,OnClose}
events - Changed unit/integration tests running
- Fixed/added YDB error checkers
- Dropped
ydb.WithDriverConfigOptions
(duplicate ofydb.With
) - Fixed freeze on closing driver
- Fixed
CGO
race onDarwin
system when driver tried to expand tilde on certificates path - Removed
EnsurePathExists
andCleanupDatabase
from API ofscheme.Client
- Added helpers
MakePath
andCleanPath
to root of packageydb-go-sdk
- Removed call
types.Scanner.UnmarshalYDB()
insidescanner.setDefaults()
- Added
DoTx()
API method intotable.Client
- Added
String()
method intoConnectParams
for serialize params to connection string - Added early exit from Rollback for committed transaction
- Moved
HasNextResultSet()
method fromResult
interface to commonresult
interface. It provides access toHasNextResultSet()
on both result interfaces (unary and stream results) - Added public credentials constructors
credentials.NewAnonymousCredentials()
andcredentials.NewAccessTokenCredentials(token)
- Prefer
ydb.table.types.Scanner
scanner implementation oversql.Scanner
, when both available.
- Forced
round_robin
grpc load balancing instead defaultpick_first
- Added checker
IsTransportErrorCancelled
- Simplified
Is{Transport,Operation}Error
- Added
IsYdbError
helper
- Fixed retry reaction on operation error NotFound (non-retryable now)
- Fixed logic bug in
trace.Table.ExecuteDataQuery{Start,Done}Info
- Cleared repeater context for discovery goroutine
- Fixed type of
trace.Details
- Added
table.options.WithPartitioningSettings
- Added
trace.DriverConnEvents
constant
- Stored node ID into
endpoint.Endpoint
struct - Simplified <Host,Port> in
endpoint.Endpoint
to single fqdn Address - On table session requests now preferred the endpoint by
ID
extracted from sessionID
. If endpoint byID
not found - using the endpoint from balancer - Upgraded internal logger for print colored messages
- Fixed compare endpoints func
- Reverted
NodeID
as key for link between session and endpoint because yandex-cloud YDB installation not supportedEndpoint.ID
entity
- Dropped endpoint.Addr entity as unused. After change link type between session and endpoint to NodeID endpoint.Addr became unnecessary for internal logic of driver
- Enabled integration test table pool health
- Fixed race on session stream requests
- Returned context error when context is done on
session.StreamExecuteScanQuery
andsession.StreamReadTable
- Fixed bug of interpret tilda in path of certificates file
- Added chapter to
README.md
about ecosystem of debug tools overydb-go-sdk
- Fixed result type of
RawValue.String
(ydb string compatible) - Fixed scans ydb types into string and slice byte receivers
- Upgraded dependencies
- Added
WithEndpoint
andWithDatabase
Option constructors
- added package
log
with interfacelog.Logger
- implements
trace.Driver
andtrace.Table
withlog.Logger
- added internal leveled logger which implement interface
log.Logger
- supported environment variable
YDB_LOG_SEVERITY_LEVEL
- changed name of the field
RetryAttempts
toAttempts
in the structuretrace.PoolGetDoneInfo
. This change reduces back compatibility, but there are no external uses of v3 sdk, so this change is fine. We are sorry if this change broke your code
- published scheme Client interface
- refactored integration tests
- fixed table retry trace calls
- Refactored sources for splitting public interfaces and internal implementation for core changes in the future without change major version
- 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. - Much changed API of driver for easy usage.
- Dropped package
ydbsql
(moved to external project) - Extracted yandex-cloud authentication to external project
- Extracted examples to external project
- Changed of traces API for next usage in jaeger и prometheus
- Dropped old APIs marked as
deprecated
- Added integration tests with docker ydb container
- Changed table session and endpoint link type from string address to integer NodeID
- Added possibility to override
x-ydb-database
metadata value
- Fixed context cancellation inside repeater loop
- Fixed data race on cluster get/pessimize
- Dropped internal cluster connections tracker
- Switched initial connect to all endpoints after discovery to lazy connect
- Added reconnect for broken conns
- Thrown context without deadline into discovery goroutine
- Added
Address
param toDiscoveryStartInfo
struct - Forced
round_bobin
grpc load balancing config instead defaultpick_first
- Fixed applying driver trace from context in
connect.New
- Excluded using session pool usage for create/take sessions in
database/sql
driver implementation. Packageydbsql
withdatabase/sql
driver implementation used directCreateSession
table client call in the best effort loop
- Fixed panic when ready conns is zero
- Initialized repeater permanently regardless of the value
DriverConfig.DiscoveryInterval
This change allow forcing re-discovery depends on cluster state
- Returned context error when context is done on
StreamExecuteScanQuery
- Fixed
mapBadSessionError()
inydbsql
package
- Fixed race on
ydbsql
concurrent connect. This hotfix only for v2 version
- Added
GlobalAsyncIndex
implementation of index interface
- Replaced
<session, endpoint>
link type from raw conn to plain endpoint address - Moved checking linked endpoint from
driver.{Call,StreamRead}
tocluster.Get
- Added pessimization endpoint code for
driver.StreamRead
if transport error received - Setted transport error
Cancelled
as needs to remove session from pool - Deprecated connection use policy (used auto policy)
- Fixed goroutines leak on StreamRead call
- Fixed force re-discover on receive error after 1 second
- Added timeout to context in
cluster.Get
if context deadline not defined
- Renamed context idempotent operation flag
- Forced cancelled transport error as retriable (only idempotent operations)
- Renamed some internal retry mode types
- Forced grpc keep-alive PermitWithoutStream parameter to true
- Added errors without panic
- Added check nil grpc.ClientConn connection
- Processed nil connection error in keeper loop
- Added RawValue and supported ydb.Scanner in Scan
- Added NextResultSet for both streaming and non-streaming operations
- Dropped busy checker logic
- Refactoring of
RetryMode
,RetryChecker
andRetryer
- Added fast/slow retry logic
- Supported context param for retry operation with no idempotent errors
- Added secondary indexes info to table describing method
- fix panic on lazy put to full pool
- Exported
SessionProvider.CloseSession
func - Implements by default async closing session and putting busy session into pool
- Added some session pool trace funcs for execution control of goroutines in tests
- Switched internal session pool boolean field closed from atomic usage to mutex-locked usage
- Added panic on double scan per row
- Supported nil and time conventions for scanner
- Reverted adds async sessionGet and opDo into
table.Retry
. - Added
sessionClose()
func intoSessionProvider
interface.
- Remove ready queue from session pool
- Fix put session into pool
- Fix panic on operate with result scanner
- Fix lock on write to chan in case when context is done
- Added
ScanRaw
for scan results as struct, list, tuple, map - Created
RawScanner
interface in order to generate method With
- Fixed deadlock in the session pool
- Added new scanner API.
- Fixed dualism of interpret data (default values were deprecated for optional values)
- Fixed
internal/stats/series.go
(index out of range) - Optimized rotate buckets in the
Series
- Moved
api/wrap.go
to root for next replacement api package to external genproto
- Correct session pool tests
- Fixed conditions with KeepAliveMinSize and
IdleKeepAliveThreshold
- Added credentials connect options:
connect.WithAccessTokenCredentials(accessToken)
connect.WithAnonymousCredentials()
connect.WithMetadataCredentials(ctx)
connect.WithServiceAccountKeyFileCredentiials(serviceAccountKeyFile)
- Added auth examples:
example/auth/environ
example/auth/access_token_credentials
example/auth/anonymous_credentials
example/auth/metadata_credentials
example/auth/service_account_credentials
- Fixed returning error from
table.StreamExecuteScanQuery
- Supported loading certs from file using
YDB_SSL_ROOT_CERTIFICATES_FILE
environment variable
- Fixed erasing session from pool if session keep-alive count great then
IdleKeepAliveThreshold
- Add major session pool config params as
connect.WithSessionPool*()
options
- Added panic for wrong
NextSet
/NextStreamSet
call
- Fixed infinite keep alive session on transport errors
Cancelled
andDeadlineExceeded
- Fixed parser of connection string
- Fixed
EnsurePathExists
andCleanupDatabase
methods - Fixed
basic_example_v1
- Renamed example cli flag
-link=connectionString
to-ydb=connectionString
for connection string to YDB - Added
-connect-timeout
flag to example cli - Fixed some linter issues
- Renamed package ydbx to connect. New usage semantic:
connect.New()
insteadydbx.Connect()
- Added
healthcheck
example - Fixed all examples with usage connect package
- Dropped
example/internal/ydbutil
package - Simplified API of Traces - replace all pairs start/done to single handler with closure.
- Fixed
WithYdbCA
at nil certPool case
- Fixed package name of
ydbx
- Added
ydbx
package
- Fixed
fmt.Errorf
error wrapping and some linter issues
- Added helper for create credentials from environ
- Added anonymous credentials
- Move YDB Certificate Authority from auth/iam package to root package. YDB CA need to dial with dedicated YDB and not need to dial with IAM. YDB CA automatically added to all grpc calling
- Added
Compose
method to traces
- Load YDB certificates by default with TLS connection
- Support scan-query method in
ydbsql
(database/sql API)
- Use
github.com/golang-jwt/jwt
instead ofgithub.com/dgrijalva/jwt-go
- Append (if not exits) SYNC Operation mode on table calls: *Session, *DataQuery, *Transaction, KeepAlive
- Remove unused ContextDeadlineMapping driver config (always used default value)
- Simplify operation params logic
- Append (if not exits) SYNC Operation mode on ExecuteDataQuery call
- Fixed timeout and cancellation setting for YDB operations
- Introduced possibility to use
ContextDeadlineNoMapping
once again
- Negative
table.Client.MaxQueryCacheSize
will disable a client query cache now - Refactoring of
meta.go
for simple adding in the future new headers to requests - Added support
x-ydb-trace-id
as standard SDK header
- Implements smart lazy createSession for best control of create/delete session balance. This feature fix leakage of forgotten sessions on server-side
- Some imporvements of session pool stats
- Fix closing sessions on PutBusy()
- Force setting operation timeout from client context timeout (if this timeout less then default operation timeout)
- Added helper
ydb.ContextWithoutDeadline
for clearing existing context from any deadlines
- SDK versioning switched to
Semantic Versioning 2.0.0
- Added
table.TimeToLiveSettings
struct and correspondingtable.WithTimeToLiveSettings
,table.WithSetTimeToLive
andtable.WithDropTimeToLive
options. - Deprecated
table.TTLSettings
struct alongside withtable.WithTTL
,table.WithSetTTL
andtable.WithDropTTL
functions.
- Add Truncated flag support.
- Fixed a race between
SessionPool.Put
andSessionPool.Get
, where the latter would end up waiting forever for a session that is already in the pool.
- Changed semantics of
table.Result.O...
methods (e.g.,OUTF8
): it will not fail if current item is non-optional primitive.
- added CommitTx method, which returns QueryStats
- re-implementation of ydb.Value comparison
- fix basic examples
- increase default and minimum
Dialer.KeepAlive
setting
- added
ydbsql/connector
options to configure default list ofExecDataQueryOption
- tune
grpc.Conn
behaviour
- function to compare two ydb.Value
- support scan query execution
- add table Ttl options
- added
KeyBloomFilter
support forCreateTable
,AlterTable
andDescribeTalbe
- added
PartitioningSettings
support forCreateTable
,AlterTable
andDescribeTalbe
. Move toPartitioningSettings
object
- add
FastDial
option toDriverConfig
. This will allowDialer
to returnDriver
as soon as the 1st connection is ready.
- parallelize endpoint operations
- added
ProcessCPUTime
method toQueryStats
- added
ReadReplicasSettings
support forCreateTable
,AlterTable
andDescribeTalbe
- added
StorageSettings
support forCreateTable
,AlterTable
andDescribeTalbe
- added
PartitioningSettings
support forCreateTable
andAlterTable
- added
CPUTime
andAffectedShards
fields toQueryPhase
struct - added
CompilationStats
statistics
- support manage table attributes
- support Column Families
- support new types: DyNumber, JsonDocument
- added coordination service
- added rate_limiter service
- made
api
wrapper forinternal
api subset
- return TableStats and PartitionStats on DescribeTable request with options
- added
ydbsql/connector
option to configureDefaultTxControl
- support go modules tooling for ydbgen
- refactored
InstanceServiceAccount
: refresh token in background. Also, will never produce error on creation - added getting
ydb.Credentials
examples
- exported internal
api.Wrap
/api.Unwrap
methods and linked structures
- return on discovery only endpoints that match SSL status of driver
- added GCP metadata auth style with
InstanceServiceAccount
inauth.iam
- fix race in
auth.metadata
- fix races in test hooks
- set limits to grpc
MaxCallRecvMsgSize
andMaxCallSendMsgSize
to 64MB - remove deprecated IAM (jwt)
Client
structure - fix panic on nil dereference while accessing optional fields of
IssueMessage
message
- added options to
DescribeTable
request - added
ydbsql/connector
options to configurepool
sKeepAliveBatchSize
,KeepAliveTimeout
,CreateSessionTimeout
,DeleteTimeout
- set session keepAlive period to 5 min - same as in other SDKs
- fix panic on access to index after pool close
- added session pre-creation limit check in pool
- added discovery trigger on more then half unhealthy transport connects
- await transport connect only if no healthy connections left
- support cloud IAM (jwt) authorization from service account file
- minimum version of Go become 1.13. Started support of new
errors
features