syntax = "proto3"; package sqlrpc; // SQL Service - Execute SQL queries on FlareDB service SqlService { rpc Execute(SqlRequest) returns (SqlResponse); } message SqlRequest { string namespace = 1; string sql = 2; } message SqlResponse { oneof result { DdlResult ddl_result = 1; DmlResult dml_result = 2; QueryResult query_result = 3; ErrorResult error = 4; } } message DdlResult { string message = 1; // "Table created", "Table dropped", etc. } message DmlResult { uint64 rows_affected = 1; } message QueryResult { repeated string columns = 1; repeated Row rows = 2; } message Row { repeated SqlValue values = 1; } message SqlValue { oneof value { int64 int_value = 1; string text_value = 2; bool bool_value = 3; uint64 timestamp_value = 4; } bool is_null = 5; } message ErrorResult { string error = 1; }