Documentation ¶
Overview ¶
Example ¶
spaceNo := uint32(513) indexNo := uint32(0) server := "127.0.0.1:3013" opts := tarantool.Opts{ Timeout: 50 * time.Millisecond, Reconnect: 100 * time.Millisecond, MaxReconnects: 3, User: "test", Pass: "test", } client, err := tarantool.Connect(server, opts) if err != nil { fmt.Errorf("Failed to connect: %s", err.Error()) return } resp, err := client.Ping() fmt.Println("Ping Code", resp.Code) fmt.Println("Ping Data", resp.Data) fmt.Println("Ping Error", err) // delete tuple for cleaning client.Delete(spaceNo, indexNo, []interface{}{uint(10)}) client.Delete(spaceNo, indexNo, []interface{}{uint(11)}) // insert new tuple { 10, 1 } resp, err = client.Insert(spaceNo, []interface{}{uint(10), "test", "one"}) fmt.Println("Insert Error", err) fmt.Println("Insert Code", resp.Code) fmt.Println("Insert Data", resp.Data) // insert new tuple { 11, 1 } resp, err = client.Insert("test", &Tuple{Id: 11, Msg: "test", Name: "one"}) fmt.Println("Insert Error", err) fmt.Println("Insert Code", resp.Code) fmt.Println("Insert Data", resp.Data) // delete tuple with primary key { 10 } resp, err = client.Delete(spaceNo, indexNo, []interface{}{uint(10)}) // or // resp, err = client.Delete("test", "primary", UintKey{10}}) fmt.Println("Delete Error", err) fmt.Println("Delete Code", resp.Code) fmt.Println("Delete Data", resp.Data) // replace tuple with primary key 13 // note, Tuple is defined within tests, and has EncdodeMsgpack and DecodeMsgpack // methods resp, err = client.Replace(spaceNo, []interface{}{uint(13), 1}) fmt.Println("Replace Error", err) fmt.Println("Replace Code", resp.Code) fmt.Println("Replace Data", resp.Data) // update tuple with primary key { 13 }, incrementing second field by 3 resp, err = client.Update("test", "primary", tarantool.UintKey{13}, []tarantool.Op{{"+", 1, 3}}) // or // resp, err = client.Update(spaceNo, indexNo, []interface{}{uint(13)}, []interface{}{[]interface{}{"+", 1, 3}}) fmt.Println("Update Error", err) fmt.Println("Update Code", resp.Code) fmt.Println("Update Data", resp.Data) // select just one tuple with primay key { 15 } resp, err = client.Select(spaceNo, indexNo, 0, 1, tarantool.IterEq, []interface{}{uint(15)}) // or // resp, err = client.Select("test", "primary", 0, 1, tarantool.IterEq, tarantool.UintKey{15}) fmt.Println("Select Error", err) fmt.Println("Select Code", resp.Code) fmt.Println("Select Data", resp.Data) // call function 'func_name' with arguments resp, err = client.Call17("simple_incr", []interface{}{1}) fmt.Println("Call17 Error", err) fmt.Println("Call17 Code", resp.Code) fmt.Println("Call17 Data", resp.Data) // run raw lua code resp, err = client.Eval("return 1 + 2", []interface{}{}) fmt.Println("Eval Error", err) fmt.Println("Eval Code", resp.Code) fmt.Println("Eval Data", resp.Data) resp, err = client.Replace("test", &Tuple{Id: 11, Msg: "test", Name: "eleven"}) resp, err = client.Replace("test", &Tuple{Id: 12, Msg: "test", Name: "twelve"}) var futs [3]*tarantool.Future futs[0] = client.SelectAsync("test", "primary", 0, 2, tarantool.IterLe, tarantool.UintKey{12}) futs[1] = client.SelectAsync("test", "primary", 0, 1, tarantool.IterEq, tarantool.UintKey{13}) futs[2] = client.SelectAsync("test", "primary", 0, 1, tarantool.IterEq, tarantool.UintKey{15}) var t []Tuple err = futs[0].GetTyped(&t) fmt.Println("Fut", 0, "Error", err) fmt.Println("Fut", 0, "Data", t) resp, err = futs[1].Get() fmt.Println("Fut", 1, "Error", err) fmt.Println("Fut", 1, "Data", resp.Data) resp, err = futs[2].Get() fmt.Println("Fut", 2, "Error", err) fmt.Println("Fut", 2, "Data", resp.Data)
Output: Ping Code 0 Ping Data [] Ping Error <nil> Insert Error <nil> Insert Code 0 Insert Data [[10 test one]] Insert Error <nil> Insert Code 0 Insert Data [[11 test one]] Delete Error <nil> Delete Code 0 Delete Data [[10 test one]] Replace Error <nil> Replace Code 0 Replace Data [[13 1]] Update Error <nil> Update Code 0 Update Data [[13 4]] Select Error <nil> Select Code 0 Select Data [[15 val 15 bla]] Call17 Error <nil> Call17 Code 0 Call17 Data [2] Eval Error <nil> Eval Code 0 Eval Data [3] Fut 0 Error <nil> Fut 0 Data [{{} 12 test twelve} {{} 11 test eleven}] Fut 1 Error <nil> Fut 1 Data [[13 4]] Fut 2 Error <nil> Fut 2 Data [[15 val 15 bla]]
Index ¶
- Constants
- type ClientError
- type ConnEvent
- type ConnEventKind
- type ConnLogKind
- type Connection
- func (conn *Connection) Addr() string
- func (conn *Connection) Call(functionName string, args interface{}) (resp *Response, err error)
- func (conn *Connection) Call17(functionName string, args interface{}) (resp *Response, err error)
- func (conn *Connection) Call17Async(functionName string, args interface{}) *Future
- func (conn *Connection) Call17Typed(functionName string, args interface{}, result interface{}) (err error)
- func (conn *Connection) CallAsync(functionName string, args interface{}) *Future
- func (conn *Connection) CallTyped(functionName string, args interface{}, result interface{}) (err error)
- func (conn *Connection) Close() error
- func (conn *Connection) ClosedNow() bool
- func (conn *Connection) ConfiguredTimeout() time.Duration
- func (conn *Connection) ConnectedNow() bool
- func (conn *Connection) Delete(space, index interface{}, key interface{}) (resp *Response, err error)
- func (conn *Connection) DeleteAsync(space, index interface{}, key interface{}) *Future
- func (conn *Connection) DeleteTyped(space, index interface{}, key interface{}, result interface{}) (err error)
- func (conn *Connection) Eval(expr string, args interface{}) (resp *Response, err error)
- func (conn *Connection) EvalAsync(expr string, args interface{}) *Future
- func (conn *Connection) EvalTyped(expr string, args interface{}, result interface{}) (err error)
- func (conn *Connection) GetTyped(space, index interface{}, key interface{}, result interface{}) (err error)
- func (conn *Connection) Handle() interface{}
- func (conn *Connection) InUseNow() bool
- func (conn *Connection) Insert(space interface{}, tuple interface{}) (resp *Response, err error)
- func (conn *Connection) InsertAsync(space interface{}, tuple interface{}) *Future
- func (conn *Connection) InsertTyped(space interface{}, tuple interface{}, result interface{}) (err error)
- func (conn *Connection) LocalAddr() string
- func (conn *Connection) OverrideSchema(s *Schema)
- func (conn *Connection) Ping() (resp *Response, err error)
- func (conn *Connection) PrepareExecute(sql string, args map[string]interface{}) (resp *Response, err error)
- func (conn *Connection) PrepareExecuteTyped(sql string, args map[string]interface{}, result interface{}) (err error)
- func (conn *Connection) RemoteAddr() string
- func (conn *Connection) Replace(space interface{}, tuple interface{}) (resp *Response, err error)
- func (conn *Connection) ReplaceAsync(space interface{}, tuple interface{}) *Future
- func (conn *Connection) ReplaceTyped(space interface{}, tuple interface{}, result interface{}) (err error)
- func (conn *Connection) Select(space, index interface{}, offset, limit, iterator uint32, key interface{}) (resp *Response, err error)
- func (conn *Connection) SelectAsync(space, index interface{}, offset, limit, iterator uint32, key interface{}) *Future
- func (conn *Connection) SelectTyped(space, index interface{}, offset, limit, iterator uint32, key interface{}, ...) (err error)
- func (conn *Connection) Update(space, index interface{}, key, ops interface{}) (resp *Response, err error)
- func (conn *Connection) UpdateAsync(space, index interface{}, key, ops interface{}) *Future
- func (conn *Connection) UpdateTyped(space, index interface{}, key, ops interface{}, result interface{}) (err error)
- func (conn *Connection) Upsert(space interface{}, tuple, ops interface{}) (resp *Response, err error)
- func (conn *Connection) UpsertAsync(space interface{}, tuple interface{}, ops interface{}) *Future
- func (conn *Connection) UpsertTyped(space, tuple, ops, result interface{}) (err error)
- type Connector
- type DeadlineIO
- type Error
- type Field
- type Future
- type Greeting
- type Index
- type IndexField
- type IntIntKey
- type IntKey
- type Logger
- type Op
- type OpSplice
- type Opts
- type Response
- type Schema
- type Space
- type StringKey
- type UintKey
Examples ¶
Constants ¶
const ( // Connect signals that connection is established or reestablished Connected ConnEventKind = iota + 1 // Disconnect signals that connection is broken Disconnected // ReconnectFailed signals that attempt to reconnect has failed ReconnectFailed // Either reconnect attempts exhausted, or explicit Close is called Closed // LogReconnectFailed is logged when reconnect attempt failed LogReconnectFailed ConnLogKind = iota + 1 // LogLastReconnectFailed is logged when last reconnect attempt failed, // connection will be closed after that. LogLastReconnectFailed // LogUnexpectedResultId is logged when response with unknown id were received. // Most probably it is due to request timeout. LogUnexpectedResultId )
const ( SelectRequest = 1 InsertRequest = 2 ReplaceRequest = 3 UpdateRequest = 4 DeleteRequest = 5 CallRequest = 6 /* call in 1.6 format */ AuthRequest = 7 EvalRequest = 8 UpsertRequest = 9 Call17Request = 10 ExecuteRequest = 11 PrepareRequest = 13 PingRequest = 64 SubscribeRequest = 66 KeyCode = 0x00 KeySync = 0x01 KeySpaceNo = 0x10 KeyIndexNo = 0x11 KeyLimit = 0x12 KeyOffset = 0x13 KeyIterator = 0x14 KeyKey = 0x20 KeyTuple = 0x21 KeyFunctionName = 0x22 KeyUserName = 0x23 KeyExpression = 0x27 KeyDefTuple = 0x28 KeyData = 0x30 KeyError = 0x31 KeySqlText = 0x40 KeySqlBind = 0x41 KeySqlStmtId = 0x43 KeyPrepareOptions = 0x2b /* DML - any operation that manipulates/changes data */ KeySqlDMLResponseData = 0x42 IterEq = uint32(0) // key == x ASC order IterReq = uint32(1) // key == x DESC order IterAll = uint32(2) // all tuples IterLt = uint32(3) // key < x IterLe = uint32(4) // key <= x IterGe = uint32(5) // key >= x IterGt = uint32(6) // key > x IterBitsAllSet = uint32(7) // all bits from x are set in key IterBitsAnySet = uint32(8) // at least one x's bit is set IterBitsAllNotSet = uint32(9) // all bits are not set RLimitDrop = 1 RLimitWait = 2 OkCode = uint32(0) ErrorCodeBit = 0x8000 PacketLengthBytes = 5 )
const ( ErrConnectionNotReady = 0x4000 + iota ErrConnectionClosed = 0x4000 + iota ErrProtocolError = 0x4000 + iota ErrTimeouted = 0x4000 + iota ErrRateLimited = 0x4000 + iota )
Tarantool client error codes
const ( ER_UNKNOWN uint32 = iota ER_ILLEGAL_PARAMS ER_MEMORY_ISSUE ER_TUPLE_FOUND ER_TUPLE_NOT_FOUND ER_UNSUPPORTED ER_NONMASTER ER_READONLY ER_INJECTION ER_CREATE_SPACE ER_SPACE_EXISTS ER_DROP_SPACE ER_ALTER_SPACE ER_INDEX_TYPE ER_MODIFY_INDEX ER_LAST_DROP ER_TUPLE_FORMAT_LIMIT ER_DROP_PRIMARY_KEY ER_KEY_PART_TYPE ER_EXACT_MATCH ER_INVALID_MSGPACK ER_PROC_RET ER_TUPLE_NOT_ARRAY ER_FIELD_TYPE ER_INDEX_PART_TYPE_MISMATCH ER_UPDATE_SPLICE ER_UPDATE_ARG_TYPE ER_FORMAT_MISMATCH_INDEX_PART ER_UNKNOWN_UPDATE_OP ER_UPDATE_FIELD ER_FUNCTION_TX_ACTIVE ER_KEY_PART_COUNT ER_PROC_LUA ER_NO_SUCH_PROC ER_NO_SUCH_TRIGGER ER_NO_SUCH_INDEX_ID ER_NO_SUCH_SPACE ER_NO_SUCH_FIELD_NO ER_EXACT_FIELD_COUNT ER_FIELD_MISSING ER_WAL_IO ER_MORE_THAN_ONE_TUPLE ER_ACCESS_DENIED ER_CREATE_USER ER_DROP_USER ER_NO_SUCH_USER ER_USER_EXISTS ER_PASSWORD_MISMATCH ER_UNKNOWN_REQUEST_TYPE ER_UNKNOWN_SCHEMA_OBJECT ER_CREATE_FUNCTION ER_NO_SUCH_FUNCTION ER_FUNCTION_EXISTS ER_BEFORE_REPLACE_RET ER_MULTISTATEMENT_TRANSACTION ER_TRIGGER_EXISTS ER_USER_MAX ER_NO_SUCH_ENGINE ER_RELOAD_CFG ER_CFG ER_SAVEPOINT_EMPTY_TX ER_NO_SUCH_SAVEPOINT ER_UNKNOWN_REPLICA ER_REPLICASET_UUID_MISMATCH ER_INVALID_UUID ER_REPLICASET_UUID_IS_RO ER_INSTANCE_UUID_MISMATCH ER_REPLICA_ID_IS_RESERVED ER_INVALID_ORDER ER_MISSING_REQUEST_FIELD ER_IDENTIFIER ER_DROP_FUNCTION ER_ITERATOR_TYPE ER_REPLICA_MAX ER_INVALID_XLOG ER_INVALID_XLOG_NAME ER_INVALID_XLOG_ORDER ER_NO_CONNECTION ER_TIMEOUT ER_ACTIVE_TRANSACTION ER_CURSOR_NO_TRANSACTION ER_CROSS_ENGINE_TRANSACTION ER_NO_SUCH_ROLE ER_ROLE_EXISTS ER_CREATE_ROLE ER_INDEX_EXISTS ER_SESSION_CLOSED ER_ROLE_LOOP ER_GRANT ER_PRIV_GRANTED ER_ROLE_GRANTED ER_PRIV_NOT_GRANTED ER_ROLE_NOT_GRANTED ER_MISSING_SNAPSHOT ER_CANT_UPDATE_PRIMARY_KEY ER_UPDATE_INTEGER_OVERFLOW ER_GUEST_USER_PASSWORD ER_TRANSACTION_CONFLICT ER_UNSUPPORTED_PRIV ER_LOAD_FUNCTION ER_FUNCTION_LANGUAGE ER_RTREE_RECT ER_PROC_C ER_UNKNOWN_RTREE_INDEX_DISTANCE_TYPE ER_PROTOCOL ER_UPSERT_UNIQUE_SECONDARY_KEY ER_WRONG_INDEX_RECORD ER_WRONG_INDEX_PARTS ER_WRONG_INDEX_OPTIONS ER_WRONG_SCHEMA_VERSION ER_MEMTX_MAX_TUPLE_SIZE ER_WRONG_SPACE_OPTIONS ER_UNSUPPORTED_INDEX_FEATURE ER_VIEW_IS_RO ER_NO_TRANSACTION ER_SYSTEM ER_LOADING ER_CONNECTION_TO_SELF ER_KEY_PART_IS_TOO_LONG ER_COMPRESSION ER_CHECKPOINT_IN_PROGRESS ER_SUB_STMT_MAX ER_COMMIT_IN_SUB_STMT ER_ROLLBACK_IN_SUB_STMT ER_DECOMPRESSION ER_INVALID_XLOG_TYPE ER_ALREADY_RUNNING ER_INDEX_FIELD_COUNT_LIMIT ER_LOCAL_INSTANCE_ID_IS_READ_ONLY ER_BACKUP_IN_PROGRESS ER_READ_VIEW_ABORTED ER_INVALID_INDEX_FILE ER_INVALID_RUN_FILE ER_INVALID_VYLOG_FILE ER_CASCADE_ROLLBACK ER_VY_QUOTA_TIMEOUT ER_PARTIAL_KEY ER_TRUNCATE_SYSTEM_SPACE ER_LOAD_MODULE ER_VINYL_MAX_TUPLE_SIZE ER_WRONG_DD_VERSION ER_WRONG_SPACE_FORMAT ER_CREATE_SEQUENCE ER_ALTER_SEQUENCE ER_DROP_SEQUENCE ER_NO_SUCH_SEQUENCE ER_SEQUENCE_EXISTS ER_SEQUENCE_OVERFLOW ER_NO_SUCH_INDEX_NAME ER_SPACE_FIELD_IS_DUPLICATE ER_CANT_CREATE_COLLATION ER_WRONG_COLLATION_OPTIONS ER_NULLABLE_PRIMARY ER_NO_SUCH_FIELD_NAME_IN_SPACE ER_TRANSACTION_YIELD ER_NO_SUCH_GROUP ER_SQL_BIND_VALUE ER_SQL_BIND_TYPE ER_SQL_BIND_PARAMETER_MAX ER_SQL_EXECUTE ER_UPDATE_DECIMAL_OVERFLOW ER_SQL_BIND_NOT_FOUND ER_ACTION_MISMATCH ER_VIEW_MISSING_SQL ER_FOREIGN_KEY_CONSTRAINT ER_NO_SUCH_MODULE ER_NO_SUCH_COLLATION ER_CREATE_FK_CONSTRAINT ER_DROP_FK_CONSTRAINT ER_NO_SUCH_CONSTRAINT ER_CONSTRAINT_EXISTS ER_SQL_TYPE_MISMATCH ER_ROWID_OVERFLOW ER_DROP_COLLATION ER_ILLEGAL_COLLATION_MIX ER_SQL_NO_SUCH_PRAGMA ER_SQL_CANT_RESOLVE_FIELD ER_INDEX_EXISTS_IN_SPACE ER_INCONSISTENT_TYPES ER_SQL_SYNTAX_WITH_POS ER_SQL_STACK_OVERFLOW ER_SQL_SELECT_WILDCARD ER_SQL_STATEMENT_EMPTY ER_SQL_KEYWORD_IS_RESERVED ER_SQL_SYNTAX_NEAR_TOKEN ER_SQL_UNKNOWN_TOKEN ER_SQL_PARSER_GENERIC ER_SQL_ANALYZE_ARGUMENT ER_SQL_COLUMN_COUNT_MAX ER_HEX_LITERAL_MAX ER_INT_LITERAL_MAX ER_SQL_PARSER_LIMIT ER_INDEX_DEF_UNSUPPORTED ER_CK_DEF_UNSUPPORTED ER_MULTIKEY_INDEX_MISMATCH ER_CREATE_CK_CONSTRAINT ER_CK_CONSTRAINT_FAILED ER_SQL_COLUMN_COUNT ER_FUNC_INDEX_FUNC ER_FUNC_INDEX_FORMAT ER_FUNC_INDEX_PARTS ER_NO_SUCH_FIELD_NAME ER_FUNC_WRONG_ARG_COUNT ER_BOOTSTRAP_READONLY ER_SQL_FUNC_WRONG_RET_COUNT ER_FUNC_INVALID_RETURN_TYPE ER_SQL_PARSER_GENERIC_WITH_POS ER_REPLICA_NOT_ANON ER_CANNOT_REGISTER ER_SESSION_SETTING_INVALID_VALUE ER_SQL_PREPARE ER_WRONG_QUERY_ID ER_SEQUENCE_NOT_STARTED ER_NO_SUCH_SESSION_SETTING ER_UNCOMMITTED_FOREIGN_SYNC_TXNS ER_SYNC_MASTER_MISMATCH ER_SYNC_QUORUM_TIMEOUT ER_SYNC_ROLLBACK ER_TUPLE_METADATA_IS_TOO_BIG ER_XLOG_GAP ER_TOO_EARLY_SUBSCRIBE ER_SQL_CANT_ADD_AUTOINC ER_QUORUM_WAIT ER_INTERFERING_PROMOTE ER_ELECTION_DISABLED ER_TXN_ROLLBACK ER_NOT_LEADER ER_SYNC_QUEUE_UNCLAIMED ER_SYNC_QUEUE_FOREIGN ER_UNABLE_TO_PROCESS_IN_STREAM ER_UNABLE_TO_PROCESS_OUT_OF_STREAM ER_TRANSACTION_TIMEOUT ER_ACTIVE_TIMER )
Tarantool server error codes https://github.com/tarantool/tarantool/blob/master/src/box/errcode.h
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClientError ¶
ClientError is connection produced by this client, ie connection failures or timeouts.
func (ClientError) Error ¶
func (clierr ClientError) Error() string
func (ClientError) Temporary ¶
func (clierr ClientError) Temporary() bool
Temporary returns true if next attempt to perform request may succeeed. Currently it returns true when: - Connection is not connected at the moment, - or request is timeouted, - or request is aborted due to rate limit.
type ConnEvent ¶
type ConnEvent struct { Conn *Connection Kind ConnEventKind When time.Time }
ConnEvent is sent throw Notify channel specified in Opts
type ConnEventKind ¶
type ConnEventKind int
type ConnLogKind ¶
type ConnLogKind int
type Connection ¶
type Connection struct { // Schema contains schema loaded on connection. Schema *Schema // Greeting contains first message sent by tarantool Greeting *Greeting // contains filtered or unexported fields }
func Connect ¶
func Connect(addr string, opts Opts) (conn *Connection, err error)
Connect creates and configures new Connection
Address could be specified in following ways:
TCP connections: - tcp://192.168.1.1:3013 - tcp://my.host:3013 - tcp:192.168.1.1:3013 - tcp:my.host:3013 - 192.168.1.1:3013 - my.host:3013 Unix socket: - unix:///abs/path/tnt.sock - unix:path/tnt.sock - /abs/path/tnt.sock - first '/' indicates unix socket - ./rel/path/tnt.sock - first '.' indicates unix socket - unix/:path/tnt.sock - 'unix/' acts as a "host" and "/path..." as a port
Note:
- If opts.Reconnect is zero (default), then connection either already connected or error is returned.
- If opts.Reconnect is non-zero, then error will be returned only if authorization// fails. But if Tarantool is not reachable, then it will attempt to reconnect later and will not end attempts on authorization failures.
func (*Connection) Addr ¶
func (conn *Connection) Addr() string
Addr is configured address of Tarantool socket
func (*Connection) Call ¶
func (conn *Connection) Call(functionName string, args interface{}) (resp *Response, err error)
Call calls registered tarantool function. It uses request code for tarantool 1.6, so result is converted to array of arrays
It is equal to conn.CallAsync(functionName, args).Get().
func (*Connection) Call17 ¶
func (conn *Connection) Call17(functionName string, args interface{}) (resp *Response, err error)
Call17 calls registered tarantool function. It uses request code for tarantool 1.7, so result is not converted (though, keep in mind, result is always array)
It is equal to conn.Call17Async(functionName, args).Get().
func (*Connection) Call17Async ¶
func (conn *Connection) Call17Async(functionName string, args interface{}) *Future
Call17Async sends a call to registered tarantool function and returns Future. It uses request code for tarantool 1.7, so future's result will not be converted (though, keep in mind, result is always array)
func (*Connection) Call17Typed ¶
func (conn *Connection) Call17Typed(functionName string, args interface{}, result interface{}) (err error)
Call17Typed calls registered function. It uses request code for tarantool 1.7, so result is not converted (though, keep in mind, result is always array)
It is equal to conn.Call17Async(functionName, args).GetTyped(&result).
func (*Connection) CallAsync ¶
func (conn *Connection) CallAsync(functionName string, args interface{}) *Future
CallAsync sends a call to registered tarantool function and returns Future. It uses request code for tarantool 1.6, so future's result is always array of arrays
func (*Connection) CallTyped ¶
func (conn *Connection) CallTyped(functionName string, args interface{}, result interface{}) (err error)
CallTyped calls registered function. It uses request code for tarantool 1.6, so result is converted to array of arrays
It is equal to conn.CallAsync(functionName, args).GetTyped(&result).
func (*Connection) Close ¶
func (conn *Connection) Close() error
Close closes Connection. After this method called, there is no way to reopen this Connection.
func (*Connection) ClosedNow ¶
func (conn *Connection) ClosedNow() bool
ClosedNow reports if connection is closed by user or after reconnect.
func (*Connection) ConfiguredTimeout ¶
func (conn *Connection) ConfiguredTimeout() time.Duration
ConfiguredTimeout returns timeout from connection config
func (*Connection) ConnectedNow ¶
func (conn *Connection) ConnectedNow() bool
ConnectedNow reports if connection is established at the moment.
func (*Connection) Delete ¶
func (conn *Connection) Delete(space, index interface{}, key interface{}) (resp *Response, err error)
Delete performs deletion of a tuple by key. Result will contain array with deleted tuple.
It is equal to conn.DeleteAsync(space, tuple).Get().
func (*Connection) DeleteAsync ¶
func (conn *Connection) DeleteAsync(space, index interface{}, key interface{}) *Future
DeleteAsync sends deletion action to tarantool and returns Future. Future's result will contain array with deleted tuple.
func (*Connection) DeleteTyped ¶
func (conn *Connection) DeleteTyped(space, index interface{}, key interface{}, result interface{}) (err error)
DeleteTyped performs deletion of a tuple by key and fills result with deleted tuple.
It is equal to conn.DeleteAsync(space, tuple).GetTyped(&result).
func (*Connection) Eval ¶
func (conn *Connection) Eval(expr string, args interface{}) (resp *Response, err error)
Eval passes lua expression for evaluation.
It is equal to conn.EvalAsync(space, tuple).Get().
func (*Connection) EvalAsync ¶
func (conn *Connection) EvalAsync(expr string, args interface{}) *Future
EvalAsync sends a lua expression for evaluation and returns Future.
func (*Connection) EvalTyped ¶
func (conn *Connection) EvalTyped(expr string, args interface{}, result interface{}) (err error)
EvalTyped passes lua expression for evaluation.
It is equal to conn.EvalAsync(space, tuple).GetTyped(&result).
func (*Connection) GetTyped ¶
func (conn *Connection) GetTyped(space, index interface{}, key interface{}, result interface{}) (err error)
GetTyped performs select (with limit = 1 and offset = 0) to box space and fills typed result.
It is equal to conn.SelectAsync(space, index, 0, 1, IterEq, key).GetTyped(&result)
func (*Connection) Handle ¶
func (conn *Connection) Handle() interface{}
Handle returns user specified handle from Opts
func (*Connection) InUseNow ¶
func (conn *Connection) InUseNow() bool
func (*Connection) Insert ¶
func (conn *Connection) Insert(space interface{}, tuple interface{}) (resp *Response, err error)
Insert performs insertion to box space. Tarantool will reject Insert when tuple with same primary key exists.
It is equal to conn.InsertAsync(space, tuple).Get().
func (*Connection) InsertAsync ¶
func (conn *Connection) InsertAsync(space interface{}, tuple interface{}) *Future
InsertAsync sends insert action to tarantool and returns Future. Tarantool will reject Insert when tuple with same primary key exists.
func (*Connection) InsertTyped ¶
func (conn *Connection) InsertTyped(space interface{}, tuple interface{}, result interface{}) (err error)
InsertTyped performs insertion to box space. Tarantool will reject Insert when tuple with same primary key exists.
It is equal to conn.InsertAsync(space, tuple).GetTyped(&result).
func (*Connection) LocalAddr ¶
func (conn *Connection) LocalAddr() string
LocalAddr is address of outgoing socket
func (*Connection) OverrideSchema ¶
func (conn *Connection) OverrideSchema(s *Schema)
OverrideSchema sets Schema for the connection
func (*Connection) Ping ¶
func (conn *Connection) Ping() (resp *Response, err error)
Ping sends empty request to Tarantool to check connection.
func (*Connection) PrepareExecute ¶
func (conn *Connection) PrepareExecute(sql string, args map[string]interface{}) (resp *Response, err error)
func (*Connection) PrepareExecuteTyped ¶
func (conn *Connection) PrepareExecuteTyped(sql string, args map[string]interface{}, result interface{}) (err error)
func (*Connection) RemoteAddr ¶
func (conn *Connection) RemoteAddr() string
RemoteAddr is address of Tarantool socket
func (*Connection) Replace ¶
func (conn *Connection) Replace(space interface{}, tuple interface{}) (resp *Response, err error)
Replace performs "insert or replace" action to box space. If tuple with same primary key exists, it will be replaced.
It is equal to conn.ReplaceAsync(space, tuple).Get().
func (*Connection) ReplaceAsync ¶
func (conn *Connection) ReplaceAsync(space interface{}, tuple interface{}) *Future
ReplaceAsync sends "insert or replace" action to tarantool and returns Future. If tuple with same primary key exists, it will be replaced.
func (*Connection) ReplaceTyped ¶
func (conn *Connection) ReplaceTyped(space interface{}, tuple interface{}, result interface{}) (err error)
ReplaceTyped performs "insert or replace" action to box space. If tuple with same primary key exists, it will be replaced.
It is equal to conn.ReplaceAsync(space, tuple).GetTyped(&result).
func (*Connection) Select ¶
func (conn *Connection) Select(space, index interface{}, offset, limit, iterator uint32, key interface{}) (resp *Response, err error)
Select performs select to box space.
It is equal to conn.SelectAsync(...).Get()
Example ¶
var conn *tarantool.Connection conn, err := example_connect() if err != nil { fmt.Printf("error in prepare is %v", err) return } defer conn.Close() resp, err := conn.Select(513, 0, 0, 100, tarantool.IterEq, []interface{}{uint(1111)}) if err != nil { fmt.Printf("error in select is %v", err) return } fmt.Printf("response is %#v\n", resp.Data) resp, err = conn.Select("test", "primary", 0, 100, tarantool.IterEq, tarantool.IntKey{1111}) if err != nil { fmt.Printf("error in select is %v", err) return } fmt.Printf("response is %#v\n", resp.Data)
Output: response is []interface {}{[]interface {}{0x457, "hello", "world"}} response is []interface {}{[]interface {}{0x457, "hello", "world"}}
func (*Connection) SelectAsync ¶
func (conn *Connection) SelectAsync(space, index interface{}, offset, limit, iterator uint32, key interface{}) *Future
SelectAsync sends select request to tarantool and returns Future.
func (*Connection) SelectTyped ¶
func (conn *Connection) SelectTyped(space, index interface{}, offset, limit, iterator uint32, key interface{}, result interface{}) (err error)
SelectTyped performs select to box space and fills typed result.
It is equal to conn.SelectAsync(space, index, offset, limit, iterator, key).GetTyped(&result)
Example ¶
var conn *tarantool.Connection conn, err := example_connect() if err != nil { fmt.Printf("error in prepare is %v", err) return } defer conn.Close() var res []Tuple err = conn.SelectTyped(513, 0, 0, 100, tarantool.IterEq, tarantool.IntKey{1111}, &res) if err != nil { fmt.Printf("error in select is %v", err) return } fmt.Printf("response is %v\n", res) err = conn.SelectTyped("test", "primary", 0, 100, tarantool.IterEq, tarantool.IntKey{1111}, &res) if err != nil { fmt.Printf("error in select is %v", err) return } fmt.Printf("response is %v\n", res)
Output: response is [{{} 1111 hello world}] response is [{{} 1111 hello world}]
func (*Connection) Update ¶
func (conn *Connection) Update(space, index interface{}, key, ops interface{}) (resp *Response, err error)
Update performs update of a tuple by key. Result will contain array with updated tuple.
It is equal to conn.UpdateAsync(space, tuple).Get().
func (*Connection) UpdateAsync ¶
func (conn *Connection) UpdateAsync(space, index interface{}, key, ops interface{}) *Future
Update sends deletion of a tuple by key and returns Future. Future's result will contain array with updated tuple.
func (*Connection) UpdateTyped ¶
func (conn *Connection) UpdateTyped(space, index interface{}, key, ops interface{}, result interface{}) (err error)
UpdateTyped performs update of a tuple by key and fills result with updated tuple.
It is equal to conn.UpdateAsync(space, tuple, ops).GetTyped(&result).
func (*Connection) Upsert ¶
func (conn *Connection) Upsert(space interface{}, tuple, ops interface{}) (resp *Response, err error)
Upsert performs "update or insert" action of a tuple by key. Result will not contain any tuple.
It is equal to conn.UpsertAsync(space, tuple, ops).Get().
func (*Connection) UpsertAsync ¶
func (conn *Connection) UpsertAsync(space interface{}, tuple interface{}, ops interface{}) *Future
UpsertAsync sends "update or insert" action to tarantool and returns Future. Future's sesult will not contain any tuple.
func (*Connection) UpsertTyped ¶
func (conn *Connection) UpsertTyped(space, tuple, ops, result interface{}) (err error)
UpsertTyped performs insert of a tuple or updates existing one, by tuple's primary key.
It is equal to conn.UpsertAsync(space, tuple, ops).GetTyped(&result).
type Connector ¶
type Connector interface { ConnectedNow() bool Close() error Ping() (resp *Response, err error) ConfiguredTimeout() time.Duration Select(space, index interface{}, offset, limit, iterator uint32, key interface{}) (resp *Response, err error) Insert(space interface{}, tuple interface{}) (resp *Response, err error) Replace(space interface{}, tuple interface{}) (resp *Response, err error) Delete(space, index interface{}, key interface{}) (resp *Response, err error) Update(space, index interface{}, key, ops interface{}) (resp *Response, err error) Upsert(space interface{}, tuple, ops interface{}) (resp *Response, err error) Call(functionName string, args interface{}) (resp *Response, err error) Call17(functionName string, args interface{}) (resp *Response, err error) Eval(expr string, args interface{}) (resp *Response, err error) PrepareExecute(sql string, args map[string]interface{}) (resp *Response, err error) GetTyped(space, index interface{}, key interface{}, result interface{}) (err error) SelectTyped(space, index interface{}, offset, limit, iterator uint32, key interface{}, result interface{}) (err error) InsertTyped(space interface{}, tuple interface{}, result interface{}) (err error) ReplaceTyped(space interface{}, tuple interface{}, result interface{}) (err error) DeleteTyped(space, index interface{}, key interface{}, result interface{}) (err error) UpdateTyped(space, index interface{}, key, ops interface{}, result interface{}) (err error) UpsertTyped(space, tuple, ops, result interface{}) (err error) CallTyped(functionName string, args interface{}, result interface{}) (err error) Call17Typed(functionName string, args interface{}, result interface{}) (err error) EvalTyped(expr string, args interface{}, result interface{}) (err error) PrepareExecuteTyped(sql string, args map[string]interface{}, result interface{}) (err error) SelectAsync(space, index interface{}, offset, limit, iterator uint32, key interface{}) *Future InsertAsync(space interface{}, tuple interface{}) *Future ReplaceAsync(space interface{}, tuple interface{}) *Future DeleteAsync(space, index interface{}, key interface{}) *Future UpdateAsync(space, index interface{}, key, ops interface{}) *Future UpsertAsync(space interface{}, tuple interface{}, ops interface{}) *Future CallAsync(functionName string, args interface{}) *Future Call17Async(functionName string, args interface{}) *Future EvalAsync(expr string, args interface{}) *Future }
type DeadlineIO ¶
type DeadlineIO struct {
// contains filtered or unexported fields
}
type Future ¶
type Future struct {
// contains filtered or unexported fields
}
Future is a handle for asynchronous request
func (*Future) Err ¶
Err returns error set on Future. It waits for future to be set. Note: it doesn't decode body, therefore decoding error are not set here.
func (*Future) Get ¶
Get waits for Future to be filled and returns Response and error
Response will contain deserialized result in Data field. It will be []interface{}, so if you want more performace, use GetTyped method.
Note: Response could be equal to nil if ClientError is returned in error.
"error" could be Error, if it is error returned by Tarantool, or ClientError, if something bad happens in a client process.
type Greeting ¶
type Greeting struct { Version string // contains filtered or unexported fields }
Greeting is a message sent by tarantool on connect.
type Index ¶
type Index struct { Id uint32 Name string Type string Unique bool Fields []*IndexField }
Index contains information about index
type IndexField ¶
type IntIntKey ¶
type IntIntKey struct {
I1, I2 int
}
IntIntKey is utility type for passing two integer keys to Select*, Update* and Delete* It serializes to array with two integer elements
func (IntIntKey) EncodeMsgpack ¶
type IntKey ¶
type IntKey struct {
I int
}
IntKey is utility type for passing integer key to Select*, Update* and Delete* It serializes to array with single integer element.
func (IntKey) EncodeMsgpack ¶
type Logger ¶
type Logger interface {
Report(event ConnLogKind, conn *Connection, v ...interface{})
}
Logger is logger type expected to be passed in options.
type OpSplice ¶
func (OpSplice) EncodeMsgpack ¶
type Opts ¶
type Opts struct { // Timeout is requests timeout. // Also used to setup net.TCPConn.Set(Read|Write)Deadline Timeout time.Duration // Reconnect is a pause between reconnection attempts. // If specified, then when tarantool is not reachable or disconnected, // new connect attempt is performed after pause. // By default, no reconnection attempts are performed, // so once disconnected, connection becomes Closed. Reconnect time.Duration // MaxReconnects is a maximum reconnect attempts. // After MaxReconnects attempts Connection becomes closed. MaxReconnects uint // User name for authorization User string // Pass is password for authorization Pass string // RateLimit limits number of 'in-fly' request, ie already put into // requests queue, but not yet answered by server or timeouted. // It is disabled by default. // See RLimitAction for possible actions when RateLimit.reached. RateLimit uint // RLimitAction tells what to do when RateLimit reached: // RLimitDrop - immediatly abort request, // RLimitWait - wait during timeout period for some request to be answered. // If no request answered during timeout period, this request // is aborted. // If no timeout period is set, it will wait forever. // It is required if RateLimit is specified. RLimitAction uint // Concurrency is amount of separate mutexes for request // queues and buffers inside of connection. // It is rounded upto nearest power of 2. // By default it is runtime.GOMAXPROCS(-1) * 4 Concurrency uint32 // SkipSchema disables schema loading. Without disabling schema loading, // there is no way to create Connection for currently not accessible tarantool. SkipSchema bool // Notify is a channel which receives notifications about Connection status // changes. Notify chan<- ConnEvent // Handle is user specified value, that could be retrivied with Handle() method Handle interface{} // Logger is user specified logger used for error messages Logger Logger }
Opts is a way to configure Connection
type Response ¶
type Response struct { RequestId uint32 Code uint32 Error string // error message // Data contains deserialized data for untyped requests Data []interface{} // contains filtered or unexported fields }
type Schema ¶
type Schema struct { Version uint // Spaces is map from space names to spaces Spaces map[string]*Space // SpacesById is map from space numbers to spaces SpacesById map[uint32]*Space }
Schema contains information about spaces and indexes.
type Space ¶
type Space struct { Id uint32 Name string Engine string Temporary bool // Is this space temporaray? // Field configuration is not mandatory and not checked by tarantool. FieldsCount uint32 Fields map[string]*Field FieldsById map[uint32]*Field // Indexes is map from index names to indexes Indexes map[string]*Index // IndexesById is map from index numbers to indexes IndexesById map[uint32]*Index }
Space contains information about tarantool space
type StringKey ¶
type StringKey struct {
S string
}
UintKey is utility type for passing string key to Select*, Update* and Delete* It serializes to array with single string element.