- Add
EntryColumnStore
for schema enum
- Add
EntryColumnTable
for schema enum
- Fixed bug with converting
YSON
value to protobuf
- Supported the null type from
YDB
- Fixed double wrapping in
ydbsql.TxDoer
- Stored session close flag if check in
ydbsql
returnsdriver.ErrBadConn
- Fixed error description in
ydbsql.TxDoer.Do
- Refactored wrapping and unwrapping
driver.ErrBadConn
forydbsql
package
- Renamed
database/sql
driver name fromydb
toydb/v2
for exclude driver names collision
- Fixed bug in
scheme.Entry.from()
- Removed early exit from
ydbsql.TxDoer
onretry.Mode.MustDeleteSession()
case
- Implements
io.Closer
interface forydbsql.connector
type (implicit requirement fordatabase/sql
drivers)
- Added
ydbsql.WithCreateSessionTimeout(time.Duration)
connector option
- Added listening of session close event in ydbsql
- Added early exit from ydbsql calls if session already closed
- Added wrapping driver.ErrBadConn for go1.18 clients
- Fixed path of experimental protobuf's
- Fixed bug with convert ydb value to
time.Duration
inresult.Scan[WithDefaults]()
- Fixed bug with make ydb value from
time.Duration
- Marked
ydb.IntervalValue
as deprecated - Added
ydb.IntervalValueFromMicroseconds
- Replaced package
api
togithub.com/ydb-platform/ydb-go-genproto
- Fixed resetting internal timers
- Added custom dns-resolver to grpc options for use dns-balancing
- 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