/* ------------------------------------------------------------------- * riak_ts.proto: Protocol buffers for Riak KV/TS * (timeseries-specific messages) * ------------------------------------------------------------------- * * NOTE: IMPORTANT * Any change to the definitions in this file REQUIRES the following * steps after: * * # Re-generate erlang source from changed .proto files: * make erl_protogen * * # Commit changed files: * git add -A; git commit -m 'Update erlang code from .proto files' */ // Java package specifiers // option java_package = "com.basho.riak.protobuf"; // option java_outer_classname = "RiakTsPB"; // import "riak.proto"; // for RpbPair // Dispatch a query to Riak message TsQueryReq { // left optional to support parameterized queries in the future optional TsInterpolation query = 1; optional bool stream = 2 [default = false]; optional bytes cover_context = 3; // chopped up coverage plan per-req } message TsQueryResp { repeated TsColumnDescription columns = 1; repeated TsRow rows = 2; // 0 to n rows optional bool done = 3 [default = true]; } message TsGetReq { required bytes table = 1; repeated TsCell key = 2; optional uint32 timeout = 3; } message TsGetResp { repeated TsColumnDescription columns = 1; repeated TsRow rows = 2; // 0 or 1 rows } message TsPutReq { required bytes table = 1; // optional: omitting it should use table order repeated TsColumnDescription columns = 2; repeated TsRow rows = 3; } message TsPutResp { } message TsDelReq { required bytes table = 1; repeated TsCell key = 2; optional bytes vclock = 3; optional uint32 timeout = 4; } message TsDelResp { } message TsInterpolation { required bytes base = 1; repeated RpbPair interpolations = 2; } enum TsColumnType { VARCHAR = 0; SINT64 = 1; DOUBLE = 2; TIMESTAMP = 3; BOOLEAN = 4; BLOB = 5; } message TsColumnDescription { required bytes name = 1; required TsColumnType type = 2; } message TsRow { repeated TsCell cells = 1; } message TsCell { optional bytes varchar_value = 1; optional sint64 sint64_value = 2; optional sint64 timestamp_value = 3; optional bool boolean_value = 4; optional double double_value = 5; } message TsListKeysReq { required bytes table = 1; optional uint32 timeout = 2; } message TsListKeysResp { repeated TsRow keys = 1; optional bool done = 2; } // Request a segmented coverage plan for this query message TsCoverageReq { // left optional to support parameterized queries in the future optional TsInterpolation query = 1; required bytes table = 2; optional bytes replace_cover = 3; // For failure recovery repeated bytes unavailable_cover = 4; // Other coverage contexts that have failed to assist Riak in deciding what nodes to avoid } // Segmented TS coverage plan response message TsCoverageResp { repeated TsCoverageEntry entries = 1; } // Segment of a TS coverage plan message TsCoverageEntry { required bytes ip = 1; required uint32 port = 2; required bytes cover_context = 3; // Opaque context to pass into follow-up request optional TsRange range = 4; // Might be other types of coverage queries/responses } // Each prospective subquery has a range of valid time values message TsRange { required bytes field_name = 1; required sint64 lower_bound = 2; required bool lower_bound_inclusive = 3; required sint64 upper_bound = 4; required bool upper_bound_inclusive = 5; required bytes desc = 6; // Some human readable description of the time range }