Documentation ¶
Index ¶
- Constants
- func RegisterDialer(name string, dialer DialerFunc)
- type DialerFunc
- type ErrFunc
- type Impl
- type OperationalError
- type ServerError
- type VTGateConn
- func (conn *VTGateConn) Begin(ctx context.Context) (*VTGateTx, error)
- func (conn *VTGateConn) Begin2(ctx context.Context) (*VTGateTx, error)
- func (conn *VTGateConn) Close()
- func (conn *VTGateConn) Execute(ctx context.Context, query string, bindVars map[string]interface{}, ...) (*mproto.QueryResult, error)
- func (conn *VTGateConn) ExecuteBatchKeyspaceIds(ctx context.Context, queries []proto.BoundKeyspaceIdQuery, ...) ([]mproto.QueryResult, error)
- func (conn *VTGateConn) ExecuteBatchShards(ctx context.Context, queries []proto.BoundShardQuery, tabletType pb.TabletType, ...) ([]mproto.QueryResult, error)
- func (conn *VTGateConn) ExecuteEntityIds(ctx context.Context, query string, keyspace string, entityColumnName string, ...) (*mproto.QueryResult, error)
- func (conn *VTGateConn) ExecuteKeyRanges(ctx context.Context, query string, keyspace string, keyRanges []*pb.KeyRange, ...) (*mproto.QueryResult, error)
- func (conn *VTGateConn) ExecuteKeyspaceIds(ctx context.Context, query string, keyspace string, keyspaceIds [][]byte, ...) (*mproto.QueryResult, error)
- func (conn *VTGateConn) ExecuteShards(ctx context.Context, query string, keyspace string, shards []string, ...) (*mproto.QueryResult, error)
- func (conn *VTGateConn) GetSrvKeyspace(ctx context.Context, keyspace string) (*topo.SrvKeyspace, error)
- func (conn *VTGateConn) SplitQuery(ctx context.Context, keyspace string, query string, ...) ([]proto.SplitQueryPart, error)
- func (conn *VTGateConn) StreamExecute(ctx context.Context, query string, bindVars map[string]interface{}, ...) (<-chan *mproto.QueryResult, ErrFunc, error)
- func (conn *VTGateConn) StreamExecute2(ctx context.Context, query string, bindVars map[string]interface{}, ...) (<-chan *mproto.QueryResult, ErrFunc, error)
- func (conn *VTGateConn) StreamExecuteKeyRanges(ctx context.Context, query string, keyspace string, keyRanges []*pb.KeyRange, ...) (<-chan *mproto.QueryResult, ErrFunc, error)
- func (conn *VTGateConn) StreamExecuteKeyRanges2(ctx context.Context, query string, keyspace string, keyRanges []*pb.KeyRange, ...) (<-chan *mproto.QueryResult, ErrFunc, error)
- func (conn *VTGateConn) StreamExecuteKeyspaceIds(ctx context.Context, query string, keyspace string, keyspaceIds [][]byte, ...) (<-chan *mproto.QueryResult, ErrFunc, error)
- func (conn *VTGateConn) StreamExecuteKeyspaceIds2(ctx context.Context, query string, keyspace string, keyspaceIds [][]byte, ...) (<-chan *mproto.QueryResult, ErrFunc, error)
- func (conn *VTGateConn) StreamExecuteShards(ctx context.Context, query string, keyspace string, shards []string, ...) (<-chan *mproto.QueryResult, ErrFunc, error)
- func (conn *VTGateConn) StreamExecuteShards2(ctx context.Context, query string, keyspace string, shards []string, ...) (<-chan *mproto.QueryResult, ErrFunc, error)
- type VTGateTx
- func (tx *VTGateTx) Commit(ctx context.Context) error
- func (tx *VTGateTx) Commit2(ctx context.Context) error
- func (tx *VTGateTx) Execute(ctx context.Context, query string, bindVars map[string]interface{}, ...) (*mproto.QueryResult, error)
- func (tx *VTGateTx) ExecuteBatchKeyspaceIds(ctx context.Context, queries []proto.BoundKeyspaceIdQuery, ...) ([]mproto.QueryResult, error)
- func (tx *VTGateTx) ExecuteBatchShards(ctx context.Context, queries []proto.BoundShardQuery, tabletType pb.TabletType, ...) ([]mproto.QueryResult, error)
- func (tx *VTGateTx) ExecuteEntityIds(ctx context.Context, query string, keyspace string, entityColumnName string, ...) (*mproto.QueryResult, error)
- func (tx *VTGateTx) ExecuteKeyRanges(ctx context.Context, query string, keyspace string, keyRanges []*pb.KeyRange, ...) (*mproto.QueryResult, error)
- func (tx *VTGateTx) ExecuteKeyspaceIds(ctx context.Context, query string, keyspace string, keyspaceIds [][]byte, ...) (*mproto.QueryResult, error)
- func (tx *VTGateTx) ExecuteShards(ctx context.Context, query string, keyspace string, shards []string, ...) (*mproto.QueryResult, error)
- func (tx *VTGateTx) Rollback(ctx context.Context) error
- func (tx *VTGateTx) Rollback2(ctx context.Context) error
Constants ¶
const (
// GoRPCProtocol is a vtgate protocol based on go rpc
GoRPCProtocol = "gorpc"
)
Variables ¶
This section is empty.
Functions ¶
func RegisterDialer ¶
func RegisterDialer(name string, dialer DialerFunc)
RegisterDialer is meant to be used by Dialer implementations to self register.
Types ¶
type DialerFunc ¶
DialerFunc represents a function that will return a VTGateConn object that can communicate with a VTGate.
type Impl ¶
type Impl interface { // Execute executes a non-streaming query on vtgate. Execute(ctx context.Context, query string, bindVars map[string]interface{}, tabletType pb.TabletType, notInTransaction bool, session interface{}) (*mproto.QueryResult, interface{}, error) // ExecuteShards executes a non-streaming query for multiple shards on vtgate. ExecuteShards(ctx context.Context, query string, keyspace string, shards []string, bindVars map[string]interface{}, tabletType pb.TabletType, notInTransaction bool, session interface{}) (*mproto.QueryResult, interface{}, error) // ExecuteKeyspaceIds executes a non-streaming query for multiple keyspace_ids. ExecuteKeyspaceIds(ctx context.Context, query string, keyspace string, keyspaceIds [][]byte, bindVars map[string]interface{}, tabletType pb.TabletType, notInTransaction bool, session interface{}) (*mproto.QueryResult, interface{}, error) // ExecuteKeyRanges executes a non-streaming query on a key range. ExecuteKeyRanges(ctx context.Context, query string, keyspace string, keyRanges []*pb.KeyRange, bindVars map[string]interface{}, tabletType pb.TabletType, notInTransaction bool, session interface{}) (*mproto.QueryResult, interface{}, error) // ExecuteEntityIds executes a non-streaming query for multiple entities. ExecuteEntityIds(ctx context.Context, query string, keyspace string, entityColumnName string, entityKeyspaceIDs []proto.EntityId, bindVars map[string]interface{}, tabletType pb.TabletType, notInTransaction bool, session interface{}) (*mproto.QueryResult, interface{}, error) // ExecuteBatchShards executes a set of non-streaming queries for multiple shards. ExecuteBatchShards(ctx context.Context, queries []proto.BoundShardQuery, tabletType pb.TabletType, asTransaction bool, session interface{}) ([]mproto.QueryResult, interface{}, error) // ExecuteBatchKeyspaceIds executes a set of non-streaming queries for multiple keyspace ids. ExecuteBatchKeyspaceIds(ctx context.Context, queries []proto.BoundKeyspaceIdQuery, tabletType pb.TabletType, asTransaction bool, session interface{}) ([]mproto.QueryResult, interface{}, error) // StreamExecute executes a streaming query on vtgate. StreamExecute(ctx context.Context, query string, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error) // StreamExecute2 executes a streaming query on vtgate. StreamExecute2(ctx context.Context, query string, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error) // StreamExecuteShards executes a streaming query on vtgate, on a set of shards. StreamExecuteShards(ctx context.Context, query string, keyspace string, shards []string, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error) // StreamExecuteShards2 executes a streaming query on vtgate, on a set of shards. StreamExecuteShards2(ctx context.Context, query string, keyspace string, shards []string, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error) // StreamExecuteKeyRanges executes a streaming query on vtgate, on a set of keyranges. StreamExecuteKeyRanges(ctx context.Context, query string, keyspace string, keyRanges []*pb.KeyRange, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error) // StreamExecuteKeyRanges2 executes a streaming query on vtgate, on a set of keyranges. StreamExecuteKeyRanges2(ctx context.Context, query string, keyspace string, keyRanges []*pb.KeyRange, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error) // StreamExecuteKeyspaceIds executes a streaming query on vtgate, for the given keyspaceIds. StreamExecuteKeyspaceIds(ctx context.Context, query string, keyspace string, keyspaceIds [][]byte, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error) // StreamExecuteKeyspaceIds2 executes a streaming query on vtgate, for the given keyspaceIds. StreamExecuteKeyspaceIds2(ctx context.Context, query string, keyspace string, keyspaceIds [][]byte, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error) // Begin starts a transaction and returns a VTGateTX. Begin(ctx context.Context) (interface{}, error) // Commit commits the current transaction. Commit(ctx context.Context, session interface{}) error // Rollback rolls back the current transaction. Rollback(ctx context.Context, session interface{}) error // Begin starts a transaction and returns a VTGateTX. Begin2(ctx context.Context) (interface{}, error) // Commit commits the current transaction. Commit2(ctx context.Context, session interface{}) error // Rollback rolls back the current transaction. Rollback2(ctx context.Context, session interface{}) error // SplitQuery splits a query into equally sized smaller queries by // appending primary key range clauses to the original query. SplitQuery(ctx context.Context, keyspace string, query string, bindVars map[string]interface{}, splitColumn string, splitCount int) ([]proto.SplitQueryPart, error) // GetSrvKeyspace returns a topo.SrvKeyspace. GetSrvKeyspace(ctx context.Context, keyspace string) (*topo.SrvKeyspace, error) // Close must be called for releasing resources. Close() }
Impl defines the interface for a vtgate client protocol implementation. It can be used concurrently across goroutines.
type OperationalError ¶
type OperationalError string
OperationalError represents an error due to a failure to communicate with vtgate.
func (OperationalError) Error ¶
func (e OperationalError) Error() string
type ServerError ¶
ServerError represents an error that was returned from a vtgate server.
func (*ServerError) Error ¶
func (e *ServerError) Error() string
type VTGateConn ¶
type VTGateConn struct {
// contains filtered or unexported fields
}
VTGateConn is the client API object to talk to vtgate. It is constructed using the Dial method. It can be used concurrently across goroutines.
func DialProtocol ¶
func DialProtocol(ctx context.Context, protocol string, address string, timeout time.Duration) (*VTGateConn, error)
DialProtocol dials a specific protocol, and returns the *VTGateConn
func (*VTGateConn) Begin ¶
func (conn *VTGateConn) Begin(ctx context.Context) (*VTGateTx, error)
Begin starts a transaction and returns a VTGateTX.
func (*VTGateConn) Begin2 ¶
func (conn *VTGateConn) Begin2(ctx context.Context) (*VTGateTx, error)
Begin2 starts a transaction and returns a VTGateTX.
func (*VTGateConn) Close ¶
func (conn *VTGateConn) Close()
Close must be called for releasing resources.
func (*VTGateConn) Execute ¶
func (conn *VTGateConn) Execute(ctx context.Context, query string, bindVars map[string]interface{}, tabletType pb.TabletType) (*mproto.QueryResult, error)
Execute executes a non-streaming query on vtgate. This is using v3 API.
func (*VTGateConn) ExecuteBatchKeyspaceIds ¶
func (conn *VTGateConn) ExecuteBatchKeyspaceIds(ctx context.Context, queries []proto.BoundKeyspaceIdQuery, tabletType pb.TabletType, asTransaction bool) ([]mproto.QueryResult, error)
ExecuteBatchKeyspaceIds executes a set of non-streaming queries for multiple keyspace ids.
func (*VTGateConn) ExecuteBatchShards ¶
func (conn *VTGateConn) ExecuteBatchShards(ctx context.Context, queries []proto.BoundShardQuery, tabletType pb.TabletType, asTransaction bool) ([]mproto.QueryResult, error)
ExecuteBatchShards executes a set of non-streaming queries for multiple shards.
func (*VTGateConn) ExecuteEntityIds ¶
func (conn *VTGateConn) ExecuteEntityIds(ctx context.Context, query string, keyspace string, entityColumnName string, entityKeyspaceIDs []proto.EntityId, bindVars map[string]interface{}, tabletType pb.TabletType) (*mproto.QueryResult, error)
ExecuteEntityIds executes a non-streaming query for multiple entities.
func (*VTGateConn) ExecuteKeyRanges ¶
func (conn *VTGateConn) ExecuteKeyRanges(ctx context.Context, query string, keyspace string, keyRanges []*pb.KeyRange, bindVars map[string]interface{}, tabletType pb.TabletType) (*mproto.QueryResult, error)
ExecuteKeyRanges executes a non-streaming query on a key range.
func (*VTGateConn) ExecuteKeyspaceIds ¶
func (conn *VTGateConn) ExecuteKeyspaceIds(ctx context.Context, query string, keyspace string, keyspaceIds [][]byte, bindVars map[string]interface{}, tabletType pb.TabletType) (*mproto.QueryResult, error)
ExecuteKeyspaceIds executes a non-streaming query for multiple keyspace_ids.
func (*VTGateConn) ExecuteShards ¶
func (conn *VTGateConn) ExecuteShards(ctx context.Context, query string, keyspace string, shards []string, bindVars map[string]interface{}, tabletType pb.TabletType) (*mproto.QueryResult, error)
ExecuteShards executes a non-streaming query for multiple shards on vtgate.
func (*VTGateConn) GetSrvKeyspace ¶
func (conn *VTGateConn) GetSrvKeyspace(ctx context.Context, keyspace string) (*topo.SrvKeyspace, error)
GetSrvKeyspace returns a topo.SrvKeyspace object.
func (*VTGateConn) SplitQuery ¶
func (conn *VTGateConn) SplitQuery(ctx context.Context, keyspace string, query string, bindVars map[string]interface{}, splitColumn string, splitCount int) ([]proto.SplitQueryPart, error)
SplitQuery splits a query into equally sized smaller queries by appending primary key range clauses to the original query
func (*VTGateConn) StreamExecute ¶
func (conn *VTGateConn) StreamExecute(ctx context.Context, query string, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error)
StreamExecute executes a streaming query on vtgate. It returns a channel, an ErrFunc, and error. First check the error. Then you can pull values from the channel till it's closed. Following this, you can call ErrFunc to see if the stream ended normally or due to a failure.
func (*VTGateConn) StreamExecute2 ¶
func (conn *VTGateConn) StreamExecute2(ctx context.Context, query string, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error)
StreamExecute2 executes a streaming query on vtgate. It returns a channel, an ErrFunc, and error. First check the error. Then you can pull values from the channel till it's closed. Following this, you can call ErrFunc to see if the stream ended normally or due to a failure.
func (*VTGateConn) StreamExecuteKeyRanges ¶
func (conn *VTGateConn) StreamExecuteKeyRanges(ctx context.Context, query string, keyspace string, keyRanges []*pb.KeyRange, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error)
StreamExecuteKeyRanges executes a streaming query on vtgate, on a set of keyranges. It returns a channel, an ErrFunc, and error. First check the error. Then you can pull values from the channel till it's closed. Following this, you can call ErrFunc to see if the stream ended normally or due to a failure.
func (*VTGateConn) StreamExecuteKeyRanges2 ¶
func (conn *VTGateConn) StreamExecuteKeyRanges2(ctx context.Context, query string, keyspace string, keyRanges []*pb.KeyRange, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error)
StreamExecuteKeyRanges2 executes a streaming query on vtgate, on a set of keyranges. It returns a channel, an ErrFunc, and error. First check the error. Then you can pull values from the channel till it's closed. Following this, you can call ErrFunc to see if the stream ended normally or due to a failure.
func (*VTGateConn) StreamExecuteKeyspaceIds ¶
func (conn *VTGateConn) StreamExecuteKeyspaceIds(ctx context.Context, query string, keyspace string, keyspaceIds [][]byte, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error)
StreamExecuteKeyspaceIds executes a streaming query on vtgate, for the given keyspaceIds. It returns a channel, an ErrFunc, and error. First check the error. Then you can pull values from the channel till it's closed. Following this, you can call ErrFunc to see if the stream ended normally or due to a failure.
func (*VTGateConn) StreamExecuteKeyspaceIds2 ¶
func (conn *VTGateConn) StreamExecuteKeyspaceIds2(ctx context.Context, query string, keyspace string, keyspaceIds [][]byte, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error)
StreamExecuteKeyspaceIds2 executes a streaming query on vtgate, for the given keyspaceIds. It returns a channel, an ErrFunc, and error. First check the error. Then you can pull values from the channel till it's closed. Following this, you can call ErrFunc to see if the stream ended normally or due to a failure.
func (*VTGateConn) StreamExecuteShards ¶
func (conn *VTGateConn) StreamExecuteShards(ctx context.Context, query string, keyspace string, shards []string, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error)
StreamExecuteShards executes a streaming query on vtgate, on a set of shards. It returns a channel, an ErrFunc, and error. First check the error. Then you can pull values from the channel till it's closed. Following this, you can call ErrFunc to see if the stream ended normally or due to a failure.
func (*VTGateConn) StreamExecuteShards2 ¶
func (conn *VTGateConn) StreamExecuteShards2(ctx context.Context, query string, keyspace string, shards []string, bindVars map[string]interface{}, tabletType pb.TabletType) (<-chan *mproto.QueryResult, ErrFunc, error)
StreamExecuteShards2 executes a streaming query on vtgate, on a set of shards. It returns a channel, an ErrFunc, and error. First check the error. Then you can pull values from the channel till it's closed. Following this, you can call ErrFunc to see if the stream ended normally or due to a failure.
type VTGateTx ¶
type VTGateTx struct {
// contains filtered or unexported fields
}
VTGateTx defines an ongoing transaction. It should not be concurrently used across goroutines.
func (*VTGateTx) Execute ¶
func (tx *VTGateTx) Execute(ctx context.Context, query string, bindVars map[string]interface{}, tabletType pb.TabletType, notInTransaction bool) (*mproto.QueryResult, error)
Execute executes a query on vtgate within the current transaction.
func (*VTGateTx) ExecuteBatchKeyspaceIds ¶
func (tx *VTGateTx) ExecuteBatchKeyspaceIds(ctx context.Context, queries []proto.BoundKeyspaceIdQuery, tabletType pb.TabletType, asTransaction bool) ([]mproto.QueryResult, error)
ExecuteBatchKeyspaceIds executes a set of non-streaming queries for multiple keyspace ids.
func (*VTGateTx) ExecuteBatchShards ¶
func (tx *VTGateTx) ExecuteBatchShards(ctx context.Context, queries []proto.BoundShardQuery, tabletType pb.TabletType, asTransaction bool) ([]mproto.QueryResult, error)
ExecuteBatchShards executes a set of non-streaming queries for multiple shards.
func (*VTGateTx) ExecuteEntityIds ¶
func (tx *VTGateTx) ExecuteEntityIds(ctx context.Context, query string, keyspace string, entityColumnName string, entityKeyspaceIDs []proto.EntityId, bindVars map[string]interface{}, tabletType pb.TabletType, notInTransaction bool) (*mproto.QueryResult, error)
ExecuteEntityIds executes a non-streaming query for multiple entities.
func (*VTGateTx) ExecuteKeyRanges ¶
func (tx *VTGateTx) ExecuteKeyRanges(ctx context.Context, query string, keyspace string, keyRanges []*pb.KeyRange, bindVars map[string]interface{}, tabletType pb.TabletType, notInTransaction bool) (*mproto.QueryResult, error)
ExecuteKeyRanges executes a non-streaming query on a key range.
func (*VTGateTx) ExecuteKeyspaceIds ¶
func (tx *VTGateTx) ExecuteKeyspaceIds(ctx context.Context, query string, keyspace string, keyspaceIds [][]byte, bindVars map[string]interface{}, tabletType pb.TabletType, notInTransaction bool) (*mproto.QueryResult, error)
ExecuteKeyspaceIds executes a non-streaming query for multiple keyspace_ids.
func (*VTGateTx) ExecuteShards ¶
func (tx *VTGateTx) ExecuteShards(ctx context.Context, query string, keyspace string, shards []string, bindVars map[string]interface{}, tabletType pb.TabletType, notInTransaction bool) (*mproto.QueryResult, error)
ExecuteShards executes a query for multiple shards on vtgate within the current transaction.