0
0
mirror of https://github.com/tursodatabase/libsql.git synced 2025-05-25 22:40:39 +00:00
Files
libsql/libsql-replication/proto/proxy.proto
2023-10-30 17:26:14 +01:00

159 lines
2.6 KiB
Protocol Buffer

syntax = "proto3";
package proxy;
message Queries {
repeated Query queries = 1;
// Uuid
string clientId = 2;
}
message Query {
string stmt = 1;
oneof Params {
Positional positional = 2;
Named named = 3;
}
bool skip_rows = 4;
}
message Positional {
repeated Value values = 1;
}
message Named {
repeated string names = 1;
repeated Value values = 2;
}
message QueryResult {
oneof row_result {
Error error = 1;
ResultRows row = 2;
}
}
message Error {
enum ErrorCode {
SQLError = 0;
TxBusy = 1;
TxTimeout = 2;
Internal = 3;
}
ErrorCode code = 1;
string message = 2;
int32 extended_code = 3;
}
message ResultRows {
repeated Column column_descriptions = 1;
repeated Row rows = 2;
uint64 affected_row_count = 3;
optional int64 last_insert_rowid = 4;
}
message DescribeRequest {
string client_id = 1;
string stmt = 2;
}
message DescribeResult {
oneof describe_result {
Error error = 1;
Description description = 2;
}
}
message Description {
repeated Column column_descriptions = 1;
repeated string param_names = 2;
uint64 param_count = 3;
}
message Value {
/// bincode encoded Value
bytes data = 1;
}
message Row {
repeated Value values = 1;
}
message Column {
string name = 1;
optional string decltype = 3;
}
message DisconnectMessage {
string clientId = 1;
}
message Ack { }
message ExecuteResults {
repeated QueryResult results = 1;
enum State {
Init = 0;
Invalid = 1;
Txn = 2;
}
/// State after executing the queries
State state = 2;
/// Primary frame_no after executing the request.
optional uint64 current_frame_no = 3;
}
message Program {
repeated Step steps = 1;
}
message Step {
optional Cond cond = 1;
Query query = 2;
}
message Cond {
oneof cond {
OkCond ok = 1;
ErrCond err = 2;
NotCond not = 3;
AndCond and = 4;
OrCond or = 5;
IsAutocommitCond is_autocommit = 6;
}
}
message OkCond {
int64 step = 1;
}
message ErrCond {
int64 step = 1;
}
message NotCond {
Cond cond = 1;
}
message AndCond {
repeated Cond conds = 1;
}
message OrCond {
repeated Cond conds = 1;
}
message IsAutocommitCond {
}
message ProgramReq {
string client_id = 1;
Program pgm = 2;
}
service Proxy {
rpc Execute(ProgramReq) returns (ExecuteResults) {}
rpc Describe(DescribeRequest) returns (DescribeResult) {}
rpc Disconnect(DisconnectMessage) returns (Ack) {}
}