Skip to content

Releases: tarantool/go-tarantool

v2.1.0

06 Mar 10:26
Compare
Choose a tag to compare

Overview

The small release improves the ConnectionPool. The ConnectionPool is no longer required execute access for box.info from a user for Tarantool >= 3.0.0.

Breaking changes

There are no breaking changes in the release.

New features

  • execute access for box.info is no longer required for ConnectionPool for a Tarantool version >= 3.0.0 (#380).

Bugfixes

  • ConnectionPool.Remove() does not notify a ConnectionHandler after an instance is already removed from the pool (#385).

v2.0.0

12 Feb 16:57
Compare
Choose a tag to compare

Overview

There are many 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 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 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 are 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 (`...
Read more

v1.12.2

11 Jan 10:25
Compare
Choose a tag to compare

Overview

The patch release imports fixes from the master branch.

Breaking changes

There are no breaking changes in the release.

Bugfixes

  • Tests with crud 1.4.0 (#336).
  • Tests with case sensitive SQL (#341).
  • Potentially packet length overflow when reading (#361).

v1.12.1

07 Aug 11:49
Compare
Choose a tag to compare

Overview

The patch release imports fixes from the master branch.

Breaking changes

There are no breaking changes in the release.

Bugfixes

  • Flaky decimal/TestSelect (#300).
  • 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).

Other

  • 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).

v1.12.0

07 Jun 08:54
Compare
Choose a tag to compare

Overview

The release introduces the ability to gracefully close Connection and ConnectionPool and also provides methods for adding or removing an endpoint from a ConnectionPool.

Breaking changes

There are no breaking changes in the release.

New features

  • ConnectionPool.Add()/ConnectionPool.Remove() to add/remove endpoints from a pool (#290).
  • Connection.CloseGraceful() unlike Connection.Close() waits for all requests to complete (#257).
  • ConnectionPool.CloseGraceful() unlike ConnectionPool.Close() waits for all requests to complete (#257).

Other

  • Updates crud tests with Tarantool 3.0 (#293).
  • Updates SQL tests with Tarantool 3.0 (#295).

v1.11.0

18 May 12:23
Compare
Choose a tag to compare

Overview

The release adds pagination support and wrappers for the crud module.

Breaking changes

There are no breaking changes in the release.

New features

  • Support pagination (#246).
  • Support CRUD API (#108).
  • An ability to replace a base network connection to a Tarantool instance (#265).
  • A Makefile target to test with race detector (#218).
  • Missed iterator constant (#285).

Bugfixes

  • Several non-critical data race issues (#218).
  • Build on Apple M1 with OpenSSL (#260).
  • ConnectionPool does not properly handle disconnection with Opts.Reconnect set (#272).
  • Connect() panics on concurrent schema update (#278).
  • Wrong Ttr setup by Queue.Cfg() (#278).
  • Flaky queue/Example_connectionPool (#278).
  • Flaky queue/Example_simpleQueueCustomMsgPack (#277).

Other

  • queue module version bumped to 1.3.0 (#278).

v1.10.0

31 Dec 07:03
Compare
Choose a tag to compare

Overview

The release improves compatibility with new Tarantool versions.

Breaking changes

There are no breaking changes in the release.

New features

  • Support iproto feature discovery (#120).
  • Support errors extended information (#209).
  • Support error type in MessagePack (#209).
  • Support event subscription (#119).
  • Support session settings (#215).
  • Support pap-sha256 authorization method (Tarantool EE feature) (#243).
  • Support graceful shutdown (#214).

Bugfixes

  • Decimal package uses a test variable DecimalPrecision instead of a package-level variable decimalPrecision (#233).
  • Flaky test TestClientRequestObjectsWithContext (#244).
  • Flaky test multi/TestDisconnectAll (#234).

v1.9.0

02 Nov 14:47
Compare
Choose a tag to compare

Overview

The release adds support for the latest version of the queue package with master-replica switching.

Breaking changes

There are no breaking changes in the release.

New features

  • Support the queue 1.2.1 (#177).
  • ConnectionHandler interface for handling changes of connections in ConnectionPool (#178).
  • Execute, ExecuteTyped and ExecuteAsync methods to ConnectionPool (#176).
  • ConnectorAdapter type to use ConnectionPool as Connector interface (#176).
  • An example how to use queue and connection_pool subpackages together (#176).

Bugfixes

  • Mode type description in the connection_pool subpackage (#208).
  • Missed Role type constants in the connection_pool subpackage (#208).
  • ConnectionPool does not close UnknownRole connections (#208).
  • Segmentation faults in ConnectionPool requests after disconnect (#208).
  • Addresses in ConnectionPool may be changed from an external code (#208).
  • ConnectionPool recreates connections too often (#208).
  • A connection is still opened after ConnectionPool.Close() (#208).
  • Future.GetTyped() after Future.Get() does not decode response correctly (#213).
  • Decimal package use a test function GetNumberLength instead of a package-level function getNumberLength (#219).
  • Datetime location after encode + decode is unequal (#217).
  • Wrong interval arithmetic with timezones (#221).
  • Invalid MsgPack if STREAM_ID > 127 (#224).
  • queue.Take() returns an invalid task (#222).

v1.8.0

17 Aug 11:46
Compare
Choose a tag to compare

Overview

The minor release with time zones and interval support for datetime.

Also now you can use go-tarantool with msgpack.v5. To do this, add go_tarantool_msgpack_v5 to your build tags:

$ go build -tags=go_tarantool_msgpack_v5 .

Breaking changes

There are no breaking changes in the release.

New features

  • Optional msgpack.v5 usage (#124).
  • TZ support for datetime (#163).
  • Interval support for datetime (#165).

Bugfixes

  • Markdown of documentation for the decimal subpackage (#201).

v1.7.0

04 Aug 11:20
Compare
Choose a tag to compare

Overview

This release adds a number of features. The extending of the public API has become possible with a new way of creating requests. New types of requests are created via chain calls:

selectReq := NewSelectRequest("space").Context(ctx).Index(1).Offset(5).Limit(10)
future := conn.Do(selectReq)

Streams, context and prepared statements support are based on this idea:

stream, err := conn.NewStream()
if response, err := stream.Do(NewBeginRequest().Context(ctx)).Get(); err != nil {
    selectFuture := stream.Do(selectReq)
    commitFuture := stream.Do(NewCommitRequest())
    // ...
}

Breaking changes

  • NewErrorFuture function removed (#190).
  • IPROTO_* constants that identify requests renamed from <Name>Request to <Name>RequestCode (#126)

New features

  • SSL support (#155).
  • IPROTO_PUSH messages support (#67).
  • Public API with request object types (#126).
  • Support decimal type in msgpack (#96).
  • Support datetime type in msgpack (#118).
  • Prepared SQL statements (#117).
  • Context support for request objects (#48).
  • Streams and interactive transactions support (#101).
  • Call16 method, support build tag go_tarantool_call_17 to choose default behavior for Call method as Call17 (#125)

Bugfixes

  • Add ExecuteAsync and ExecuteTyped to common connector interface (#62).