Documentation
¶
Overview ¶
Package queryservice contains the interface for the service definition of the Query Service.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CallCorrectSplitQuery ¶
func CallCorrectSplitQuery( queryService QueryService, useSplitQueryV2 bool, ctx context.Context, target *querypb.Target, sql string, bindVariables map[string]interface{}, splitColumns []string, splitCount int64, numRowsPerQueryPart int64, algorithm querypb.SplitQueryRequest_Algorithm, ) ([]querytypes.QuerySplit, error)
CallCorrectSplitQuery calls the correct SplitQuery. This trivial logic is encapsulated in a function here so it can be easily tested. TODO(erez): Remove once the migration to SplitQueryV2 is done.
Types ¶
type QueryService ¶
type QueryService interface {
// Begin returns the transaction id to use for further operations
Begin(ctx context.Context, target *querypb.Target) (int64, error)
// Commit commits the current transaction
Commit(ctx context.Context, target *querypb.Target, transactionID int64) error
// Rollback aborts the current transaction
Rollback(ctx context.Context, target *querypb.Target, transactionID int64) error
Execute(ctx context.Context, target *querypb.Target, sql string, bindVariables map[string]interface{}, transactionID int64) (*sqltypes.Result, error)
StreamExecute(ctx context.Context, target *querypb.Target, sql string, bindVariables map[string]interface{}, sendReply func(*sqltypes.Result) error) error
ExecuteBatch(ctx context.Context, target *querypb.Target, queries []querytypes.BoundQuery, asTransaction bool, transactionID int64) ([]sqltypes.Result, error)
// SplitQuery is a map reduce helper function
// TODO(erez): Remove this and rename the following func to SplitQuery
// once we migrate to SplitQuery V2.
SplitQuery(ctx context.Context, target *querypb.Target, sql string, bindVariables map[string]interface{}, splitColumn string, splitCount int64) ([]querytypes.QuerySplit, error)
// SplitQueryV2 is a MapReduce helper function.
// This is version of SplitQuery supports multiple algorithms and multiple split columns.
// See the documentation of SplitQueryRequest in 'proto/vtgate.proto' for more information.
SplitQueryV2(
ctx context.Context,
target *querypb.Target,
sql string,
bindVariables map[string]interface{},
splitColumns []string,
splitCount int64,
numRowsPerQueryPart int64,
algorithm querypb.SplitQueryRequest_Algorithm,
) ([]querytypes.QuerySplit, error)
// StreamHealthRegister registers a listener for StreamHealth
StreamHealthRegister(chan<- *querypb.StreamHealthResponse) (int, error)
// StreamHealthUnregister unregisters a listener for StreamHealth
StreamHealthUnregister(int) error
// Helper for RPC panic handling: call this in a defer statement
// at the beginning of each RPC handling method.
HandlePanic(*error)
}
QueryService is the interface implemented by the tablet's query service.
Click to show internal directories.
Click to hide internal directories.