-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release 2.0.0 #383
Release 2.0.0 #383
Conversation
cdb1e1a
to
9321b90
Compare
9321b90
to
7e9dab7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ceb9b5a
to
8427f79
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One small comment.
8427f79
to
c675c8c
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Overview There are a lot of changes in the new major version. The main ones: * The `go_tarantool_call_17` build tag is no longer needed, since by default the `CallRequest` is `Call17Request`. * The `go_tarantool_msgpack_v5` build tag is no longer needed, since only the `msgpack/v5` library is used. * The `go_tarantool_ssl_disable` build tag is no longer needed, since the connector is no longer depends on `OpenSSL` by default. You could use the external library go-tlsdialer[1] to create a connection with the `ssl` transport. * Required Go version is `1.20` now. * The `Connect` function became more flexible. It now allows to create a connection with cancellation and a custom `Dialer` implementation. * It is required to use `Request` implementation types with the `Connection.Do` method instead of `Connection.<Request>` methods. * The `connection_pool` package renamed to `pool`. See the migration guide[2] for more details. Breaking changes connection_pool renamed to pool (#239). Use msgpack/v5 instead of msgpack.v2 (#236). Call/NewCallRequest = Call17/NewCall17Request (#235). Change encoding of the queue.Identify() UUID argument from binary blob to plain string. Needed for upgrade to Tarantool 3.0, where a binary blob is decoded to a varbinary object (#313). Use objects of the Decimal type instead of pointers (#238). Use objects of the Datetime type instead of pointers (#238). `connection.Connect` no longer return non-working connection objects (#136). This function now does not attempt to reconnect and tries to establish a connection only once. Function might be canceled via context. Context accepted as first argument. `pool.Connect` and `pool.Add` now accept context as the first argument, which user may cancel in process. If `pool.Connect` is canceled in progress, an error will be returned. All created connections will be closed. `iproto.Feature` type now used instead of `ProtocolFeature` (#337). `iproto.IPROTO_FEATURE_` constants now used instead of local `Feature` constants for `protocol` (#337). Change `crud` operations `Timeout` option type to `crud.OptFloat64` instead of `crud.OptUint` (#342). Change all `Upsert` and `Update` requests to accept `*tarantool.Operations` as `ops` parameters instead of `interface{}` (#348). Change `OverrideSchema(*Schema)` to `SetSchema(Schema)` (#7). Change values, stored by pointers in the `Schema`, `Space`, `Index` structs, to be stored by their values (#7). Make `Dialer` mandatory for creation a single connection (#321). Remove `Connection.RemoteAddr()`, `Connection.LocalAddr()`. Add `Addr()` function instead (#321). Remove `Connection.ClientProtocolInfo`, `Connection.ServerProtocolInfo`. Add `ProtocolInfo()` function instead, which returns the server protocol info (#321). `NewWatcher` checks the actual features of the server, rather than relying on the features provided by the user during connection creation (#321). `pool.NewWatcher` does not create watchers for connections that do not support it (#321). Rename `pool.GetPoolInfo` to `pool.GetInfo`. Change return type to `map[string]ConnectionInfo` (#321). `Response` is now an interface (#237). All responses are now implementations of the `Response` interface (#237). `SelectResponse`, `ExecuteResponse`, `PrepareResponse`, `PushResponse` are part of a public API. `Pos()`, `MetaData()`, `SQLInfo()` methods created for them to get specific info. Special types of responses are used with special requests. `IsPush()` method is added to the response iterator (#237). It returns the information if the current response is a `PushResponse`. `PushCode` constant is removed. Method `Get` for `Future` now returns response data (#237). To get the actual response new `GetResponse` method has been added. Methods `AppendPush` and `SetResponse` accept response `Header` and data as their arguments. `Future` constructors now accept `Request` as their argument (#237). Operations `Ping`, `Select`, `Insert`, `Replace`, `Delete`, `Update`, `Upsert`, `Call`, `Call16`, `Call17`, `Eval`, `Execute` of a `Connector` and `Pooler` return response data instead of an actual responses (#237). `pool.Connect`, `pool.ConnetcWithOpts` and `pool.Add` use a new type `pool.Instance` to determinate connection options (#356). `pool.Connect`, `pool.ConnectWithOpts` and `pool.Add` add connections to the pool even it is unable to connect to it (#372). Required Go version from `1.13` to `1.20` (#378). multi subpackage is removed (#240). msgpack.v2 support is removed (#236). pool/RoundRobinStrategy is removed (#158). DeadlineIO is removed (#158). UUID_extId is removed (#158). IPROTO constants are removed (#158). Code() method from the Request interface is removed (#158). `Schema` field from the `Connection` struct is removed (#7). `OkCode` and `PushCode` constants is removed (#237). SSL support is removed (#301). `Future.Err()` method is removed (#382). New features Type() method to the Request interface (#158). Enumeration types for RLimitAction/iterators (#158). IsNullable flag for Field (#302). Meaningful description for read/write socket errors (#129). Support `operation_data` in `crud.Error` (#330). Support `fetch_latest_metadata` option for crud requests with metadata (#335). Support `noreturn` option for data change crud requests (#335). Support `crud.schema` request (#336, #351). Support `IPROTO_WATCH_ONCE` request type for Tarantool version >= 3.0.0-alpha1 (#337). Support `yield_every` option for crud select requests (#350). Support `IPROTO_FEATURE_SPACE_AND_INDEX_NAMES` for Tarantool version >= 3.0.0-alpha1 (#338). It allows to use space and index names in requests instead of their IDs. `GetSchema` function to get the actual schema (#7). Support connection via an existing socket fd (#321). `Header` struct for the response header (#237). It can be accessed via `Header()` method of the `Response` interface. `Response` method added to the `Request` interface (#237). New `LogAppendPushFailed` connection log constant (#237). It is logged when connection fails to append a push response. `ErrorNo` constant that indicates that no error has occurred while getting the response (#237). `AuthDialer` type for creating a dialer with authentication (#301). `ProtocolDialer` type for creating a dialer with `ProtocolInfo` receiving and check (#301). `GreetingDialer` type for creating a dialer, that fills `Greeting` of a connection (#301). New method `Pool.DoInstance` to execute a request on a target instance in a pool (#376). Bugfixes Race condition at roundRobinStrategy.GetNextConnection() (#309). Incorrect decoding of an MP_DECIMAL when the `scale` value is negative (#314). Incorrect options (`after`, `batch_size` and `force_map_call`) setup for crud.SelectRequest (#320). Incorrect options (`vshard_router`, `fields`, `bucket_id`, `mode`, `prefer_replica`, `balance`) setup for crud.GetRequest (#335). Splice update operation accepts 3 arguments instead of 5 (#348). Unable to use a slice of custom types as a slice of tuples or objects for `crud.*ManyRequest/crud.*ObjectManyRequest` (#365). Testing More linters on CI (#310). Added an ability to mock connections for tests (#237). Added new types `MockDoer`, `MockRequest` to `test_helpers`. Fixed flaky decimal/TestSelect (#300). Fixed tests with crud 1.4.0 (#336). Fixed tests with case sensitive SQL (#341). Renamed `StrangerResponse` to `MockResponse` (#237). Other All Connection.<Request>, Connection.<Request>Typed and Connection.<Request>Async methods are now deprecated. Instead you should use requests objects + Connection.Do() (#241). All ConnectionPool.<Request>, ConnectionPool.<Request>Typed and ConnectionPool.<Request>Async methods are now deprecated. Instead you should use requests objects + ConnectionPool.Do() (#241). box.session.push() usage is deprecated: Future.AppendPush() and Future.GetIterator() methods, ResponseIterator and TimeoutResponseIterator types (#324). 1. https://github.com/tarantool/go-tlsdialer 2. https://github.com/tarantool/go-tarantool/blob/master/MIGRATION.md
c675c8c
to
abcc5ac
Compare
Overview
There are a lot of changes in the new major version. The main ones:
go_tarantool_call_17
build tag is no longer needed, since by default theCallRequest
isCall17Request
.go_tarantool_msgpack_v5
build tag is no longer needed, since only themsgpack/v5
library is used.go_tarantool_ssl_disable
build tag is no longer needed, since the connector is no longer depends onOpenSSL
by default. You could use the external library go-tlsdialer to create a connection with thessl
transport.1.20
now.Connect
function became more flexible. It now allows to create a connection with cancellation and a customDialer
implementation.Request
implementation types with theConnection.Do
method instead ofConnection.<Request>
methods.connection_pool
package renamed topool
.See the migration guide for more details.
Breaking changes
identify()
as string instead of binary #313).connection.Connect
no longer return non-working connection objects (v2: restart on connection create #136). This function now does not attempt to reconnect and tries to establish a connection only once. Function might be canceled via context. Context accepted as first argument.pool.Connect
andpool.Add
now accept context as the first argument, which user may cancel in process. Ifpool.Connect
is canceled in progress, an error will be returned. All created connections will be closed.iproto.Feature
type now used instead ofProtocolFeature
(Support IPROTO_WATCH_ONCE #337).iproto.IPROTO_FEATURE_
constants now used instead of localFeature
constants forprotocol
(Support IPROTO_WATCH_ONCE #337).crud
operationsTimeout
option type tocrud.OptFloat64
instead ofcrud.OptUint
(v2: consider reworking timeout value #342).Upsert
andUpdate
requests to accept*tarantool.Operations
asops
parameters instead ofinterface{}
(v2: invalid delete(, insert?) and splice update operations #348).OverrideSchema(*Schema)
toSetSchema(Schema)
(v2: soft automatic schema reload #7).Schema
,Space
,Index
structs, to be stored by their values (v2: soft automatic schema reload #7).Dialer
mandatory for creation a single connection (Create connection from socket fd #321).Connection.RemoteAddr()
,Connection.LocalAddr()
. AddAddr()
function instead (Create connection from socket fd #321).Connection.ClientProtocolInfo
,Connection.ServerProtocolInfo
. AddProtocolInfo()
function instead, which returns the server protocol info (Create connection from socket fd #321).NewWatcher
checks the actual features of the server, rather than relying on the features provided by the user during connection creation (Create connection from socket fd #321).pool.NewWatcher
does not create watchers for connections that do not support it (Create connection from socket fd #321).pool.GetPoolInfo
topool.GetInfo
. Change return type tomap[string]ConnectionInfo
(Create connection from socket fd #321).Response
is now an interface (v2: ability to mock Connector.Do()/Future/Response in tests #237).Response
interface (v2: ability to mock Connector.Do()/Future/Response in tests #237).SelectResponse
,ExecuteResponse
,PrepareResponse
,PushResponse
are part of a public API.Pos()
,MetaData()
,SQLInfo()
methods created for them to get specific info. Special types of responses are used with special requests.IsPush()
method is added to the response iterator (v2: ability to mock Connector.Do()/Future/Response in tests #237). It returns the information if the current response is aPushResponse
.PushCode
constant is removed.Get
forFuture
now returns response data (v2: ability to mock Connector.Do()/Future/Response in tests #237). To get the actual response newGetResponse
method has been added. MethodsAppendPush
andSetResponse
accept responseHeader
and data as their arguments.Future
constructors now acceptRequest
as their argument (v2: ability to mock Connector.Do()/Future/Response in tests #237).Ping
,Select
,Insert
,Replace
,Delete
,Update
,Upsert
,Call
,Call16
,Call17
,Eval
,Execute
of aConnector
andPooler
return response data instead of an actual responses (v2: ability to mock Connector.Do()/Future/Response in tests #237).pool.Connect
,pool.ConnetcWithOpts
andpool.Add
use a new typepool.Instance
to determinate connection options (v2: improve pool.Connect interface #356).pool.Connect
,pool.ConnectWithOpts
andpool.Add
add connections to the pool even it is unable to connect to it (pool: improve pool.Connect logic #372).1.13
to1.20
(gomod: bump go to 1.20 #378).Schema
field from theConnection
struct is removed (v2: soft automatic schema reload #7).OkCode
andPushCode
constants is removed (v2: ability to mock Connector.Do()/Future/Response in tests #237).Future.Err()
method is removed (api: remove Future.Err() #382).New features
operation_data
incrud.Error
(crud: supportoperation_data
in errors #330).fetch_latest_metadata
option for crud requests with metadata (CRUD API improvements #335).noreturn
option for data change crud requests (CRUD API improvements #335).crud.schema
request (crud: support schema #336, crud: support schema opts #351).IPROTO_WATCH_ONCE
request type for Tarantool version >= 3.0.0-alpha1 (Support IPROTO_WATCH_ONCE #337).yield_every
option for crud select requests (crud: support yield_every in select #350).IPROTO_FEATURE_SPACE_AND_INDEX_NAMES
for Tarantool version >= 3.0.0-alpha1 (Support IPROTO_FEATURE_SPACE_AND_INDEX_NAMES #338). It allows to use space and index names in requests instead of their IDs.GetSchema
function to get the actual schema (v2: soft automatic schema reload #7).Header
struct for the response header (v2: ability to mock Connector.Do()/Future/Response in tests #237). It can be accessed viaHeader()
method of theResponse
interface.Response
method added to theRequest
interface (v2: ability to mock Connector.Do()/Future/Response in tests #237).LogAppendPushFailed
connection log constant (v2: ability to mock Connector.Do()/Future/Response in tests #237). It is logged when connection fails to append a push response.ErrorNo
constant that indicates that no error has occurred while getting the response (v2: ability to mock Connector.Do()/Future/Response in tests #237).AuthDialer
type for creating a dialer with authentication (Disable SSL by default #301).ProtocolDialer
type for creating a dialer withProtocolInfo
receiving and check (Disable SSL by default #301).GreetingDialer
type for creating a dialer, that fillsGreeting
of a connection (Disable SSL by default #301).Pool.DoInstance
to execute a request on a target instance in a pool (pool: add abiliry to make a request by an instance name #376).Bugfixes
scale
value is negative (decimal: incorrect MP_DECIMAL decoding with scale < 0 #314).after
,batch_size
andforce_map_call
) setup for crud.SelectRequest (How implement struct for use in crud insert request? #320).vshard_router
,fields
,bucket_id
,mode
,prefer_replica
,balance
) setup for crud.GetRequest (CRUD API improvements #335).crud.*ManyRequest/crud.*ObjectManyRequest
(crud: typed batches #365).Testing
MockDoer
,MockRequest
totest_helpers
.StrangerResponse
toMockResponse
(v2: ability to mock Connector.Do()/Future/Response in tests #237).Other