Commit ceb9b5a
committed
Release 2.0.0
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.md1 parent 86abcdd commit ceb9b5a
1 file changed
+39
-12
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
13 | 40 | | |
14 | 41 | | |
15 | 42 | | |
16 | 43 | | |
17 | 44 | | |
18 | | - | |
| 45 | + | |
19 | 46 | | |
20 | 47 | | |
21 | 48 | | |
22 | | - | |
| 49 | + | |
23 | 50 | | |
24 | 51 | | |
25 | 52 | | |
26 | | - | |
| 53 | + | |
27 | 54 | | |
28 | 55 | | |
29 | 56 | | |
| |||
37 | 64 | | |
38 | 65 | | |
39 | 66 | | |
40 | | - | |
| 67 | + | |
41 | 68 | | |
42 | 69 | | |
43 | 70 | | |
44 | 71 | | |
45 | | - | |
| 72 | + | |
46 | 73 | | |
47 | 74 | | |
48 | 75 | | |
| |||
54 | 81 | | |
55 | 82 | | |
56 | 83 | | |
57 | | - | |
58 | | - | |
59 | | - | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
60 | 87 | | |
61 | 88 | | |
62 | 89 | | |
63 | 90 | | |
64 | 91 | | |
65 | | - | |
| 92 | + | |
66 | 93 | | |
67 | 94 | | |
68 | 95 | | |
69 | | - | |
| 96 | + | |
70 | 97 | | |
71 | 98 | | |
72 | | - | |
| 99 | + | |
73 | 100 | | |
74 | 101 | | |
75 | 102 | | |
| |||
103 | 130 | | |
104 | 131 | | |
105 | 132 | | |
106 | | - | |
| 133 | + | |
107 | 134 | | |
108 | 135 | | |
109 | 136 | | |
| |||
0 commit comments