1#[derive(Clone, PartialEq, ::prost::Message)]
6pub struct ClientPacket {
7 #[prost(oneof = "client_packet::Msg", tags = "1")]
8 pub msg: ::core::option::Option<client_packet::Msg>,
9}
10pub mod client_packet {
12 #[derive(Clone, PartialEq, ::prost::Oneof)]
13 pub enum Msg {
14 #[prost(message, tag = "1")]
15 Quic(super::QuicClientMessage),
16 }
17}
18#[derive(Clone, PartialEq, ::prost::Message)]
19pub struct ServerPacket {
20 #[prost(oneof = "server_packet::Msg", tags = "1")]
21 pub msg: ::core::option::Option<server_packet::Msg>,
22}
23pub mod server_packet {
25 #[derive(Clone, PartialEq, ::prost::Oneof)]
26 pub enum Msg {
27 #[prost(message, tag = "1")]
28 Quic(super::QuicServerMessage),
29 }
30}
31#[derive(Clone, PartialEq, ::prost::Message)]
35pub struct QuicClientMessage {
36 #[prost(
37 oneof = "quic_client_message::Msg",
38 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14"
39 )]
40 pub msg: ::core::option::Option<quic_client_message::Msg>,
41}
42pub mod quic_client_message {
44 #[derive(Clone, PartialEq, ::prost::Oneof)]
45 pub enum Msg {
46 #[prost(message, tag = "1")]
47 Hello(super::HelloRequest),
48 #[prost(message, tag = "2")]
49 Execute(super::ExecuteRequest),
50 #[prost(message, tag = "3")]
51 Pull(super::PullRequest),
52 #[prost(message, tag = "4")]
53 Ping(super::PingRequest),
54 #[prost(message, tag = "5")]
55 CdcDiag(super::CdcDiagnosticsRequest),
56 #[prost(message, tag = "6")]
57 CdcCtrl(super::CdcControlRequest),
58 #[prost(message, tag = "7")]
59 Begin(super::BeginRequest),
60 #[prost(message, tag = "8")]
61 Commit(super::CommitRequest),
62 #[prost(message, tag = "9")]
63 Rollback(super::RollbackRequest),
64 #[prost(message, tag = "10")]
65 Savepoint(super::SavepointRequest),
66 #[prost(message, tag = "11")]
67 RollbackTo(super::RollbackToRequest),
68 #[prost(message, tag = "12")]
69 Backup(super::BackupRequest),
70 #[prost(message, tag = "13")]
71 Restore(super::RestoreRequest),
72 #[prost(message, tag = "14")]
73 UploadBackup(super::UploadBackupRequest),
74 }
75}
76#[derive(Clone, PartialEq, ::prost::Message)]
77pub struct QuicServerMessage {
78 #[prost(
79 oneof = "quic_server_message::Msg",
80 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14"
81 )]
82 pub msg: ::core::option::Option<quic_server_message::Msg>,
83}
84pub mod quic_server_message {
86 #[derive(Clone, PartialEq, ::prost::Oneof)]
87 pub enum Msg {
88 #[prost(message, tag = "1")]
89 Hello(super::HelloResponse),
90 #[prost(message, tag = "2")]
91 Execute(super::ExecutionResponse),
92 #[prost(message, tag = "3")]
93 Pull(super::PullResponse),
94 #[prost(message, tag = "4")]
95 Ping(super::PingResponse),
96 #[prost(message, tag = "5")]
97 CdcDiag(super::CdcDiagnosticsResponse),
98 #[prost(message, tag = "6")]
99 CdcCtrl(super::CdcControlResponse),
100 #[prost(message, tag = "7")]
101 Begin(super::BeginResponse),
102 #[prost(message, tag = "8")]
103 Commit(super::CommitResponse),
104 #[prost(message, tag = "9")]
105 Rollback(super::RollbackResponse),
106 #[prost(message, tag = "10")]
107 Savepoint(super::SavepointResponse),
108 #[prost(message, tag = "11")]
109 RollbackTo(super::RollbackToResponse),
110 #[prost(message, tag = "12")]
111 Backup(super::BackupResponse),
112 #[prost(message, tag = "13")]
113 Restore(super::RestoreResponse),
114 #[prost(message, tag = "14")]
115 UploadBackup(super::UploadBackupResponse),
116 }
117}
118#[derive(Clone, PartialEq, ::prost::Message)]
122pub struct HelloRequest {
123 #[prost(string, tag = "1")]
124 pub username: ::prost::alloc::string::String,
125 #[prost(string, tag = "2")]
126 pub password: ::prost::alloc::string::String,
127 #[prost(string, optional, tag = "3")]
128 pub tenant_id: ::core::option::Option<::prost::alloc::string::String>,
129 #[prost(string, tag = "4")]
130 pub client_name: ::prost::alloc::string::String,
131 #[prost(string, tag = "5")]
132 pub client_version: ::prost::alloc::string::String,
133 #[prost(string, tag = "6")]
134 pub wanted_conformance: ::prost::alloc::string::String,
135 #[prost(string, optional, tag = "7")]
136 pub graph: ::core::option::Option<::prost::alloc::string::String>,
137}
138#[derive(Clone, PartialEq, ::prost::Message)]
139pub struct HelloResponse {
140 #[prost(bool, tag = "1")]
141 pub success: bool,
142 #[prost(string, tag = "2")]
143 pub session_id: ::prost::alloc::string::String,
144 #[prost(string, tag = "3")]
145 pub error_message: ::prost::alloc::string::String,
146 #[prost(string, repeated, tag = "4")]
147 pub capabilities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
148 #[prost(bool, tag = "5")]
149 pub password_reset_required: bool,
150 #[prost(string, optional, tag = "6")]
151 pub graph: ::core::option::Option<::prost::alloc::string::String>,
152}
153#[derive(Clone, PartialEq, ::prost::Message)]
157pub struct ExecuteRequest {
158 #[prost(string, tag = "1")]
159 pub session_id: ::prost::alloc::string::String,
160 #[prost(string, tag = "2")]
161 pub query: ::prost::alloc::string::String,
162 #[prost(message, repeated, tag = "3")]
163 pub params: ::prost::alloc::vec::Vec<Param>,
164}
165#[derive(Clone, PartialEq, ::prost::Message)]
166pub struct Param {
167 #[prost(string, tag = "1")]
168 pub name: ::prost::alloc::string::String,
169 #[prost(message, optional, tag = "2")]
170 pub value: ::core::option::Option<Value>,
171}
172#[derive(Clone, PartialEq, ::prost::Message)]
173pub struct PullRequest {
174 #[prost(uint64, tag = "1")]
175 pub request_id: u64,
176 #[prost(uint32, tag = "2")]
177 pub page_size: u32,
178 #[prost(string, tag = "3")]
180 pub session_id: ::prost::alloc::string::String,
181}
182#[derive(Clone, PartialEq, ::prost::Message)]
183pub struct PullResponse {
184 #[prost(message, optional, tag = "1")]
185 pub response: ::core::option::Option<ExecutionResponse>,
186}
187#[derive(Clone, PartialEq, ::prost::Message)]
191pub struct Status {
192 #[prost(string, tag = "1")]
194 pub status_class: ::prost::alloc::string::String,
195 #[prost(string, tag = "2")]
196 pub status_subclass: ::prost::alloc::string::String,
197 #[prost(string, repeated, tag = "3")]
198 pub additional_statuses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
199 #[prost(string, repeated, tag = "4")]
200 pub flagger_findings: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
201}
202#[derive(Clone, PartialEq, ::prost::Message)]
203pub struct ExecutionResponse {
204 #[prost(message, optional, tag = "1")]
205 pub status: ::core::option::Option<Status>,
206 #[prost(oneof = "execution_response::Payload", tags = "2, 3, 4, 5, 6, 7, 8")]
207 pub payload: ::core::option::Option<execution_response::Payload>,
208}
209pub mod execution_response {
211 #[derive(Clone, PartialEq, ::prost::Oneof)]
212 pub enum Payload {
213 #[prost(message, tag = "2")]
214 Schema(super::SchemaDefinition),
215 #[prost(message, tag = "3")]
216 Page(super::DataPage),
217 #[prost(message, tag = "4")]
218 Error(super::Error),
219 #[prost(message, tag = "5")]
220 Metrics(super::ExecutionMetrics),
221 #[prost(message, tag = "6")]
222 Explain(super::ExplainPayload),
223 #[prost(message, tag = "7")]
224 Profile(super::ProfilePayload),
225 #[prost(message, tag = "8")]
226 Heartbeat(super::Heartbeat),
227 }
228}
229#[derive(Clone, PartialEq, ::prost::Message)]
230pub struct SchemaDefinition {
231 #[prost(message, repeated, tag = "1")]
232 pub columns: ::prost::alloc::vec::Vec<ColumnDefinition>,
233}
234#[derive(Clone, PartialEq, ::prost::Message)]
235pub struct ColumnDefinition {
236 #[prost(string, tag = "1")]
237 pub name: ::prost::alloc::string::String,
238 #[prost(string, tag = "2")]
239 pub r#type: ::prost::alloc::string::String,
240}
241#[derive(Clone, PartialEq, ::prost::Message)]
242pub struct DataPage {
243 #[prost(message, repeated, tag = "1")]
244 pub rows: ::prost::alloc::vec::Vec<Row>,
245 #[prost(bool, tag = "2")]
246 pub r#final: bool,
247 #[prost(bool, tag = "3")]
248 pub ordered: bool,
249 #[prost(string, repeated, tag = "4")]
250 pub order_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
251}
252#[derive(Clone, PartialEq, ::prost::Message)]
253pub struct Row {
254 #[prost(message, repeated, tag = "1")]
255 pub values: ::prost::alloc::vec::Vec<Value>,
256}
257#[derive(Clone, PartialEq, ::prost::Message)]
261pub struct Value {
262 #[prost(
263 oneof = "value::Kind",
264 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13"
265 )]
266 pub kind: ::core::option::Option<value::Kind>,
267}
268pub mod value {
270 #[derive(Clone, PartialEq, ::prost::Oneof)]
271 pub enum Kind {
272 #[prost(message, tag = "1")]
273 NullVal(super::NullValue),
274 #[prost(message, tag = "2")]
275 IntVal(super::IntValue),
276 #[prost(message, tag = "3")]
277 DoubleVal(super::DoubleValue),
278 #[prost(bool, tag = "4")]
279 BoolVal(bool),
280 #[prost(message, tag = "5")]
281 StringVal(super::StringValue),
282 #[prost(message, tag = "6")]
283 DecimalVal(super::DecimalValue),
284 #[prost(message, tag = "7")]
285 BytesVal(super::BytesValue),
286 #[prost(message, tag = "8")]
287 ListVal(super::ListValue),
288 #[prost(message, tag = "9")]
289 MapVal(super::MapValue),
290 #[prost(message, tag = "10")]
291 NodeVal(super::NodeValue),
292 #[prost(message, tag = "11")]
293 EdgeVal(super::EdgeValue),
294 #[prost(message, tag = "12")]
295 PathVal(super::PathValue),
296 #[prost(message, tag = "13")]
297 ExtVal(super::ExtendedValue),
298 }
299}
300#[derive(Clone, Copy, PartialEq, ::prost::Message)]
301pub struct NullValue {}
302#[derive(Clone, Copy, PartialEq, ::prost::Message)]
303pub struct IntValue {
304 #[prost(int64, tag = "1")]
305 pub value: i64,
306 #[prost(enumeration = "IntKind", tag = "2")]
307 pub kind: i32,
308}
309#[derive(Clone, Copy, PartialEq, ::prost::Message)]
310pub struct DoubleValue {
311 #[prost(double, tag = "1")]
312 pub value: f64,
313 #[prost(enumeration = "FloatKind", tag = "2")]
314 pub kind: i32,
315}
316#[derive(Clone, PartialEq, ::prost::Message)]
317pub struct StringValue {
318 #[prost(string, tag = "1")]
319 pub value: ::prost::alloc::string::String,
320 #[prost(enumeration = "StringKind", tag = "2")]
321 pub kind: i32,
322}
323#[derive(Clone, PartialEq, ::prost::Message)]
324pub struct DecimalValue {
325 #[prost(string, tag = "1")]
327 pub coeff: ::prost::alloc::string::String,
328 #[prost(uint32, tag = "2")]
329 pub scale: u32,
330 #[prost(uint32, tag = "3")]
331 pub orig_scale: u32,
332 #[prost(string, tag = "4")]
333 pub orig_repr: ::prost::alloc::string::String,
334}
335#[derive(Clone, PartialEq, ::prost::Message)]
336pub struct BytesValue {
337 #[prost(bytes = "vec", tag = "1")]
338 pub value: ::prost::alloc::vec::Vec<u8>,
339 #[prost(enumeration = "BytesKind", tag = "2")]
340 pub kind: i32,
341}
342#[derive(Clone, PartialEq, ::prost::Message)]
343pub struct ListValue {
344 #[prost(message, repeated, tag = "1")]
345 pub values: ::prost::alloc::vec::Vec<Value>,
346}
347#[derive(Clone, PartialEq, ::prost::Message)]
348pub struct MapEntry {
349 #[prost(string, tag = "1")]
350 pub key: ::prost::alloc::string::String,
351 #[prost(message, optional, tag = "2")]
352 pub value: ::core::option::Option<Value>,
353}
354#[derive(Clone, PartialEq, ::prost::Message)]
355pub struct MapValue {
356 #[prost(message, repeated, tag = "1")]
357 pub entries: ::prost::alloc::vec::Vec<MapEntry>,
358}
359#[derive(Clone, PartialEq, ::prost::Message)]
360pub struct NodeValue {
361 #[prost(uint64, tag = "1")]
362 pub id: u64,
363 #[prost(string, repeated, tag = "2")]
364 pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
365 #[prost(message, repeated, tag = "3")]
366 pub properties: ::prost::alloc::vec::Vec<MapEntry>,
367}
368#[derive(Clone, PartialEq, ::prost::Message)]
369pub struct EdgeValue {
370 #[prost(uint64, tag = "1")]
371 pub id: u64,
372 #[prost(uint64, tag = "2")]
373 pub from_id: u64,
374 #[prost(uint64, tag = "3")]
375 pub to_id: u64,
376 #[prost(string, tag = "4")]
377 pub label: ::prost::alloc::string::String,
378 #[prost(message, repeated, tag = "5")]
379 pub properties: ::prost::alloc::vec::Vec<MapEntry>,
380}
381#[derive(Clone, PartialEq, ::prost::Message)]
382pub struct PathValue {
383 #[prost(message, repeated, tag = "1")]
384 pub nodes: ::prost::alloc::vec::Vec<NodeValue>,
385 #[prost(message, repeated, tag = "2")]
386 pub edges: ::prost::alloc::vec::Vec<EdgeValue>,
387}
388#[derive(Clone, PartialEq, ::prost::Message)]
389pub struct ExtendedValue {
390 #[prost(string, tag = "1")]
391 pub type_name: ::prost::alloc::string::String,
392 #[prost(oneof = "extended_value::Data", tags = "2, 3, 4, 5, 6")]
393 pub data: ::core::option::Option<extended_value::Data>,
394}
395pub mod extended_value {
397 #[derive(Clone, PartialEq, ::prost::Oneof)]
398 pub enum Data {
399 #[prost(string, tag = "2")]
400 Text(::prost::alloc::string::String),
401 #[prost(bytes, tag = "3")]
402 Bytes(::prost::alloc::vec::Vec<u8>),
403 #[prost(int64, tag = "4")]
404 IntVal(i64),
405 #[prost(double, tag = "5")]
406 DoubleVal(f64),
407 #[prost(bool, tag = "6")]
408 BoolVal(bool),
409 }
410}
411#[derive(Clone, PartialEq, ::prost::Message)]
412pub struct Error {
413 #[prost(string, tag = "1")]
414 pub code: ::prost::alloc::string::String,
415 #[prost(string, tag = "2")]
416 pub message: ::prost::alloc::string::String,
417 #[prost(string, tag = "3")]
419 pub r#type: ::prost::alloc::string::String,
420 #[prost(string, tag = "4")]
421 pub anchor: ::prost::alloc::string::String,
422}
423#[derive(Clone, Copy, PartialEq, ::prost::Message)]
424pub struct ExecutionMetrics {
425 #[prost(int64, tag = "1")]
426 pub parse_duration_ns: i64,
427 #[prost(int64, tag = "2")]
428 pub plan_duration_ns: i64,
429 #[prost(int64, tag = "3")]
430 pub execute_duration_ns: i64,
431 #[prost(int64, tag = "4")]
432 pub total_duration_ns: i64,
433}
434#[derive(Clone, PartialEq, ::prost::Message)]
435pub struct ExplainOp {
436 #[prost(uint32, tag = "1")]
437 pub idx: u32,
438 #[prost(string, tag = "2")]
439 pub kind: ::prost::alloc::string::String,
440 #[prost(int64, tag = "3")]
441 pub est_rows: i64,
442 #[prost(int64, tag = "4")]
443 pub cost: i64,
444}
445#[derive(Clone, Copy, PartialEq, ::prost::Message)]
446pub struct ExplainTotals {
447 #[prost(int64, tag = "1")]
448 pub est_rows: i64,
449 #[prost(int64, tag = "2")]
450 pub cost: i64,
451}
452#[derive(Clone, PartialEq, ::prost::Message)]
453pub struct ExplainProperties {
454 #[prost(bool, tag = "1")]
455 pub ordered: bool,
456 #[prost(uint64, tag = "2")]
457 pub limit: u64,
458 #[prost(uint64, tag = "3")]
459 pub offset: u64,
460 #[prost(bool, tag = "4")]
461 pub distinct: bool,
462 #[prost(string, tag = "5")]
463 pub union_mode: ::prost::alloc::string::String,
464 #[prost(uint32, tag = "6")]
465 pub union_part_count: u32,
466}
467#[derive(Clone, Copy, PartialEq, ::prost::Message)]
468pub struct ExplainCalibrationEntry {
469 #[prost(uint32, tag = "1")]
470 pub idx: u32,
471 #[prost(double, tag = "2")]
472 pub est_rows: f64,
473 #[prost(double, tag = "3")]
474 pub actual_rows: f64,
475}
476#[derive(Clone, PartialEq, ::prost::Message)]
477pub struct ExplainCalibration {
478 #[prost(double, tag = "1")]
479 pub mape: f64,
480 #[prost(message, repeated, tag = "2")]
481 pub entries: ::prost::alloc::vec::Vec<ExplainCalibrationEntry>,
482}
483#[derive(Clone, PartialEq, ::prost::Message)]
484pub struct ExplainPayload {
485 #[prost(string, tag = "1")]
486 pub schema: ::prost::alloc::string::String,
487 #[prost(message, repeated, tag = "2")]
488 pub ops: ::prost::alloc::vec::Vec<ExplainOp>,
489 #[prost(message, optional, tag = "3")]
490 pub totals: ::core::option::Option<ExplainTotals>,
491 #[prost(message, optional, tag = "4")]
492 pub properties: ::core::option::Option<ExplainProperties>,
493 #[prost(message, optional, tag = "5")]
494 pub calibration: ::core::option::Option<ExplainCalibration>,
495 #[prost(uint32, tag = "6")]
496 pub profile_version: u32,
497}
498#[derive(Clone, PartialEq, ::prost::Message)]
499pub struct ProfileOp {
500 #[prost(string, tag = "1")]
501 pub op: ::prost::alloc::string::String,
502 #[prost(string, tag = "2")]
503 pub phase: ::prost::alloc::string::String,
504 #[prost(uint32, tag = "3")]
505 pub id: u32,
506 #[prost(uint32, tag = "4")]
507 pub op_index: u32,
508 #[prost(uint64, tag = "5")]
509 pub input_rows: u64,
510 #[prost(uint64, tag = "6")]
511 pub rows: u64,
512 #[prost(uint64, tag = "7")]
513 pub time_ns: u64,
514 #[prost(uint64, tag = "8")]
515 pub cpu_time_ns: u64,
516 #[prost(uint64, tag = "9")]
517 pub bytes_out: u64,
518 #[prost(uint64, tag = "10")]
519 pub bytes_alloc: u64,
520 #[prost(uint64, tag = "11")]
521 pub estimate_bytes: u64,
522 #[prost(uint64, tag = "12")]
523 pub estimate_vs_actual: u64,
524 #[prost(uint64, tag = "13")]
525 pub percent_peak: u64,
526 #[prost(uint64, tag = "14")]
527 pub percent_net: u64,
528 #[prost(uint64, tag = "15")]
529 pub cumulative_time_ns: u64,
530 #[prost(uint64, tag = "16")]
531 pub freed_bytes: u64,
532 #[prost(uint64, tag = "17")]
533 pub net_after_op: u64,
534 #[prost(uint64, tag = "18")]
535 pub error_bytes: u64,
536 #[prost(uint64, tag = "19")]
537 pub error_abs_pct: u64,
538 #[prost(string, tag = "20")]
539 pub index_name: ::prost::alloc::string::String,
540 #[prost(double, tag = "21")]
541 pub selectivity_est: f64,
542}
543#[derive(Clone, PartialEq, ::prost::Message)]
544pub struct ProfilePeakContributor {
545 #[prost(string, tag = "1")]
546 pub op: ::prost::alloc::string::String,
547 #[prost(uint64, tag = "2")]
548 pub bytes_alloc: u64,
549}
550#[derive(Clone, Copy, PartialEq, ::prost::Message)]
551pub struct ProfileTotals {
552 #[prost(uint64, tag = "1")]
553 pub time_ns: u64,
554 #[prost(uint64, tag = "2")]
555 pub peak_bytes: u64,
556}
557#[derive(Clone, PartialEq, ::prost::Message)]
558pub struct ProfileSpills {
559 #[prost(uint64, tag = "1")]
560 pub sort_spills: u64,
561 #[prost(uint64, tag = "2")]
562 pub distinct_spills: u64,
563 #[prost(uint64, tag = "3")]
564 pub union_spills: u64,
565 #[prost(string, tag = "4")]
566 pub spill_reason: ::prost::alloc::string::String,
567 #[prost(uint64, tag = "5")]
568 pub peak_bytes_at_spill: u64,
569 #[prost(uint32, tag = "6")]
570 pub first_spill_op_index: u32,
571}
572#[derive(Clone, Copy, PartialEq, ::prost::Message)]
573pub struct ProfileMemory {
574 #[prost(uint64, tag = "1")]
575 pub net_bytes: u64,
576 #[prost(uint64, tag = "2")]
577 pub peak_bytes: u64,
578 #[prost(uint64, tag = "3")]
579 pub total_alloc_bytes: u64,
580}
581#[derive(Clone, Copy, PartialEq, ::prost::Message)]
582pub struct ProfilePlannerEstimates {
583 #[prost(uint64, tag = "1")]
584 pub sum_estimate_bytes: u64,
585 #[prost(uint64, tag = "2")]
586 pub sum_actual_bytes: u64,
587 #[prost(uint32, tag = "3")]
588 pub count_estimated_ops: u32,
589 #[prost(double, tag = "4")]
590 pub min_error_abs_pct: f64,
591 #[prost(double, tag = "5")]
592 pub max_error_abs_pct: f64,
593 #[prost(double, tag = "6")]
594 pub mean_error_abs_pct: f64,
595 #[prost(double, tag = "7")]
596 pub median_error_abs_pct: f64,
597 #[prost(double, tag = "8")]
598 pub stddev_error_abs_pct: f64,
599 #[prost(double, tag = "9")]
600 pub adjusted_estimate_factor: f64,
601}
602#[derive(Clone, Copy, PartialEq, ::prost::Message)]
603pub struct ProfileMemCurvePoint {
604 #[prost(uint32, tag = "1")]
605 pub op_index: u32,
606 #[prost(uint64, tag = "2")]
607 pub net_after_op: u64,
608}
609#[derive(Clone, PartialEq, ::prost::Message)]
610pub struct ProfileSetOp {
611 #[prost(string, tag = "1")]
612 pub r#type: ::prost::alloc::string::String,
613 #[prost(string, tag = "2")]
614 pub mode: ::prost::alloc::string::String,
615 #[prost(uint64, tag = "3")]
616 pub input_rows: u64,
617 #[prost(uint64, tag = "4")]
618 pub output_rows: u64,
619 #[prost(uint64, tag = "5")]
620 pub hash_dedup_size: u64,
621 #[prost(uint64, tag = "6")]
622 pub distinct_fill_pct: u64,
623}
624#[derive(Clone, PartialEq, ::prost::Message)]
625pub struct ProfilePayload {
626 #[prost(uint32, tag = "1")]
627 pub profile_version: u32,
628 #[prost(message, repeated, tag = "2")]
629 pub ops: ::prost::alloc::vec::Vec<ProfileOp>,
630 #[prost(message, repeated, tag = "3")]
631 pub peak_contributors: ::prost::alloc::vec::Vec<ProfilePeakContributor>,
632 #[prost(message, optional, tag = "4")]
633 pub totals: ::core::option::Option<ProfileTotals>,
634 #[prost(uint64, tag = "5")]
635 pub total_time_ns: u64,
636 #[prost(message, optional, tag = "6")]
637 pub spills: ::core::option::Option<ProfileSpills>,
638 #[prost(message, optional, tag = "7")]
639 pub memory: ::core::option::Option<ProfileMemory>,
640 #[prost(message, optional, tag = "8")]
641 pub planner_estimates: ::core::option::Option<ProfilePlannerEstimates>,
642 #[prost(message, repeated, tag = "9")]
643 pub mem_curve: ::prost::alloc::vec::Vec<ProfileMemCurvePoint>,
644 #[prost(message, optional, tag = "10")]
645 pub setop: ::core::option::Option<ProfileSetOp>,
646 #[prost(uint64, tag = "11")]
647 pub hashagg_spills: u64,
648 #[prost(string, tag = "12")]
649 pub hashagg_spill_reason: ::prost::alloc::string::String,
650 #[prost(uint64, tag = "13")]
651 pub committed_txns: u64,
652 #[prost(uint64, tag = "14")]
653 pub graph_store_nodes: u64,
654 #[prost(uint64, tag = "15")]
655 pub graph_store_edges: u64,
656 #[prost(bool, tag = "16")]
657 pub graph_store_dirty: bool,
658 #[prost(string, repeated, tag = "17")]
659 pub flagger_findings: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
660 #[prost(bool, tag = "18")]
661 pub compact: bool,
662}
663#[derive(Clone, Copy, PartialEq, ::prost::Message)]
664pub struct Heartbeat {}
665#[derive(Clone, Copy, PartialEq, ::prost::Message)]
669pub struct PingRequest {}
670#[derive(Clone, Copy, PartialEq, ::prost::Message)]
671pub struct PingResponse {
672 #[prost(bool, tag = "1")]
673 pub ok: bool,
674}
675#[derive(Clone, PartialEq, ::prost::Message)]
679pub struct BeginRequest {
680 #[prost(bool, tag = "1")]
681 pub read_only: bool,
682 #[prost(string, tag = "2")]
684 pub session_id: ::prost::alloc::string::String,
685}
686#[derive(Clone, PartialEq, ::prost::Message)]
687pub struct BeginResponse {
688 #[prost(string, tag = "1")]
689 pub session_id: ::prost::alloc::string::String,
690 #[prost(string, tag = "2")]
691 pub tx_id: ::prost::alloc::string::String,
692}
693#[derive(Clone, PartialEq, ::prost::Message)]
694pub struct CommitRequest {
695 #[prost(string, tag = "1")]
697 pub session_id: ::prost::alloc::string::String,
698}
699#[derive(Clone, Copy, PartialEq, ::prost::Message)]
700pub struct CommitResponse {
701 #[prost(bool, tag = "1")]
702 pub success: bool,
703}
704#[derive(Clone, PartialEq, ::prost::Message)]
705pub struct RollbackRequest {
706 #[prost(string, tag = "1")]
708 pub session_id: ::prost::alloc::string::String,
709}
710#[derive(Clone, Copy, PartialEq, ::prost::Message)]
711pub struct RollbackResponse {
712 #[prost(bool, tag = "1")]
713 pub success: bool,
714}
715#[derive(Clone, PartialEq, ::prost::Message)]
716pub struct SavepointRequest {
717 #[prost(string, tag = "1")]
718 pub name: ::prost::alloc::string::String,
719 #[prost(string, tag = "2")]
721 pub session_id: ::prost::alloc::string::String,
722}
723#[derive(Clone, Copy, PartialEq, ::prost::Message)]
724pub struct SavepointResponse {
725 #[prost(bool, tag = "1")]
726 pub success: bool,
727}
728#[derive(Clone, PartialEq, ::prost::Message)]
729pub struct RollbackToRequest {
730 #[prost(string, tag = "1")]
731 pub name: ::prost::alloc::string::String,
732 #[prost(string, tag = "2")]
734 pub session_id: ::prost::alloc::string::String,
735}
736#[derive(Clone, Copy, PartialEq, ::prost::Message)]
737pub struct RollbackToResponse {
738 #[prost(bool, tag = "1")]
739 pub success: bool,
740}
741#[derive(Clone, Copy, PartialEq, ::prost::Message)]
745pub struct CdcDiagnosticsRequest {}
746#[derive(Clone, Copy, PartialEq, ::prost::Message)]
747pub struct CdcDiagnosticsConfig {
748 #[prost(bool, tag = "1")]
749 pub enabled: bool,
750 #[prost(uint64, tag = "2")]
751 pub malformed_snapshot_interval: u64,
752 #[prost(uint32, tag = "3")]
753 pub malformed_hash_retain: u32,
754 #[prost(double, tag = "4")]
755 pub malformed_warn_pct: f64,
756 #[prost(double, tag = "5")]
757 pub malformed_abort_pct: f64,
758 #[prost(uint32, tag = "6")]
759 pub flush_interval_ms: u32,
760 #[prost(uint32, tag = "7")]
761 pub batch_size: u32,
762 #[prost(uint64, tag = "8")]
763 pub pending_backpressure_watermark: u64,
764}
765#[derive(Clone, Copy, PartialEq, ::prost::Message)]
766pub struct CdcDiagnosticsEngine {
767 #[prost(bool, tag = "1")]
768 pub is_running: bool,
769 #[prost(int64, tag = "2")]
770 pub last_flush_ms: i64,
771 #[prost(uint64, tag = "3")]
772 pub peak_buffer: u64,
773 #[prost(uint64, tag = "4")]
774 pub current_buffer: u64,
775 #[prost(uint32, tag = "5")]
776 pub dynamic_batch_size: u32,
777 #[prost(uint32, tag = "6")]
778 pub batch_adjustments: u32,
779}
780#[derive(Clone, Copy, PartialEq, ::prost::Message)]
781pub struct CdcMalformedSnapshot {
782 #[prost(uint64, tag = "1")]
783 pub count: u64,
784 #[prost(int64, tag = "2")]
785 pub ts_ms: i64,
786}
787#[derive(Clone, PartialEq, ::prost::Message)]
788pub struct CdcMalformedHash {
789 #[prost(uint64, tag = "1")]
790 pub count: u64,
791 #[prost(uint64, tag = "2")]
792 pub hash: u64,
793 #[prost(int64, tag = "3")]
794 pub ts_ms: i64,
795 #[prost(string, tag = "4")]
796 pub prefix_hex: ::prost::alloc::string::String,
797}
798#[derive(Clone, PartialEq, ::prost::Message)]
799pub struct CdcDiagnosticsResponse {
800 #[prost(uint64, tag = "1")]
801 pub malformed_change_records: u64,
802 #[prost(uint64, tag = "2")]
803 pub total_change_attempts: u64,
804 #[prost(double, tag = "3")]
805 pub malformed_ratio: f64,
806 #[prost(bool, tag = "4")]
807 pub guardrail_warn_triggered: bool,
808 #[prost(bool, tag = "5")]
809 pub guardrail_abort_triggered: bool,
810 #[prost(int64, tag = "6")]
811 pub first_warn_ts_ms: i64,
812 #[prost(int64, tag = "7")]
813 pub first_abort_ts_ms: i64,
814 #[prost(uint64, tag = "8")]
815 pub guardrail_epoch: u64,
816 #[prost(int64, tag = "9")]
817 pub uptime_ms: i64,
818 #[prost(bool, tag = "10")]
819 pub backpressure: bool,
820 #[prost(message, optional, tag = "11")]
821 pub config: ::core::option::Option<CdcDiagnosticsConfig>,
822 #[prost(message, optional, tag = "12")]
823 pub engine: ::core::option::Option<CdcDiagnosticsEngine>,
824 #[prost(message, repeated, tag = "13")]
825 pub malformed_snapshots: ::prost::alloc::vec::Vec<CdcMalformedSnapshot>,
826 #[prost(message, repeated, tag = "14")]
827 pub malformed_hashes: ::prost::alloc::vec::Vec<CdcMalformedHash>,
828 #[prost(string, tag = "15")]
829 pub version: ::prost::alloc::string::String,
830 #[prost(int64, tag = "16")]
831 pub timestamp_ms: i64,
832}
833#[derive(Clone, PartialEq, ::prost::Message)]
834pub struct CdcControlRequest {
835 #[prost(string, tag = "1")]
836 pub action: ::prost::alloc::string::String,
837}
838#[derive(Clone, PartialEq, ::prost::Message)]
839pub struct CdcControlResponse {
840 #[prost(bool, tag = "1")]
841 pub success: bool,
842 #[prost(string, tag = "2")]
843 pub status: ::prost::alloc::string::String,
844 #[prost(uint64, tag = "3")]
845 pub guardrail_epoch: u64,
846}
847#[derive(Clone, PartialEq, ::prost::Message)]
851pub struct BackupRequest {
852 #[prost(string, tag = "1")]
854 pub backup_type: ::prost::alloc::string::String,
855 #[prost(bool, tag = "3")]
856 pub compress: bool,
857}
858#[derive(Clone, PartialEq, ::prost::Message)]
859pub struct BackupResponse {
860 #[prost(bool, tag = "1")]
861 pub success: bool,
862 #[prost(string, tag = "2")]
863 pub message: ::prost::alloc::string::String,
864 #[prost(string, tag = "3")]
865 pub backup_id: ::prost::alloc::string::String,
866 #[prost(string, tag = "4")]
867 pub backup_type: ::prost::alloc::string::String,
868 #[prost(uint64, tag = "5")]
869 pub size_bytes: u64,
870 #[prost(string, tag = "6")]
871 pub compression: ::prost::alloc::string::String,
872 #[prost(string, tag = "7")]
873 pub checksum: ::prost::alloc::string::String,
874}
875#[derive(Clone, PartialEq, ::prost::Message)]
876pub struct RestoreRequest {
877 #[prost(string, tag = "1")]
878 pub target_time: ::prost::alloc::string::String,
879 #[prost(bool, tag = "2")]
880 pub confirm: bool,
881}
882#[derive(Clone, PartialEq, ::prost::Message)]
883pub struct RestoreResponse {
884 #[prost(bool, tag = "1")]
885 pub success: bool,
886 #[prost(string, tag = "2")]
887 pub message: ::prost::alloc::string::String,
888 #[prost(string, tag = "3")]
889 pub restore_dir: ::prost::alloc::string::String,
890 #[prost(string, tag = "4")]
891 pub target_time: ::prost::alloc::string::String,
892 #[prost(uint64, tag = "5")]
893 pub restore_timestamp: u64,
894}
895#[derive(Clone, PartialEq, ::prost::Message)]
896pub struct UploadBackupRequest {
897 #[prost(uint64, tag = "1")]
898 pub size_bytes: u64,
899 #[prost(string, tag = "2")]
900 pub checksum: ::prost::alloc::string::String,
901}
902#[derive(Clone, PartialEq, ::prost::Message)]
903pub struct UploadBackupResponse {
904 #[prost(bool, tag = "1")]
905 pub success: bool,
906 #[prost(string, tag = "2")]
907 pub message: ::prost::alloc::string::String,
908 #[prost(string, tag = "3")]
909 pub upload_path: ::prost::alloc::string::String,
910}
911#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
912#[repr(i32)]
913pub enum IntKind {
914 Unspecified = 0,
915 Int = 1,
916 Smallint = 2,
917 Bigint = 3,
918}
919impl IntKind {
920 pub fn as_str_name(&self) -> &'static str {
925 match self {
926 Self::Unspecified => "INT_KIND_UNSPECIFIED",
927 Self::Int => "INT",
928 Self::Smallint => "SMALLINT",
929 Self::Bigint => "BIGINT",
930 }
931 }
932 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
934 match value {
935 "INT_KIND_UNSPECIFIED" => Some(Self::Unspecified),
936 "INT" => Some(Self::Int),
937 "SMALLINT" => Some(Self::Smallint),
938 "BIGINT" => Some(Self::Bigint),
939 _ => None,
940 }
941 }
942}
943#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
944#[repr(i32)]
945pub enum FloatKind {
946 Unspecified = 0,
947 Double = 1,
948 Real = 2,
949}
950impl FloatKind {
951 pub fn as_str_name(&self) -> &'static str {
956 match self {
957 Self::Unspecified => "FLOAT_KIND_UNSPECIFIED",
958 Self::Double => "DOUBLE",
959 Self::Real => "REAL",
960 }
961 }
962 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
964 match value {
965 "FLOAT_KIND_UNSPECIFIED" => Some(Self::Unspecified),
966 "DOUBLE" => Some(Self::Double),
967 "REAL" => Some(Self::Real),
968 _ => None,
969 }
970 }
971}
972#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
973#[repr(i32)]
974pub enum StringKind {
975 Unspecified = 0,
976 String = 1,
977 Char = 2,
978 Varchar = 3,
979 Text = 4,
980}
981impl StringKind {
982 pub fn as_str_name(&self) -> &'static str {
987 match self {
988 Self::Unspecified => "STRING_KIND_UNSPECIFIED",
989 Self::String => "STRING",
990 Self::Char => "CHAR",
991 Self::Varchar => "VARCHAR",
992 Self::Text => "TEXT",
993 }
994 }
995 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
997 match value {
998 "STRING_KIND_UNSPECIFIED" => Some(Self::Unspecified),
999 "STRING" => Some(Self::String),
1000 "CHAR" => Some(Self::Char),
1001 "VARCHAR" => Some(Self::Varchar),
1002 "TEXT" => Some(Self::Text),
1003 _ => None,
1004 }
1005 }
1006}
1007#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1008#[repr(i32)]
1009pub enum BytesKind {
1010 Unspecified = 0,
1011 Bytea = 1,
1012 Raw = 2,
1013}
1014impl BytesKind {
1015 pub fn as_str_name(&self) -> &'static str {
1020 match self {
1021 Self::Unspecified => "BYTES_KIND_UNSPECIFIED",
1022 Self::Bytea => "BYTEA",
1023 Self::Raw => "RAW",
1024 }
1025 }
1026 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1028 match value {
1029 "BYTES_KIND_UNSPECIFIED" => Some(Self::Unspecified),
1030 "BYTEA" => Some(Self::Bytea),
1031 "RAW" => Some(Self::Raw),
1032 _ => None,
1033 }
1034 }
1035}
1036pub mod geode_service_client {
1038 #![allow(
1039 unused_variables,
1040 dead_code,
1041 missing_docs,
1042 clippy::wildcard_imports,
1043 clippy::let_unit_value
1044 )]
1045 use tonic::codegen::http::Uri;
1046 use tonic::codegen::*;
1047 #[derive(Debug, Clone)]
1049 pub struct GeodeServiceClient<T> {
1050 inner: tonic::client::Grpc<T>,
1051 }
1052 impl GeodeServiceClient<tonic::transport::Channel> {
1053 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1055 where
1056 D: TryInto<tonic::transport::Endpoint>,
1057 D::Error: Into<StdError>,
1058 {
1059 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1060 Ok(Self::new(conn))
1061 }
1062 }
1063 impl<T> GeodeServiceClient<T>
1064 where
1065 T: tonic::client::GrpcService<tonic::body::BoxBody>,
1066 T::Error: Into<StdError>,
1067 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1068 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1069 {
1070 pub fn new(inner: T) -> Self {
1071 let inner = tonic::client::Grpc::new(inner);
1072 Self { inner }
1073 }
1074 pub fn with_origin(inner: T, origin: Uri) -> Self {
1075 let inner = tonic::client::Grpc::with_origin(inner, origin);
1076 Self { inner }
1077 }
1078 pub fn with_interceptor<F>(
1079 inner: T,
1080 interceptor: F,
1081 ) -> GeodeServiceClient<InterceptedService<T, F>>
1082 where
1083 F: tonic::service::Interceptor,
1084 T::ResponseBody: Default,
1085 T: tonic::codegen::Service<
1086 http::Request<tonic::body::BoxBody>,
1087 Response = http::Response<
1088 <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
1089 >,
1090 >,
1091 <T as tonic::codegen::Service<http::Request<tonic::body::BoxBody>>>::Error:
1092 Into<StdError> + std::marker::Send + std::marker::Sync,
1093 {
1094 GeodeServiceClient::new(InterceptedService::new(inner, interceptor))
1095 }
1096 #[must_use]
1101 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1102 self.inner = self.inner.send_compressed(encoding);
1103 self
1104 }
1105 #[must_use]
1107 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1108 self.inner = self.inner.accept_compressed(encoding);
1109 self
1110 }
1111 #[must_use]
1115 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1116 self.inner = self.inner.max_decoding_message_size(limit);
1117 self
1118 }
1119 #[must_use]
1123 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1124 self.inner = self.inner.max_encoding_message_size(limit);
1125 self
1126 }
1127 pub async fn handshake(
1128 &mut self,
1129 request: impl tonic::IntoRequest<super::HelloRequest>,
1130 ) -> std::result::Result<tonic::Response<super::HelloResponse>, tonic::Status> {
1131 self.inner.ready().await.map_err(|e| {
1132 tonic::Status::unknown(format!("Service was not ready: {}", e.into()))
1133 })?;
1134 let codec = tonic::codec::ProstCodec::default();
1135 let path = http::uri::PathAndQuery::from_static("/geode.GeodeService/Handshake");
1136 let mut req = request.into_request();
1137 req.extensions_mut()
1138 .insert(GrpcMethod::new("geode.GeodeService", "Handshake"));
1139 self.inner.unary(req, path, codec).await
1140 }
1141 pub async fn execute(
1142 &mut self,
1143 request: impl tonic::IntoRequest<super::ExecuteRequest>,
1144 ) -> std::result::Result<
1145 tonic::Response<tonic::codec::Streaming<super::ExecutionResponse>>,
1146 tonic::Status,
1147 > {
1148 self.inner.ready().await.map_err(|e| {
1149 tonic::Status::unknown(format!("Service was not ready: {}", e.into()))
1150 })?;
1151 let codec = tonic::codec::ProstCodec::default();
1152 let path = http::uri::PathAndQuery::from_static("/geode.GeodeService/Execute");
1153 let mut req = request.into_request();
1154 req.extensions_mut()
1155 .insert(GrpcMethod::new("geode.GeodeService", "Execute"));
1156 self.inner.server_streaming(req, path, codec).await
1157 }
1158 pub async fn ping(
1159 &mut self,
1160 request: impl tonic::IntoRequest<super::PingRequest>,
1161 ) -> std::result::Result<tonic::Response<super::PingResponse>, tonic::Status> {
1162 self.inner.ready().await.map_err(|e| {
1163 tonic::Status::unknown(format!("Service was not ready: {}", e.into()))
1164 })?;
1165 let codec = tonic::codec::ProstCodec::default();
1166 let path = http::uri::PathAndQuery::from_static("/geode.GeodeService/Ping");
1167 let mut req = request.into_request();
1168 req.extensions_mut()
1169 .insert(GrpcMethod::new("geode.GeodeService", "Ping"));
1170 self.inner.unary(req, path, codec).await
1171 }
1172 pub async fn begin(
1173 &mut self,
1174 request: impl tonic::IntoRequest<super::BeginRequest>,
1175 ) -> std::result::Result<tonic::Response<super::BeginResponse>, tonic::Status> {
1176 self.inner.ready().await.map_err(|e| {
1177 tonic::Status::unknown(format!("Service was not ready: {}", e.into()))
1178 })?;
1179 let codec = tonic::codec::ProstCodec::default();
1180 let path = http::uri::PathAndQuery::from_static("/geode.GeodeService/Begin");
1181 let mut req = request.into_request();
1182 req.extensions_mut()
1183 .insert(GrpcMethod::new("geode.GeodeService", "Begin"));
1184 self.inner.unary(req, path, codec).await
1185 }
1186 pub async fn commit(
1187 &mut self,
1188 request: impl tonic::IntoRequest<super::CommitRequest>,
1189 ) -> std::result::Result<tonic::Response<super::CommitResponse>, tonic::Status> {
1190 self.inner.ready().await.map_err(|e| {
1191 tonic::Status::unknown(format!("Service was not ready: {}", e.into()))
1192 })?;
1193 let codec = tonic::codec::ProstCodec::default();
1194 let path = http::uri::PathAndQuery::from_static("/geode.GeodeService/Commit");
1195 let mut req = request.into_request();
1196 req.extensions_mut()
1197 .insert(GrpcMethod::new("geode.GeodeService", "Commit"));
1198 self.inner.unary(req, path, codec).await
1199 }
1200 pub async fn rollback(
1201 &mut self,
1202 request: impl tonic::IntoRequest<super::RollbackRequest>,
1203 ) -> std::result::Result<tonic::Response<super::RollbackResponse>, tonic::Status> {
1204 self.inner.ready().await.map_err(|e| {
1205 tonic::Status::unknown(format!("Service was not ready: {}", e.into()))
1206 })?;
1207 let codec = tonic::codec::ProstCodec::default();
1208 let path = http::uri::PathAndQuery::from_static("/geode.GeodeService/Rollback");
1209 let mut req = request.into_request();
1210 req.extensions_mut()
1211 .insert(GrpcMethod::new("geode.GeodeService", "Rollback"));
1212 self.inner.unary(req, path, codec).await
1213 }
1214 pub async fn get_cdc_diagnostics(
1215 &mut self,
1216 request: impl tonic::IntoRequest<super::CdcDiagnosticsRequest>,
1217 ) -> std::result::Result<tonic::Response<super::CdcDiagnosticsResponse>, tonic::Status>
1218 {
1219 self.inner.ready().await.map_err(|e| {
1220 tonic::Status::unknown(format!("Service was not ready: {}", e.into()))
1221 })?;
1222 let codec = tonic::codec::ProstCodec::default();
1223 let path =
1224 http::uri::PathAndQuery::from_static("/geode.GeodeService/GetCdcDiagnostics");
1225 let mut req = request.into_request();
1226 req.extensions_mut()
1227 .insert(GrpcMethod::new("geode.GeodeService", "GetCdcDiagnostics"));
1228 self.inner.unary(req, path, codec).await
1229 }
1230 pub async fn control_cdc(
1231 &mut self,
1232 request: impl tonic::IntoRequest<super::CdcControlRequest>,
1233 ) -> std::result::Result<tonic::Response<super::CdcControlResponse>, tonic::Status>
1234 {
1235 self.inner.ready().await.map_err(|e| {
1236 tonic::Status::unknown(format!("Service was not ready: {}", e.into()))
1237 })?;
1238 let codec = tonic::codec::ProstCodec::default();
1239 let path = http::uri::PathAndQuery::from_static("/geode.GeodeService/ControlCdc");
1240 let mut req = request.into_request();
1241 req.extensions_mut()
1242 .insert(GrpcMethod::new("geode.GeodeService", "ControlCdc"));
1243 self.inner.unary(req, path, codec).await
1244 }
1245 }
1246}