forked from fl00r/go-tarantool-1.6
-
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
crud: support schema #336
Merged
Merged
crud: support schema #336
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Will fail until crud 1.4.0 with tarantool/crud#380 is released |
DifferentialOrange
force-pushed
the
DifferentialOrange/no-gh-crud-schema
branch
3 times, most recently
from
October 12, 2023 12:42
ddd4f53
to
c40a1ec
Compare
DifferentialOrange
force-pushed
the
DifferentialOrange/no-gh-crud-schema
branch
2 times, most recently
from
October 16, 2023 15:30
3d594ee
to
89cd4fc
Compare
DerekBum
approved these changes
Oct 18, 2023
Support `crud.schema` request [1] and response parsing. 1. tarantool/crud#380
After [1], tuple arguments are validated before space validation, so error contents assertion fails. 1. tarantool/crud@6b20c8c
DifferentialOrange
force-pushed
the
DifferentialOrange/no-gh-crud-schema
branch
from
October 18, 2023 13:55
89cd4fc
to
439ea24
Compare
oleg-jukovec
approved these changes
Oct 18, 2023
Merged
oleg-jukovec
added a commit
that referenced
this pull request
Feb 11, 2024
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). More linters on CI (#310). 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 Added an ability to mock connections for tests (#237). Added new types `MockDoer`, `MockRequest` to `test_helpers`. Flaky decimal/TestSelect (#300). Tests with crud 1.4.0 (#336). 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
Merged
oleg-jukovec
added a commit
that referenced
this pull request
Feb 11, 2024
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). More linters on CI (#310). 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 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
oleg-jukovec
added a commit
that referenced
this pull request
Feb 11, 2024
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
oleg-jukovec
added a commit
that referenced
this pull request
Feb 11, 2024
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
oleg-jukovec
added a commit
that referenced
this pull request
Feb 12, 2024
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
oleg-jukovec
added a commit
that referenced
this pull request
Feb 12, 2024
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
oleg-jukovec
added a commit
that referenced
this pull request
Feb 12, 2024
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
oleg-jukovec
added a commit
that referenced
this pull request
Feb 12, 2024
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
oleg-jukovec
added a commit
that referenced
this pull request
Feb 12, 2024
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Support
crud.schema
request [1] and response parsing.What has been done? Why? What problem is being solved?
I didn't forget about (remove if it is not applicable):