From aa8c04807d85be763c2099dd4e5095e967f0ca03 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Fri, 25 Oct 2024 11:40:47 -0400 Subject: [PATCH] Revert "bump `tonic` to 0.12 and `prost` to 0.13 for `arrow-flight` (#6041)" This reverts commit 741bbf68546ffa2d9342cece82f3b1456f7a1f5b. --- arrow-flight/Cargo.toml | 11 +- arrow-flight/examples/flight_sql_server.rs | 6 +- arrow-flight/gen/Cargo.toml | 6 +- arrow-flight/gen/src/main.rs | 4 +- arrow-flight/src/arrow.flight.protocol.rs | 168 +++-- .../src/sql/arrow.flight.protocol.sql.rs | 593 ++++++++++-------- arrow-flight/tests/common/trailers_layer.rs | 32 +- arrow-integration-testing/Cargo.toml | 4 +- 8 files changed, 484 insertions(+), 340 deletions(-) diff --git a/arrow-flight/Cargo.toml b/arrow-flight/Cargo.toml index 5473c48166e7..5e33bc882180 100644 --- a/arrow-flight/Cargo.toml +++ b/arrow-flight/Cargo.toml @@ -44,11 +44,11 @@ bytes = { version = "1", default-features = false } futures = { version = "0.3", default-features = false, features = ["alloc"] } once_cell = { version = "1", optional = true } paste = { version = "1.0" } -prost = { version = "0.13.1", default-features = false, features = ["prost-derive"] } +prost = { version = "0.12.3", default-features = false, features = ["prost-derive"] } # For Timestamp type -prost-types = { version = "0.13.1", default-features = false } +prost-types = { version = "0.12.3", default-features = false } tokio = { version = "1.0", default-features = false, features = ["macros", "rt", "rt-multi-thread"] } -tonic = { version = "0.12.3", default-features = false, features = ["transport", "codegen", "prost"] } +tonic = { version = "0.11.0", default-features = false, features = ["transport", "codegen", "prost"] } # CLI-related dependencies anyhow = { version = "1.0", optional = true } @@ -70,9 +70,8 @@ cli = ["anyhow", "arrow-cast/prettyprint", "clap", "tracing-log", "tracing-subsc [dev-dependencies] arrow-cast = { workspace = true, features = ["prettyprint"] } assert_cmd = "2.0.8" -http = "1.1.0" -http-body = "1.0.0" -hyper-util = "0.1" +http = "0.2.9" +http-body = "0.4.5" pin-project-lite = "0.2" tempfile = "3.3" tokio-stream = { version = "0.1", features = ["net"] } diff --git a/arrow-flight/examples/flight_sql_server.rs b/arrow-flight/examples/flight_sql_server.rs index 8c6c6e710bae..8409f4bee2a2 100644 --- a/arrow-flight/examples/flight_sql_server.rs +++ b/arrow-flight/examples/flight_sql_server.rs @@ -792,8 +792,7 @@ impl ProstMessageExt for FetchResults { #[cfg(test)] mod tests { use super::*; - use futures::{TryFutureExt, TryStreamExt}; - use hyper_util::rt::TokioIo; + use futures::TryStreamExt; use std::fs; use std::future::Future; use std::net::SocketAddr; @@ -854,8 +853,7 @@ mod tests { .serve_with_incoming(stream); let request_future = async { - let connector = - service_fn(move |_| UnixStream::connect(path.clone()).map_ok(TokioIo::new)); + let connector = service_fn(move |_| UnixStream::connect(path.clone())); let channel = Endpoint::try_from("http://example.com") .unwrap() .connect_with_connector(connector) diff --git a/arrow-flight/gen/Cargo.toml b/arrow-flight/gen/Cargo.toml index 7c70926201df..7264a527ca8d 100644 --- a/arrow-flight/gen/Cargo.toml +++ b/arrow-flight/gen/Cargo.toml @@ -32,6 +32,6 @@ publish = false [dependencies] # Pin specific version of the tonic-build dependencies to avoid auto-generated # (and checked in) arrow.flight.protocol.rs from changing -proc-macro2 = { version = "=1.0.88", default-features = false } -prost-build = { version = "=0.13.3", default-features = false } -tonic-build = { version = "=0.12.3", default-features = false, features = ["transport", "prost"] } +proc-macro2 = { version = "=1.0.86", default-features = false } +prost-build = { version = "=0.12.6", default-features = false } +tonic-build = { version = "=0.11.0", default-features = false, features = ["transport", "prost"] } diff --git a/arrow-flight/gen/src/main.rs b/arrow-flight/gen/src/main.rs index a69134e7acbe..e8019b36607c 100644 --- a/arrow-flight/gen/src/main.rs +++ b/arrow-flight/gen/src/main.rs @@ -29,7 +29,7 @@ fn main() -> Result<(), Box> { // protoc in Ubuntu builder needs this option .protoc_arg("--experimental_allow_proto3_optional") .out_dir("src") - .compile_protos_with_config(prost_config(), &[proto_path], &[proto_dir])?; + .compile_with_config(prost_config(), &[proto_path], &[proto_dir])?; // read file contents to string let mut file = OpenOptions::new() @@ -52,7 +52,7 @@ fn main() -> Result<(), Box> { // protoc in Ubuntu builder needs this option .protoc_arg("--experimental_allow_proto3_optional") .out_dir("src/sql") - .compile_protos_with_config(prost_config(), &[proto_path], &[proto_dir])?; + .compile_with_config(prost_config(), &[proto_path], &[proto_dir])?; // read file contents to string let mut file = OpenOptions::new() diff --git a/arrow-flight/src/arrow.flight.protocol.rs b/arrow-flight/src/arrow.flight.protocol.rs index 0cd4f6948b77..bc314de9d19f 100644 --- a/arrow-flight/src/arrow.flight.protocol.rs +++ b/arrow-flight/src/arrow.flight.protocol.rs @@ -3,6 +3,7 @@ // This file is @generated by prost-build. /// /// The request that a client provides to a server on handshake. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct HandshakeRequest { /// @@ -14,6 +15,7 @@ pub struct HandshakeRequest { #[prost(bytes = "bytes", tag = "2")] pub payload: ::prost::bytes::Bytes, } +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct HandshakeResponse { /// @@ -27,6 +29,7 @@ pub struct HandshakeResponse { } /// /// A message for doing simple auth. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct BasicAuth { #[prost(string, tag = "2")] @@ -34,11 +37,13 @@ pub struct BasicAuth { #[prost(string, tag = "3")] pub password: ::prost::alloc::string::String, } -#[derive(Clone, Copy, PartialEq, ::prost::Message)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] pub struct Empty {} /// /// Describes an available action, including both the name used for execution /// along with a short description of the purpose of the action. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ActionType { #[prost(string, tag = "1")] @@ -49,6 +54,7 @@ pub struct ActionType { /// /// A service specific expression that can be used to return a limited set /// of available Arrow Flight streams. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Criteria { #[prost(bytes = "bytes", tag = "1")] @@ -56,6 +62,7 @@ pub struct Criteria { } /// /// An opaque action specific for the service. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Action { #[prost(string, tag = "1")] @@ -67,6 +74,7 @@ pub struct Action { /// The request of the CancelFlightInfo action. /// /// The request should be stored in Action.body. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CancelFlightInfoRequest { #[prost(message, optional, tag = "1")] @@ -76,6 +84,7 @@ pub struct CancelFlightInfoRequest { /// The request of the RenewFlightEndpoint action. /// /// The request should be stored in Action.body. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct RenewFlightEndpointRequest { #[prost(message, optional, tag = "1")] @@ -83,6 +92,7 @@ pub struct RenewFlightEndpointRequest { } /// /// An opaque result returned after executing an action. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Result { #[prost(bytes = "bytes", tag = "1")] @@ -92,13 +102,15 @@ pub struct Result { /// The result of the CancelFlightInfo action. /// /// The result should be stored in Result.body. -#[derive(Clone, Copy, PartialEq, ::prost::Message)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] pub struct CancelFlightInfoResult { #[prost(enumeration = "CancelStatus", tag = "1")] pub status: i32, } /// /// Wrap the result of a getSchema call +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct SchemaResult { /// The schema of the dataset in its IPC form: @@ -111,6 +123,7 @@ pub struct SchemaResult { /// /// The name or tag for a Flight. May be used as a way to retrieve or generate /// a flight or be used to expose a set of previously defined flights. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct FlightDescriptor { #[prost(enumeration = "flight_descriptor::DescriptorType", tag = "1")] @@ -161,9 +174,9 @@ pub mod flight_descriptor { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::Unknown => "UNKNOWN", - Self::Path => "PATH", - Self::Cmd => "CMD", + DescriptorType::Unknown => "UNKNOWN", + DescriptorType::Path => "PATH", + DescriptorType::Cmd => "CMD", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -180,6 +193,7 @@ pub mod flight_descriptor { /// /// The access coordinates for retrieval of a dataset. With a FlightInfo, a /// consumer is able to determine how to retrieve a dataset. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct FlightInfo { /// The schema of the dataset in its IPC form: @@ -239,6 +253,7 @@ pub struct FlightInfo { } /// /// The information to process a long-running query. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct PollInfo { /// @@ -279,6 +294,7 @@ pub struct PollInfo { } /// /// A particular stream or split associated with a flight. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct FlightEndpoint { /// @@ -322,6 +338,7 @@ pub struct FlightEndpoint { /// /// A location where a Flight service will accept retrieval of a particular /// stream given a ticket. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Location { #[prost(string, tag = "1")] @@ -333,6 +350,7 @@ pub struct Location { /// /// Tickets are meant to be single use. It is an error/application-defined /// behavior to reuse a ticket. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Ticket { #[prost(bytes = "bytes", tag = "1")] @@ -340,6 +358,7 @@ pub struct Ticket { } /// /// A batch of Arrow data as part of a stream of batches. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct FlightData { /// @@ -365,6 +384,7 @@ pub struct FlightData { } /// * /// The response message associated with the submission of a DoPut. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct PutResult { #[prost(bytes = "bytes", tag = "1")] @@ -398,10 +418,10 @@ impl CancelStatus { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::Unspecified => "CANCEL_STATUS_UNSPECIFIED", - Self::Cancelled => "CANCEL_STATUS_CANCELLED", - Self::Cancelling => "CANCEL_STATUS_CANCELLING", - Self::NotCancellable => "CANCEL_STATUS_NOT_CANCELLABLE", + CancelStatus::Unspecified => "CANCEL_STATUS_UNSPECIFIED", + CancelStatus::Cancelled => "CANCEL_STATUS_CANCELLED", + CancelStatus::Cancelling => "CANCEL_STATUS_CANCELLING", + CancelStatus::NotCancellable => "CANCEL_STATUS_NOT_CANCELLABLE", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -417,13 +437,7 @@ impl CancelStatus { } /// Generated client implementations. pub mod flight_service_client { - #![allow( - unused_variables, - dead_code, - missing_docs, - clippy::wildcard_imports, - clippy::let_unit_value, - )] + #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] use tonic::codegen::*; use tonic::codegen::http::Uri; /// @@ -450,8 +464,8 @@ pub mod flight_service_client { where T: tonic::client::GrpcService, T::Error: Into, - T::ResponseBody: Body + std::marker::Send + 'static, - ::Error: Into + std::marker::Send, + T::ResponseBody: Body + Send + 'static, + ::Error: Into + Send, { pub fn new(inner: T) -> Self { let inner = tonic::client::Grpc::new(inner); @@ -476,7 +490,7 @@ pub mod flight_service_client { >, , - >>::Error: Into + std::marker::Send + std::marker::Sync, + >>::Error: Into + Send + Sync, { FlightServiceClient::new(InterceptedService::new(inner, interceptor)) } @@ -527,7 +541,8 @@ pub mod flight_service_client { .ready() .await .map_err(|e| { - tonic::Status::unknown( + tonic::Status::new( + tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; @@ -560,7 +575,8 @@ pub mod flight_service_client { .ready() .await .map_err(|e| { - tonic::Status::unknown( + tonic::Status::new( + tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; @@ -594,7 +610,8 @@ pub mod flight_service_client { .ready() .await .map_err(|e| { - tonic::Status::unknown( + tonic::Status::new( + tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; @@ -643,7 +660,8 @@ pub mod flight_service_client { .ready() .await .map_err(|e| { - tonic::Status::unknown( + tonic::Status::new( + tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; @@ -674,7 +692,8 @@ pub mod flight_service_client { .ready() .await .map_err(|e| { - tonic::Status::unknown( + tonic::Status::new( + tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; @@ -705,7 +724,8 @@ pub mod flight_service_client { .ready() .await .map_err(|e| { - tonic::Status::unknown( + tonic::Status::new( + tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; @@ -736,7 +756,8 @@ pub mod flight_service_client { .ready() .await .map_err(|e| { - tonic::Status::unknown( + tonic::Status::new( + tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; @@ -766,7 +787,8 @@ pub mod flight_service_client { .ready() .await .map_err(|e| { - tonic::Status::unknown( + tonic::Status::new( + tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; @@ -799,7 +821,8 @@ pub mod flight_service_client { .ready() .await .map_err(|e| { - tonic::Status::unknown( + tonic::Status::new( + tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; @@ -829,7 +852,8 @@ pub mod flight_service_client { .ready() .await .map_err(|e| { - tonic::Status::unknown( + tonic::Status::new( + tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; @@ -848,22 +872,16 @@ pub mod flight_service_client { } /// Generated server implementations. pub mod flight_service_server { - #![allow( - unused_variables, - dead_code, - missing_docs, - clippy::wildcard_imports, - clippy::let_unit_value, - )] + #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] use tonic::codegen::*; /// Generated trait containing gRPC methods that should be implemented for use with FlightServiceServer. #[async_trait] - pub trait FlightService: std::marker::Send + std::marker::Sync + 'static { + pub trait FlightService: Send + Sync + 'static { /// Server streaming response type for the Handshake method. type HandshakeStream: tonic::codegen::tokio_stream::Stream< Item = std::result::Result, > - + std::marker::Send + + Send + 'static; /// /// Handshake between client and server. Depending on the server, the @@ -878,7 +896,7 @@ pub mod flight_service_server { type ListFlightsStream: tonic::codegen::tokio_stream::Stream< Item = std::result::Result, > - + std::marker::Send + + Send + 'static; /// /// Get a list of available streams given a particular criteria. Most flight @@ -949,7 +967,7 @@ pub mod flight_service_server { type DoGetStream: tonic::codegen::tokio_stream::Stream< Item = std::result::Result, > - + std::marker::Send + + Send + 'static; /// /// Retrieve a single stream associated with a particular descriptor @@ -964,7 +982,7 @@ pub mod flight_service_server { type DoPutStream: tonic::codegen::tokio_stream::Stream< Item = std::result::Result, > - + std::marker::Send + + Send + 'static; /// /// Push a stream to the flight service associated with a particular @@ -981,7 +999,7 @@ pub mod flight_service_server { type DoExchangeStream: tonic::codegen::tokio_stream::Stream< Item = std::result::Result, > - + std::marker::Send + + Send + 'static; /// /// Open a bidirectional data channel for a given descriptor. This @@ -997,7 +1015,7 @@ pub mod flight_service_server { type DoActionStream: tonic::codegen::tokio_stream::Stream< Item = std::result::Result, > - + std::marker::Send + + Send + 'static; /// /// Flight services can support an arbitrary number of simple actions in @@ -1014,7 +1032,7 @@ pub mod flight_service_server { type ListActionsStream: tonic::codegen::tokio_stream::Stream< Item = std::result::Result, > - + std::marker::Send + + Send + 'static; /// /// A flight service exposes all of the available action types that it has @@ -1034,18 +1052,20 @@ pub mod flight_service_server { /// accessed using the Arrow Flight Protocol. Additionally, a flight service /// can expose a set of actions that are available. #[derive(Debug)] - pub struct FlightServiceServer { - inner: Arc, + pub struct FlightServiceServer { + inner: _Inner, accept_compression_encodings: EnabledCompressionEncodings, send_compression_encodings: EnabledCompressionEncodings, max_decoding_message_size: Option, max_encoding_message_size: Option, } - impl FlightServiceServer { + struct _Inner(Arc); + impl FlightServiceServer { pub fn new(inner: T) -> Self { Self::from_arc(Arc::new(inner)) } pub fn from_arc(inner: Arc) -> Self { + let inner = _Inner(inner); Self { inner, accept_compression_encodings: Default::default(), @@ -1095,8 +1115,8 @@ pub mod flight_service_server { impl tonic::codegen::Service> for FlightServiceServer where T: FlightService, - B: Body + std::marker::Send + 'static, - B::Error: Into + std::marker::Send + 'static, + B: Body + Send + 'static, + B::Error: Into + Send + 'static, { type Response = http::Response; type Error = std::convert::Infallible; @@ -1108,6 +1128,7 @@ pub mod flight_service_server { Poll::Ready(Ok(())) } fn call(&mut self, req: http::Request) -> Self::Future { + let inner = self.inner.clone(); match req.uri().path() { "/arrow.flight.protocol.FlightService/Handshake" => { #[allow(non_camel_case_types)] @@ -1141,6 +1162,7 @@ pub mod flight_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { + let inner = inner.0; let method = HandshakeSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -1187,6 +1209,7 @@ pub mod flight_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { + let inner = inner.0; let method = ListFlightsSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -1232,6 +1255,7 @@ pub mod flight_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { + let inner = inner.0; let method = GetFlightInfoSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -1278,6 +1302,7 @@ pub mod flight_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { + let inner = inner.0; let method = PollFlightInfoSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -1323,6 +1348,7 @@ pub mod flight_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { + let inner = inner.0; let method = GetSchemaSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -1369,6 +1395,7 @@ pub mod flight_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { + let inner = inner.0; let method = DoGetSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -1415,6 +1442,7 @@ pub mod flight_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { + let inner = inner.0; let method = DoPutSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -1461,6 +1489,7 @@ pub mod flight_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { + let inner = inner.0; let method = DoExchangeSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -1507,6 +1536,7 @@ pub mod flight_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { + let inner = inner.0; let method = DoActionSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -1553,6 +1583,7 @@ pub mod flight_service_server { let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { + let inner = inner.0; let method = ListActionsSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) @@ -1571,25 +1602,20 @@ pub mod flight_service_server { } _ => { Box::pin(async move { - let mut response = http::Response::new(empty_body()); - let headers = response.headers_mut(); - headers - .insert( - tonic::Status::GRPC_STATUS, - (tonic::Code::Unimplemented as i32).into(), - ); - headers - .insert( - http::header::CONTENT_TYPE, - tonic::metadata::GRPC_CONTENT_TYPE, - ); - Ok(response) + Ok( + http::Response::builder() + .status(200) + .header("grpc-status", "12") + .header("content-type", "application/grpc") + .body(empty_body()) + .unwrap(), + ) }) } } } } - impl Clone for FlightServiceServer { + impl Clone for FlightServiceServer { fn clone(&self) -> Self { let inner = self.inner.clone(); Self { @@ -1601,9 +1627,17 @@ pub mod flight_service_server { } } } - /// Generated gRPC service name - pub const SERVICE_NAME: &str = "arrow.flight.protocol.FlightService"; - impl tonic::server::NamedService for FlightServiceServer { - const NAME: &'static str = SERVICE_NAME; + impl Clone for _Inner { + fn clone(&self) -> Self { + Self(Arc::clone(&self.0)) + } + } + impl std::fmt::Debug for _Inner { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{:?}", self.0) + } + } + impl tonic::server::NamedService for FlightServiceServer { + const NAME: &'static str = "arrow.flight.protocol.FlightService"; } } diff --git a/arrow-flight/src/sql/arrow.flight.protocol.sql.rs b/arrow-flight/src/sql/arrow.flight.protocol.sql.rs index 7a37a0b28856..822f095ed088 100644 --- a/arrow-flight/src/sql/arrow.flight.protocol.sql.rs +++ b/arrow-flight/src/sql/arrow.flight.protocol.sql.rs @@ -19,6 +19,7 @@ /// int32_to_int32_list_map: map> /// > /// where there is one row per requested piece of metadata information. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandGetSqlInfo { /// @@ -99,7 +100,8 @@ pub struct CommandGetSqlInfo { /// is only relevant to be used by ODBC). /// > /// The returned data should be ordered by data_type and then by type_name. -#[derive(Clone, Copy, PartialEq, ::prost::Message)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandGetXdbcTypeInfo { /// /// Specifies the data type to search for the info. @@ -118,7 +120,8 @@ pub struct CommandGetXdbcTypeInfo { /// catalog_name: utf8 not null /// > /// The returned data should be ordered by catalog_name. -#[derive(Clone, Copy, PartialEq, ::prost::Message)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandGetCatalogs {} /// /// Represents a request to retrieve the list of database schemas on a Flight SQL enabled backend. @@ -133,6 +136,7 @@ pub struct CommandGetCatalogs {} /// db_schema_name: utf8 not null /// > /// The returned data should be ordered by catalog_name, then db_schema_name. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandGetDbSchemas { /// @@ -177,6 +181,7 @@ pub struct CommandGetDbSchemas { /// - ARROW:FLIGHT:SQL:IS_READ_ONLY - "1" indicates if the column is read only, "0" otherwise. /// - ARROW:FLIGHT:SQL:IS_SEARCHABLE - "1" indicates if the column is searchable via WHERE clause, "0" otherwise. /// The returned data should be ordered by catalog_name, db_schema_name, table_name, then table_type, followed by table_schema if requested. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandGetTables { /// @@ -226,7 +231,8 @@ pub struct CommandGetTables { /// table_type: utf8 not null /// > /// The returned data should be ordered by table_type. -#[derive(Clone, Copy, PartialEq, ::prost::Message)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandGetTableTypes {} /// /// Represents a request to retrieve the primary keys of a table on a Flight SQL enabled backend. @@ -244,6 +250,7 @@ pub struct CommandGetTableTypes {} /// key_sequence: int32 not null /// > /// The returned data should be ordered by catalog_name, db_schema_name, table_name, key_name, then key_sequence. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandGetPrimaryKeys { /// @@ -287,6 +294,7 @@ pub struct CommandGetPrimaryKeys { /// > /// The returned data should be ordered by fk_catalog_name, fk_db_schema_name, fk_table_name, fk_key_name, then key_sequence. /// update_rule and delete_rule returns a byte that is equivalent to actions declared on UpdateDeleteRules enum. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandGetExportedKeys { /// @@ -334,6 +342,7 @@ pub struct CommandGetExportedKeys { /// - 2 = SET NULL /// - 3 = NO ACTION /// - 4 = SET DEFAULT +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandGetImportedKeys { /// @@ -383,6 +392,7 @@ pub struct CommandGetImportedKeys { /// - 2 = SET NULL /// - 3 = NO ACTION /// - 4 = SET DEFAULT +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandGetCrossReference { /// * @@ -420,6 +430,7 @@ pub struct CommandGetCrossReference { } /// /// Request message for the "CreatePreparedStatement" action on a Flight SQL enabled backend. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ActionCreatePreparedStatementRequest { /// The valid SQL string to create a prepared statement for. @@ -432,6 +443,7 @@ pub struct ActionCreatePreparedStatementRequest { } /// /// An embedded message describing a Substrait plan to execute. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct SubstraitPlan { /// The serialized substrait.Plan to create a prepared statement for. @@ -448,6 +460,7 @@ pub struct SubstraitPlan { } /// /// Request message for the "CreatePreparedSubstraitPlan" action on a Flight SQL enabled backend. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ActionCreatePreparedSubstraitPlanRequest { /// The serialized substrait.Plan to create a prepared statement for. @@ -466,6 +479,7 @@ pub struct ActionCreatePreparedSubstraitPlanRequest { /// - Automatically, by a server timeout. /// /// The result should be wrapped in a google.protobuf.Any message. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ActionCreatePreparedStatementResult { /// Opaque handle for the prepared statement on the server. @@ -486,6 +500,7 @@ pub struct ActionCreatePreparedStatementResult { /// /// Request message for the "ClosePreparedStatement" action on a Flight SQL enabled backend. /// Closes server resources associated with the prepared statement handle. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ActionClosePreparedStatementRequest { /// Opaque handle for the prepared statement on the server. @@ -495,7 +510,8 @@ pub struct ActionClosePreparedStatementRequest { /// /// Request message for the "BeginTransaction" action. /// Begins a transaction. -#[derive(Clone, Copy, PartialEq, ::prost::Message)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] pub struct ActionBeginTransactionRequest {} /// /// Request message for the "BeginSavepoint" action. @@ -503,6 +519,7 @@ pub struct ActionBeginTransactionRequest {} /// /// Only supported if FLIGHT_SQL_TRANSACTION is /// FLIGHT_SQL_TRANSACTION_SUPPORT_SAVEPOINT. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ActionBeginSavepointRequest { /// The transaction to which a savepoint belongs. @@ -520,6 +537,7 @@ pub struct ActionBeginSavepointRequest { /// automatically rolled back. /// /// The result should be wrapped in a google.protobuf.Any message. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ActionBeginTransactionResult { /// Opaque handle for the transaction on the server. @@ -534,6 +552,7 @@ pub struct ActionBeginTransactionResult { /// out, then the savepoint is also invalidated. /// /// The result should be wrapped in a google.protobuf.Any message. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ActionBeginSavepointResult { /// Opaque handle for the savepoint on the server. @@ -547,6 +566,7 @@ pub struct ActionBeginSavepointResult { /// /// If the action completes successfully, the transaction handle is /// invalidated, as are all associated savepoints. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ActionEndTransactionRequest { /// Opaque handle for the transaction on the server. @@ -584,9 +604,9 @@ pub mod action_end_transaction_request { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::Unspecified => "END_TRANSACTION_UNSPECIFIED", - Self::Commit => "END_TRANSACTION_COMMIT", - Self::Rollback => "END_TRANSACTION_ROLLBACK", + EndTransaction::Unspecified => "END_TRANSACTION_UNSPECIFIED", + EndTransaction::Commit => "END_TRANSACTION_COMMIT", + EndTransaction::Rollback => "END_TRANSACTION_ROLLBACK", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -609,6 +629,7 @@ pub mod action_end_transaction_request { /// Releasing a savepoint invalidates that savepoint. Rolling back to /// a savepoint does not invalidate the savepoint, but invalidates all /// savepoints created after the current savepoint. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ActionEndSavepointRequest { /// Opaque handle for the savepoint on the server. @@ -646,9 +667,9 @@ pub mod action_end_savepoint_request { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::Unspecified => "END_SAVEPOINT_UNSPECIFIED", - Self::Release => "END_SAVEPOINT_RELEASE", - Self::Rollback => "END_SAVEPOINT_ROLLBACK", + EndSavepoint::Unspecified => "END_SAVEPOINT_UNSPECIFIED", + EndSavepoint::Release => "END_SAVEPOINT_RELEASE", + EndSavepoint::Rollback => "END_SAVEPOINT_ROLLBACK", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -678,6 +699,7 @@ pub mod action_end_savepoint_request { /// - ARROW:FLIGHT:SQL:IS_READ_ONLY - "1" indicates if the column is read only, "0" otherwise. /// - ARROW:FLIGHT:SQL:IS_SEARCHABLE - "1" indicates if the column is searchable via WHERE clause, "0" otherwise. /// - GetFlightInfo: execute the query. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandStatementQuery { /// The SQL syntax. @@ -704,6 +726,7 @@ pub struct CommandStatementQuery { /// - ARROW:FLIGHT:SQL:IS_SEARCHABLE - "1" indicates if the column is searchable via WHERE clause, "0" otherwise. /// - GetFlightInfo: execute the query. /// - DoPut: execute the query. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandStatementSubstraitPlan { /// A serialized substrait.Plan @@ -716,6 +739,7 @@ pub struct CommandStatementSubstraitPlan { /// * /// Represents a ticket resulting from GetFlightInfo with a CommandStatementQuery. /// This should be used only once and treated as an opaque value, that is, clients should not attempt to parse this. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TicketStatementQuery { /// Unique identifier for the instance of the statement to execute. @@ -742,6 +766,7 @@ pub struct TicketStatementQuery { /// for the parameters when determining the schema. /// - DoPut: bind parameter values. All of the bound parameter sets will be executed as a single atomic execution. /// - GetFlightInfo: execute the prepared statement instance. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandPreparedStatementQuery { /// Opaque handle for the prepared statement on the server. @@ -751,6 +776,7 @@ pub struct CommandPreparedStatementQuery { /// /// Represents a SQL update query. Used in the command member of FlightDescriptor /// for the RPC call DoPut to cause the server to execute the included SQL update. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandStatementUpdate { /// The SQL syntax. @@ -764,6 +790,7 @@ pub struct CommandStatementUpdate { /// Represents a SQL update query. Used in the command member of FlightDescriptor /// for the RPC call DoPut to cause the server to execute the included /// prepared statement handle as an update. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandPreparedStatementUpdate { /// Opaque handle for the prepared statement on the server. @@ -774,6 +801,7 @@ pub struct CommandPreparedStatementUpdate { /// Represents a bulk ingestion request. Used in the command member of FlightDescriptor /// for the the RPC call DoPut to cause the server load the contents of the stream's /// FlightData into the target destination. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommandStatementIngest { /// The behavior for handling the table definition. @@ -810,7 +838,8 @@ pub struct CommandStatementIngest { /// Nested message and enum types in `CommandStatementIngest`. pub mod command_statement_ingest { /// Options for table definition behavior - #[derive(Clone, Copy, PartialEq, ::prost::Message)] + #[allow(clippy::derive_partial_eq_without_eq)] + #[derive(Clone, PartialEq, ::prost::Message)] pub struct TableDefinitionOptions { #[prost( enumeration = "table_definition_options::TableNotExistOption", @@ -850,9 +879,11 @@ pub mod command_statement_ingest { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::Unspecified => "TABLE_NOT_EXIST_OPTION_UNSPECIFIED", - Self::Create => "TABLE_NOT_EXIST_OPTION_CREATE", - Self::Fail => "TABLE_NOT_EXIST_OPTION_FAIL", + TableNotExistOption::Unspecified => { + "TABLE_NOT_EXIST_OPTION_UNSPECIFIED" + } + TableNotExistOption::Create => "TABLE_NOT_EXIST_OPTION_CREATE", + TableNotExistOption::Fail => "TABLE_NOT_EXIST_OPTION_FAIL", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -895,10 +926,10 @@ pub mod command_statement_ingest { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::Unspecified => "TABLE_EXISTS_OPTION_UNSPECIFIED", - Self::Fail => "TABLE_EXISTS_OPTION_FAIL", - Self::Append => "TABLE_EXISTS_OPTION_APPEND", - Self::Replace => "TABLE_EXISTS_OPTION_REPLACE", + TableExistsOption::Unspecified => "TABLE_EXISTS_OPTION_UNSPECIFIED", + TableExistsOption::Fail => "TABLE_EXISTS_OPTION_FAIL", + TableExistsOption::Append => "TABLE_EXISTS_OPTION_APPEND", + TableExistsOption::Replace => "TABLE_EXISTS_OPTION_REPLACE", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -918,7 +949,8 @@ pub mod command_statement_ingest { /// Returned from the RPC call DoPut when a CommandStatementUpdate, /// CommandPreparedStatementUpdate, or CommandStatementIngest was /// in the request, containing results from the update. -#[derive(Clone, Copy, PartialEq, ::prost::Message)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] pub struct DoPutUpdateResult { /// The number of records updated. A return value of -1 represents /// an unknown updated record count. @@ -930,6 +962,7 @@ pub struct DoPutUpdateResult { /// *Note on legacy behavior*: previous versions of the protocol did not return any result for /// this command, and that behavior should still be supported by clients. In that case, the client /// can continue as though the fields in this message were not provided or set to sensible default values. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct DoPutPreparedStatementResult { /// Represents a (potentially updated) opaque handle for the prepared statement on the server. @@ -959,6 +992,7 @@ pub struct DoPutPreparedStatementResult { /// /// This command is deprecated since 13.0.0. Use the "CancelFlightInfo" /// action with DoAction instead. +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ActionCancelQueryRequest { /// The result of the GetFlightInfo RPC that initiated the query. @@ -975,7 +1009,8 @@ pub struct ActionCancelQueryRequest { /// /// This command is deprecated since 13.0.0. Use the "CancelFlightInfo" /// action with DoAction instead. -#[derive(Clone, Copy, PartialEq, ::prost::Message)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] pub struct ActionCancelQueryResult { #[prost(enumeration = "action_cancel_query_result::CancelResult", tag = "1")] pub result: i32, @@ -1016,10 +1051,10 @@ pub mod action_cancel_query_result { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::Unspecified => "CANCEL_RESULT_UNSPECIFIED", - Self::Cancelled => "CANCEL_RESULT_CANCELLED", - Self::Cancelling => "CANCEL_RESULT_CANCELLING", - Self::NotCancellable => "CANCEL_RESULT_NOT_CANCELLABLE", + CancelResult::Unspecified => "CANCEL_RESULT_UNSPECIFIED", + CancelResult::Cancelled => "CANCEL_RESULT_CANCELLED", + CancelResult::Cancelling => "CANCEL_RESULT_CANCELLING", + CancelResult::NotCancellable => "CANCEL_RESULT_NOT_CANCELLABLE", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -1654,131 +1689,135 @@ impl SqlInfo { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::FlightSqlServerName => "FLIGHT_SQL_SERVER_NAME", - Self::FlightSqlServerVersion => "FLIGHT_SQL_SERVER_VERSION", - Self::FlightSqlServerArrowVersion => "FLIGHT_SQL_SERVER_ARROW_VERSION", - Self::FlightSqlServerReadOnly => "FLIGHT_SQL_SERVER_READ_ONLY", - Self::FlightSqlServerSql => "FLIGHT_SQL_SERVER_SQL", - Self::FlightSqlServerSubstrait => "FLIGHT_SQL_SERVER_SUBSTRAIT", - Self::FlightSqlServerSubstraitMinVersion => { + SqlInfo::FlightSqlServerName => "FLIGHT_SQL_SERVER_NAME", + SqlInfo::FlightSqlServerVersion => "FLIGHT_SQL_SERVER_VERSION", + SqlInfo::FlightSqlServerArrowVersion => "FLIGHT_SQL_SERVER_ARROW_VERSION", + SqlInfo::FlightSqlServerReadOnly => "FLIGHT_SQL_SERVER_READ_ONLY", + SqlInfo::FlightSqlServerSql => "FLIGHT_SQL_SERVER_SQL", + SqlInfo::FlightSqlServerSubstrait => "FLIGHT_SQL_SERVER_SUBSTRAIT", + SqlInfo::FlightSqlServerSubstraitMinVersion => { "FLIGHT_SQL_SERVER_SUBSTRAIT_MIN_VERSION" } - Self::FlightSqlServerSubstraitMaxVersion => { + SqlInfo::FlightSqlServerSubstraitMaxVersion => { "FLIGHT_SQL_SERVER_SUBSTRAIT_MAX_VERSION" } - Self::FlightSqlServerTransaction => "FLIGHT_SQL_SERVER_TRANSACTION", - Self::FlightSqlServerCancel => "FLIGHT_SQL_SERVER_CANCEL", - Self::FlightSqlServerBulkIngestion => "FLIGHT_SQL_SERVER_BULK_INGESTION", - Self::FlightSqlServerIngestTransactionsSupported => { + SqlInfo::FlightSqlServerTransaction => "FLIGHT_SQL_SERVER_TRANSACTION", + SqlInfo::FlightSqlServerCancel => "FLIGHT_SQL_SERVER_CANCEL", + SqlInfo::FlightSqlServerBulkIngestion => "FLIGHT_SQL_SERVER_BULK_INGESTION", + SqlInfo::FlightSqlServerIngestTransactionsSupported => { "FLIGHT_SQL_SERVER_INGEST_TRANSACTIONS_SUPPORTED" } - Self::FlightSqlServerStatementTimeout => { + SqlInfo::FlightSqlServerStatementTimeout => { "FLIGHT_SQL_SERVER_STATEMENT_TIMEOUT" } - Self::FlightSqlServerTransactionTimeout => { + SqlInfo::FlightSqlServerTransactionTimeout => { "FLIGHT_SQL_SERVER_TRANSACTION_TIMEOUT" } - Self::SqlDdlCatalog => "SQL_DDL_CATALOG", - Self::SqlDdlSchema => "SQL_DDL_SCHEMA", - Self::SqlDdlTable => "SQL_DDL_TABLE", - Self::SqlIdentifierCase => "SQL_IDENTIFIER_CASE", - Self::SqlIdentifierQuoteChar => "SQL_IDENTIFIER_QUOTE_CHAR", - Self::SqlQuotedIdentifierCase => "SQL_QUOTED_IDENTIFIER_CASE", - Self::SqlAllTablesAreSelectable => "SQL_ALL_TABLES_ARE_SELECTABLE", - Self::SqlNullOrdering => "SQL_NULL_ORDERING", - Self::SqlKeywords => "SQL_KEYWORDS", - Self::SqlNumericFunctions => "SQL_NUMERIC_FUNCTIONS", - Self::SqlStringFunctions => "SQL_STRING_FUNCTIONS", - Self::SqlSystemFunctions => "SQL_SYSTEM_FUNCTIONS", - Self::SqlDatetimeFunctions => "SQL_DATETIME_FUNCTIONS", - Self::SqlSearchStringEscape => "SQL_SEARCH_STRING_ESCAPE", - Self::SqlExtraNameCharacters => "SQL_EXTRA_NAME_CHARACTERS", - Self::SqlSupportsColumnAliasing => "SQL_SUPPORTS_COLUMN_ALIASING", - Self::SqlNullPlusNullIsNull => "SQL_NULL_PLUS_NULL_IS_NULL", - Self::SqlSupportsConvert => "SQL_SUPPORTS_CONVERT", - Self::SqlSupportsTableCorrelationNames => { + SqlInfo::SqlDdlCatalog => "SQL_DDL_CATALOG", + SqlInfo::SqlDdlSchema => "SQL_DDL_SCHEMA", + SqlInfo::SqlDdlTable => "SQL_DDL_TABLE", + SqlInfo::SqlIdentifierCase => "SQL_IDENTIFIER_CASE", + SqlInfo::SqlIdentifierQuoteChar => "SQL_IDENTIFIER_QUOTE_CHAR", + SqlInfo::SqlQuotedIdentifierCase => "SQL_QUOTED_IDENTIFIER_CASE", + SqlInfo::SqlAllTablesAreSelectable => "SQL_ALL_TABLES_ARE_SELECTABLE", + SqlInfo::SqlNullOrdering => "SQL_NULL_ORDERING", + SqlInfo::SqlKeywords => "SQL_KEYWORDS", + SqlInfo::SqlNumericFunctions => "SQL_NUMERIC_FUNCTIONS", + SqlInfo::SqlStringFunctions => "SQL_STRING_FUNCTIONS", + SqlInfo::SqlSystemFunctions => "SQL_SYSTEM_FUNCTIONS", + SqlInfo::SqlDatetimeFunctions => "SQL_DATETIME_FUNCTIONS", + SqlInfo::SqlSearchStringEscape => "SQL_SEARCH_STRING_ESCAPE", + SqlInfo::SqlExtraNameCharacters => "SQL_EXTRA_NAME_CHARACTERS", + SqlInfo::SqlSupportsColumnAliasing => "SQL_SUPPORTS_COLUMN_ALIASING", + SqlInfo::SqlNullPlusNullIsNull => "SQL_NULL_PLUS_NULL_IS_NULL", + SqlInfo::SqlSupportsConvert => "SQL_SUPPORTS_CONVERT", + SqlInfo::SqlSupportsTableCorrelationNames => { "SQL_SUPPORTS_TABLE_CORRELATION_NAMES" } - Self::SqlSupportsDifferentTableCorrelationNames => { + SqlInfo::SqlSupportsDifferentTableCorrelationNames => { "SQL_SUPPORTS_DIFFERENT_TABLE_CORRELATION_NAMES" } - Self::SqlSupportsExpressionsInOrderBy => { + SqlInfo::SqlSupportsExpressionsInOrderBy => { "SQL_SUPPORTS_EXPRESSIONS_IN_ORDER_BY" } - Self::SqlSupportsOrderByUnrelated => "SQL_SUPPORTS_ORDER_BY_UNRELATED", - Self::SqlSupportedGroupBy => "SQL_SUPPORTED_GROUP_BY", - Self::SqlSupportsLikeEscapeClause => "SQL_SUPPORTS_LIKE_ESCAPE_CLAUSE", - Self::SqlSupportsNonNullableColumns => "SQL_SUPPORTS_NON_NULLABLE_COLUMNS", - Self::SqlSupportedGrammar => "SQL_SUPPORTED_GRAMMAR", - Self::SqlAnsi92SupportedLevel => "SQL_ANSI92_SUPPORTED_LEVEL", - Self::SqlSupportsIntegrityEnhancementFacility => { + SqlInfo::SqlSupportsOrderByUnrelated => "SQL_SUPPORTS_ORDER_BY_UNRELATED", + SqlInfo::SqlSupportedGroupBy => "SQL_SUPPORTED_GROUP_BY", + SqlInfo::SqlSupportsLikeEscapeClause => "SQL_SUPPORTS_LIKE_ESCAPE_CLAUSE", + SqlInfo::SqlSupportsNonNullableColumns => "SQL_SUPPORTS_NON_NULLABLE_COLUMNS", + SqlInfo::SqlSupportedGrammar => "SQL_SUPPORTED_GRAMMAR", + SqlInfo::SqlAnsi92SupportedLevel => "SQL_ANSI92_SUPPORTED_LEVEL", + SqlInfo::SqlSupportsIntegrityEnhancementFacility => { "SQL_SUPPORTS_INTEGRITY_ENHANCEMENT_FACILITY" } - Self::SqlOuterJoinsSupportLevel => "SQL_OUTER_JOINS_SUPPORT_LEVEL", - Self::SqlSchemaTerm => "SQL_SCHEMA_TERM", - Self::SqlProcedureTerm => "SQL_PROCEDURE_TERM", - Self::SqlCatalogTerm => "SQL_CATALOG_TERM", - Self::SqlCatalogAtStart => "SQL_CATALOG_AT_START", - Self::SqlSchemasSupportedActions => "SQL_SCHEMAS_SUPPORTED_ACTIONS", - Self::SqlCatalogsSupportedActions => "SQL_CATALOGS_SUPPORTED_ACTIONS", - Self::SqlSupportedPositionedCommands => "SQL_SUPPORTED_POSITIONED_COMMANDS", - Self::SqlSelectForUpdateSupported => "SQL_SELECT_FOR_UPDATE_SUPPORTED", - Self::SqlStoredProceduresSupported => "SQL_STORED_PROCEDURES_SUPPORTED", - Self::SqlSupportedSubqueries => "SQL_SUPPORTED_SUBQUERIES", - Self::SqlCorrelatedSubqueriesSupported => { + SqlInfo::SqlOuterJoinsSupportLevel => "SQL_OUTER_JOINS_SUPPORT_LEVEL", + SqlInfo::SqlSchemaTerm => "SQL_SCHEMA_TERM", + SqlInfo::SqlProcedureTerm => "SQL_PROCEDURE_TERM", + SqlInfo::SqlCatalogTerm => "SQL_CATALOG_TERM", + SqlInfo::SqlCatalogAtStart => "SQL_CATALOG_AT_START", + SqlInfo::SqlSchemasSupportedActions => "SQL_SCHEMAS_SUPPORTED_ACTIONS", + SqlInfo::SqlCatalogsSupportedActions => "SQL_CATALOGS_SUPPORTED_ACTIONS", + SqlInfo::SqlSupportedPositionedCommands => { + "SQL_SUPPORTED_POSITIONED_COMMANDS" + } + SqlInfo::SqlSelectForUpdateSupported => "SQL_SELECT_FOR_UPDATE_SUPPORTED", + SqlInfo::SqlStoredProceduresSupported => "SQL_STORED_PROCEDURES_SUPPORTED", + SqlInfo::SqlSupportedSubqueries => "SQL_SUPPORTED_SUBQUERIES", + SqlInfo::SqlCorrelatedSubqueriesSupported => { "SQL_CORRELATED_SUBQUERIES_SUPPORTED" } - Self::SqlSupportedUnions => "SQL_SUPPORTED_UNIONS", - Self::SqlMaxBinaryLiteralLength => "SQL_MAX_BINARY_LITERAL_LENGTH", - Self::SqlMaxCharLiteralLength => "SQL_MAX_CHAR_LITERAL_LENGTH", - Self::SqlMaxColumnNameLength => "SQL_MAX_COLUMN_NAME_LENGTH", - Self::SqlMaxColumnsInGroupBy => "SQL_MAX_COLUMNS_IN_GROUP_BY", - Self::SqlMaxColumnsInIndex => "SQL_MAX_COLUMNS_IN_INDEX", - Self::SqlMaxColumnsInOrderBy => "SQL_MAX_COLUMNS_IN_ORDER_BY", - Self::SqlMaxColumnsInSelect => "SQL_MAX_COLUMNS_IN_SELECT", - Self::SqlMaxColumnsInTable => "SQL_MAX_COLUMNS_IN_TABLE", - Self::SqlMaxConnections => "SQL_MAX_CONNECTIONS", - Self::SqlMaxCursorNameLength => "SQL_MAX_CURSOR_NAME_LENGTH", - Self::SqlMaxIndexLength => "SQL_MAX_INDEX_LENGTH", - Self::SqlDbSchemaNameLength => "SQL_DB_SCHEMA_NAME_LENGTH", - Self::SqlMaxProcedureNameLength => "SQL_MAX_PROCEDURE_NAME_LENGTH", - Self::SqlMaxCatalogNameLength => "SQL_MAX_CATALOG_NAME_LENGTH", - Self::SqlMaxRowSize => "SQL_MAX_ROW_SIZE", - Self::SqlMaxRowSizeIncludesBlobs => "SQL_MAX_ROW_SIZE_INCLUDES_BLOBS", - Self::SqlMaxStatementLength => "SQL_MAX_STATEMENT_LENGTH", - Self::SqlMaxStatements => "SQL_MAX_STATEMENTS", - Self::SqlMaxTableNameLength => "SQL_MAX_TABLE_NAME_LENGTH", - Self::SqlMaxTablesInSelect => "SQL_MAX_TABLES_IN_SELECT", - Self::SqlMaxUsernameLength => "SQL_MAX_USERNAME_LENGTH", - Self::SqlDefaultTransactionIsolation => "SQL_DEFAULT_TRANSACTION_ISOLATION", - Self::SqlTransactionsSupported => "SQL_TRANSACTIONS_SUPPORTED", - Self::SqlSupportedTransactionsIsolationLevels => { + SqlInfo::SqlSupportedUnions => "SQL_SUPPORTED_UNIONS", + SqlInfo::SqlMaxBinaryLiteralLength => "SQL_MAX_BINARY_LITERAL_LENGTH", + SqlInfo::SqlMaxCharLiteralLength => "SQL_MAX_CHAR_LITERAL_LENGTH", + SqlInfo::SqlMaxColumnNameLength => "SQL_MAX_COLUMN_NAME_LENGTH", + SqlInfo::SqlMaxColumnsInGroupBy => "SQL_MAX_COLUMNS_IN_GROUP_BY", + SqlInfo::SqlMaxColumnsInIndex => "SQL_MAX_COLUMNS_IN_INDEX", + SqlInfo::SqlMaxColumnsInOrderBy => "SQL_MAX_COLUMNS_IN_ORDER_BY", + SqlInfo::SqlMaxColumnsInSelect => "SQL_MAX_COLUMNS_IN_SELECT", + SqlInfo::SqlMaxColumnsInTable => "SQL_MAX_COLUMNS_IN_TABLE", + SqlInfo::SqlMaxConnections => "SQL_MAX_CONNECTIONS", + SqlInfo::SqlMaxCursorNameLength => "SQL_MAX_CURSOR_NAME_LENGTH", + SqlInfo::SqlMaxIndexLength => "SQL_MAX_INDEX_LENGTH", + SqlInfo::SqlDbSchemaNameLength => "SQL_DB_SCHEMA_NAME_LENGTH", + SqlInfo::SqlMaxProcedureNameLength => "SQL_MAX_PROCEDURE_NAME_LENGTH", + SqlInfo::SqlMaxCatalogNameLength => "SQL_MAX_CATALOG_NAME_LENGTH", + SqlInfo::SqlMaxRowSize => "SQL_MAX_ROW_SIZE", + SqlInfo::SqlMaxRowSizeIncludesBlobs => "SQL_MAX_ROW_SIZE_INCLUDES_BLOBS", + SqlInfo::SqlMaxStatementLength => "SQL_MAX_STATEMENT_LENGTH", + SqlInfo::SqlMaxStatements => "SQL_MAX_STATEMENTS", + SqlInfo::SqlMaxTableNameLength => "SQL_MAX_TABLE_NAME_LENGTH", + SqlInfo::SqlMaxTablesInSelect => "SQL_MAX_TABLES_IN_SELECT", + SqlInfo::SqlMaxUsernameLength => "SQL_MAX_USERNAME_LENGTH", + SqlInfo::SqlDefaultTransactionIsolation => { + "SQL_DEFAULT_TRANSACTION_ISOLATION" + } + SqlInfo::SqlTransactionsSupported => "SQL_TRANSACTIONS_SUPPORTED", + SqlInfo::SqlSupportedTransactionsIsolationLevels => { "SQL_SUPPORTED_TRANSACTIONS_ISOLATION_LEVELS" } - Self::SqlDataDefinitionCausesTransactionCommit => { + SqlInfo::SqlDataDefinitionCausesTransactionCommit => { "SQL_DATA_DEFINITION_CAUSES_TRANSACTION_COMMIT" } - Self::SqlDataDefinitionsInTransactionsIgnored => { + SqlInfo::SqlDataDefinitionsInTransactionsIgnored => { "SQL_DATA_DEFINITIONS_IN_TRANSACTIONS_IGNORED" } - Self::SqlSupportedResultSetTypes => "SQL_SUPPORTED_RESULT_SET_TYPES", - Self::SqlSupportedConcurrenciesForResultSetUnspecified => { + SqlInfo::SqlSupportedResultSetTypes => "SQL_SUPPORTED_RESULT_SET_TYPES", + SqlInfo::SqlSupportedConcurrenciesForResultSetUnspecified => { "SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_UNSPECIFIED" } - Self::SqlSupportedConcurrenciesForResultSetForwardOnly => { + SqlInfo::SqlSupportedConcurrenciesForResultSetForwardOnly => { "SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_FORWARD_ONLY" } - Self::SqlSupportedConcurrenciesForResultSetScrollSensitive => { + SqlInfo::SqlSupportedConcurrenciesForResultSetScrollSensitive => { "SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_SCROLL_SENSITIVE" } - Self::SqlSupportedConcurrenciesForResultSetScrollInsensitive => { + SqlInfo::SqlSupportedConcurrenciesForResultSetScrollInsensitive => { "SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_SCROLL_INSENSITIVE" } - Self::SqlBatchUpdatesSupported => "SQL_BATCH_UPDATES_SUPPORTED", - Self::SqlSavepointsSupported => "SQL_SAVEPOINTS_SUPPORTED", - Self::SqlNamedParametersSupported => "SQL_NAMED_PARAMETERS_SUPPORTED", - Self::SqlLocatorsUpdateCopy => "SQL_LOCATORS_UPDATE_COPY", - Self::SqlStoredFunctionsUsingCallSyntaxSupported => { + SqlInfo::SqlBatchUpdatesSupported => "SQL_BATCH_UPDATES_SUPPORTED", + SqlInfo::SqlSavepointsSupported => "SQL_SAVEPOINTS_SUPPORTED", + SqlInfo::SqlNamedParametersSupported => "SQL_NAMED_PARAMETERS_SUPPORTED", + SqlInfo::SqlLocatorsUpdateCopy => "SQL_LOCATORS_UPDATE_COPY", + SqlInfo::SqlStoredFunctionsUsingCallSyntaxSupported => { "SQL_STORED_FUNCTIONS_USING_CALL_SYNTAX_SUPPORTED" } } @@ -1945,9 +1984,11 @@ impl SqlSupportedTransaction { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::None => "SQL_SUPPORTED_TRANSACTION_NONE", - Self::Transaction => "SQL_SUPPORTED_TRANSACTION_TRANSACTION", - Self::Savepoint => "SQL_SUPPORTED_TRANSACTION_SAVEPOINT", + SqlSupportedTransaction::None => "SQL_SUPPORTED_TRANSACTION_NONE", + SqlSupportedTransaction::Transaction => { + "SQL_SUPPORTED_TRANSACTION_TRANSACTION" + } + SqlSupportedTransaction::Savepoint => "SQL_SUPPORTED_TRANSACTION_SAVEPOINT", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -1975,12 +2016,18 @@ impl SqlSupportedCaseSensitivity { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlCaseSensitivityUnknown => "SQL_CASE_SENSITIVITY_UNKNOWN", - Self::SqlCaseSensitivityCaseInsensitive => { + SqlSupportedCaseSensitivity::SqlCaseSensitivityUnknown => { + "SQL_CASE_SENSITIVITY_UNKNOWN" + } + SqlSupportedCaseSensitivity::SqlCaseSensitivityCaseInsensitive => { "SQL_CASE_SENSITIVITY_CASE_INSENSITIVE" } - Self::SqlCaseSensitivityUppercase => "SQL_CASE_SENSITIVITY_UPPERCASE", - Self::SqlCaseSensitivityLowercase => "SQL_CASE_SENSITIVITY_LOWERCASE", + SqlSupportedCaseSensitivity::SqlCaseSensitivityUppercase => { + "SQL_CASE_SENSITIVITY_UPPERCASE" + } + SqlSupportedCaseSensitivity::SqlCaseSensitivityLowercase => { + "SQL_CASE_SENSITIVITY_LOWERCASE" + } } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2011,10 +2058,10 @@ impl SqlNullOrdering { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlNullsSortedHigh => "SQL_NULLS_SORTED_HIGH", - Self::SqlNullsSortedLow => "SQL_NULLS_SORTED_LOW", - Self::SqlNullsSortedAtStart => "SQL_NULLS_SORTED_AT_START", - Self::SqlNullsSortedAtEnd => "SQL_NULLS_SORTED_AT_END", + SqlNullOrdering::SqlNullsSortedHigh => "SQL_NULLS_SORTED_HIGH", + SqlNullOrdering::SqlNullsSortedLow => "SQL_NULLS_SORTED_LOW", + SqlNullOrdering::SqlNullsSortedAtStart => "SQL_NULLS_SORTED_AT_START", + SqlNullOrdering::SqlNullsSortedAtEnd => "SQL_NULLS_SORTED_AT_END", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2042,9 +2089,9 @@ impl SupportedSqlGrammar { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlMinimumGrammar => "SQL_MINIMUM_GRAMMAR", - Self::SqlCoreGrammar => "SQL_CORE_GRAMMAR", - Self::SqlExtendedGrammar => "SQL_EXTENDED_GRAMMAR", + SupportedSqlGrammar::SqlMinimumGrammar => "SQL_MINIMUM_GRAMMAR", + SupportedSqlGrammar::SqlCoreGrammar => "SQL_CORE_GRAMMAR", + SupportedSqlGrammar::SqlExtendedGrammar => "SQL_EXTENDED_GRAMMAR", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2071,9 +2118,11 @@ impl SupportedAnsi92SqlGrammarLevel { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::Ansi92EntrySql => "ANSI92_ENTRY_SQL", - Self::Ansi92IntermediateSql => "ANSI92_INTERMEDIATE_SQL", - Self::Ansi92FullSql => "ANSI92_FULL_SQL", + SupportedAnsi92SqlGrammarLevel::Ansi92EntrySql => "ANSI92_ENTRY_SQL", + SupportedAnsi92SqlGrammarLevel::Ansi92IntermediateSql => { + "ANSI92_INTERMEDIATE_SQL" + } + SupportedAnsi92SqlGrammarLevel::Ansi92FullSql => "ANSI92_FULL_SQL", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2100,9 +2149,9 @@ impl SqlOuterJoinsSupportLevel { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlJoinsUnsupported => "SQL_JOINS_UNSUPPORTED", - Self::SqlLimitedOuterJoins => "SQL_LIMITED_OUTER_JOINS", - Self::SqlFullOuterJoins => "SQL_FULL_OUTER_JOINS", + SqlOuterJoinsSupportLevel::SqlJoinsUnsupported => "SQL_JOINS_UNSUPPORTED", + SqlOuterJoinsSupportLevel::SqlLimitedOuterJoins => "SQL_LIMITED_OUTER_JOINS", + SqlOuterJoinsSupportLevel::SqlFullOuterJoins => "SQL_FULL_OUTER_JOINS", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2128,8 +2177,8 @@ impl SqlSupportedGroupBy { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlGroupByUnrelated => "SQL_GROUP_BY_UNRELATED", - Self::SqlGroupByBeyondSelect => "SQL_GROUP_BY_BEYOND_SELECT", + SqlSupportedGroupBy::SqlGroupByUnrelated => "SQL_GROUP_BY_UNRELATED", + SqlSupportedGroupBy::SqlGroupByBeyondSelect => "SQL_GROUP_BY_BEYOND_SELECT", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2155,9 +2204,13 @@ impl SqlSupportedElementActions { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlElementInProcedureCalls => "SQL_ELEMENT_IN_PROCEDURE_CALLS", - Self::SqlElementInIndexDefinitions => "SQL_ELEMENT_IN_INDEX_DEFINITIONS", - Self::SqlElementInPrivilegeDefinitions => { + SqlSupportedElementActions::SqlElementInProcedureCalls => { + "SQL_ELEMENT_IN_PROCEDURE_CALLS" + } + SqlSupportedElementActions::SqlElementInIndexDefinitions => { + "SQL_ELEMENT_IN_INDEX_DEFINITIONS" + } + SqlSupportedElementActions::SqlElementInPrivilegeDefinitions => { "SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS" } } @@ -2189,8 +2242,12 @@ impl SqlSupportedPositionedCommands { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlPositionedDelete => "SQL_POSITIONED_DELETE", - Self::SqlPositionedUpdate => "SQL_POSITIONED_UPDATE", + SqlSupportedPositionedCommands::SqlPositionedDelete => { + "SQL_POSITIONED_DELETE" + } + SqlSupportedPositionedCommands::SqlPositionedUpdate => { + "SQL_POSITIONED_UPDATE" + } } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2217,10 +2274,14 @@ impl SqlSupportedSubqueries { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlSubqueriesInComparisons => "SQL_SUBQUERIES_IN_COMPARISONS", - Self::SqlSubqueriesInExists => "SQL_SUBQUERIES_IN_EXISTS", - Self::SqlSubqueriesInIns => "SQL_SUBQUERIES_IN_INS", - Self::SqlSubqueriesInQuantifieds => "SQL_SUBQUERIES_IN_QUANTIFIEDS", + SqlSupportedSubqueries::SqlSubqueriesInComparisons => { + "SQL_SUBQUERIES_IN_COMPARISONS" + } + SqlSupportedSubqueries::SqlSubqueriesInExists => "SQL_SUBQUERIES_IN_EXISTS", + SqlSupportedSubqueries::SqlSubqueriesInIns => "SQL_SUBQUERIES_IN_INS", + SqlSupportedSubqueries::SqlSubqueriesInQuantifieds => { + "SQL_SUBQUERIES_IN_QUANTIFIEDS" + } } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2247,8 +2308,8 @@ impl SqlSupportedUnions { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlUnion => "SQL_UNION", - Self::SqlUnionAll => "SQL_UNION_ALL", + SqlSupportedUnions::SqlUnion => "SQL_UNION", + SqlSupportedUnions::SqlUnionAll => "SQL_UNION_ALL", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2276,11 +2337,19 @@ impl SqlTransactionIsolationLevel { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlTransactionNone => "SQL_TRANSACTION_NONE", - Self::SqlTransactionReadUncommitted => "SQL_TRANSACTION_READ_UNCOMMITTED", - Self::SqlTransactionReadCommitted => "SQL_TRANSACTION_READ_COMMITTED", - Self::SqlTransactionRepeatableRead => "SQL_TRANSACTION_REPEATABLE_READ", - Self::SqlTransactionSerializable => "SQL_TRANSACTION_SERIALIZABLE", + SqlTransactionIsolationLevel::SqlTransactionNone => "SQL_TRANSACTION_NONE", + SqlTransactionIsolationLevel::SqlTransactionReadUncommitted => { + "SQL_TRANSACTION_READ_UNCOMMITTED" + } + SqlTransactionIsolationLevel::SqlTransactionReadCommitted => { + "SQL_TRANSACTION_READ_COMMITTED" + } + SqlTransactionIsolationLevel::SqlTransactionRepeatableRead => { + "SQL_TRANSACTION_REPEATABLE_READ" + } + SqlTransactionIsolationLevel::SqlTransactionSerializable => { + "SQL_TRANSACTION_SERIALIZABLE" + } } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2311,9 +2380,15 @@ impl SqlSupportedTransactions { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlTransactionUnspecified => "SQL_TRANSACTION_UNSPECIFIED", - Self::SqlDataDefinitionTransactions => "SQL_DATA_DEFINITION_TRANSACTIONS", - Self::SqlDataManipulationTransactions => "SQL_DATA_MANIPULATION_TRANSACTIONS", + SqlSupportedTransactions::SqlTransactionUnspecified => { + "SQL_TRANSACTION_UNSPECIFIED" + } + SqlSupportedTransactions::SqlDataDefinitionTransactions => { + "SQL_DATA_DEFINITION_TRANSACTIONS" + } + SqlSupportedTransactions::SqlDataManipulationTransactions => { + "SQL_DATA_MANIPULATION_TRANSACTIONS" + } } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2345,12 +2420,16 @@ impl SqlSupportedResultSetType { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlResultSetTypeUnspecified => "SQL_RESULT_SET_TYPE_UNSPECIFIED", - Self::SqlResultSetTypeForwardOnly => "SQL_RESULT_SET_TYPE_FORWARD_ONLY", - Self::SqlResultSetTypeScrollInsensitive => { + SqlSupportedResultSetType::SqlResultSetTypeUnspecified => { + "SQL_RESULT_SET_TYPE_UNSPECIFIED" + } + SqlSupportedResultSetType::SqlResultSetTypeForwardOnly => { + "SQL_RESULT_SET_TYPE_FORWARD_ONLY" + } + SqlSupportedResultSetType::SqlResultSetTypeScrollInsensitive => { "SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE" } - Self::SqlResultSetTypeScrollSensitive => { + SqlSupportedResultSetType::SqlResultSetTypeScrollSensitive => { "SQL_RESULT_SET_TYPE_SCROLL_SENSITIVE" } } @@ -2384,13 +2463,13 @@ impl SqlSupportedResultSetConcurrency { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlResultSetConcurrencyUnspecified => { + SqlSupportedResultSetConcurrency::SqlResultSetConcurrencyUnspecified => { "SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED" } - Self::SqlResultSetConcurrencyReadOnly => { + SqlSupportedResultSetConcurrency::SqlResultSetConcurrencyReadOnly => { "SQL_RESULT_SET_CONCURRENCY_READ_ONLY" } - Self::SqlResultSetConcurrencyUpdatable => { + SqlSupportedResultSetConcurrency::SqlResultSetConcurrencyUpdatable => { "SQL_RESULT_SET_CONCURRENCY_UPDATABLE" } } @@ -2442,26 +2521,30 @@ impl SqlSupportsConvert { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::SqlConvertBigint => "SQL_CONVERT_BIGINT", - Self::SqlConvertBinary => "SQL_CONVERT_BINARY", - Self::SqlConvertBit => "SQL_CONVERT_BIT", - Self::SqlConvertChar => "SQL_CONVERT_CHAR", - Self::SqlConvertDate => "SQL_CONVERT_DATE", - Self::SqlConvertDecimal => "SQL_CONVERT_DECIMAL", - Self::SqlConvertFloat => "SQL_CONVERT_FLOAT", - Self::SqlConvertInteger => "SQL_CONVERT_INTEGER", - Self::SqlConvertIntervalDayTime => "SQL_CONVERT_INTERVAL_DAY_TIME", - Self::SqlConvertIntervalYearMonth => "SQL_CONVERT_INTERVAL_YEAR_MONTH", - Self::SqlConvertLongvarbinary => "SQL_CONVERT_LONGVARBINARY", - Self::SqlConvertLongvarchar => "SQL_CONVERT_LONGVARCHAR", - Self::SqlConvertNumeric => "SQL_CONVERT_NUMERIC", - Self::SqlConvertReal => "SQL_CONVERT_REAL", - Self::SqlConvertSmallint => "SQL_CONVERT_SMALLINT", - Self::SqlConvertTime => "SQL_CONVERT_TIME", - Self::SqlConvertTimestamp => "SQL_CONVERT_TIMESTAMP", - Self::SqlConvertTinyint => "SQL_CONVERT_TINYINT", - Self::SqlConvertVarbinary => "SQL_CONVERT_VARBINARY", - Self::SqlConvertVarchar => "SQL_CONVERT_VARCHAR", + SqlSupportsConvert::SqlConvertBigint => "SQL_CONVERT_BIGINT", + SqlSupportsConvert::SqlConvertBinary => "SQL_CONVERT_BINARY", + SqlSupportsConvert::SqlConvertBit => "SQL_CONVERT_BIT", + SqlSupportsConvert::SqlConvertChar => "SQL_CONVERT_CHAR", + SqlSupportsConvert::SqlConvertDate => "SQL_CONVERT_DATE", + SqlSupportsConvert::SqlConvertDecimal => "SQL_CONVERT_DECIMAL", + SqlSupportsConvert::SqlConvertFloat => "SQL_CONVERT_FLOAT", + SqlSupportsConvert::SqlConvertInteger => "SQL_CONVERT_INTEGER", + SqlSupportsConvert::SqlConvertIntervalDayTime => { + "SQL_CONVERT_INTERVAL_DAY_TIME" + } + SqlSupportsConvert::SqlConvertIntervalYearMonth => { + "SQL_CONVERT_INTERVAL_YEAR_MONTH" + } + SqlSupportsConvert::SqlConvertLongvarbinary => "SQL_CONVERT_LONGVARBINARY", + SqlSupportsConvert::SqlConvertLongvarchar => "SQL_CONVERT_LONGVARCHAR", + SqlSupportsConvert::SqlConvertNumeric => "SQL_CONVERT_NUMERIC", + SqlSupportsConvert::SqlConvertReal => "SQL_CONVERT_REAL", + SqlSupportsConvert::SqlConvertSmallint => "SQL_CONVERT_SMALLINT", + SqlSupportsConvert::SqlConvertTime => "SQL_CONVERT_TIME", + SqlSupportsConvert::SqlConvertTimestamp => "SQL_CONVERT_TIMESTAMP", + SqlSupportsConvert::SqlConvertTinyint => "SQL_CONVERT_TINYINT", + SqlSupportsConvert::SqlConvertVarbinary => "SQL_CONVERT_VARBINARY", + SqlSupportsConvert::SqlConvertVarchar => "SQL_CONVERT_VARCHAR", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2529,30 +2612,30 @@ impl XdbcDataType { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::XdbcUnknownType => "XDBC_UNKNOWN_TYPE", - Self::XdbcChar => "XDBC_CHAR", - Self::XdbcNumeric => "XDBC_NUMERIC", - Self::XdbcDecimal => "XDBC_DECIMAL", - Self::XdbcInteger => "XDBC_INTEGER", - Self::XdbcSmallint => "XDBC_SMALLINT", - Self::XdbcFloat => "XDBC_FLOAT", - Self::XdbcReal => "XDBC_REAL", - Self::XdbcDouble => "XDBC_DOUBLE", - Self::XdbcDatetime => "XDBC_DATETIME", - Self::XdbcInterval => "XDBC_INTERVAL", - Self::XdbcVarchar => "XDBC_VARCHAR", - Self::XdbcDate => "XDBC_DATE", - Self::XdbcTime => "XDBC_TIME", - Self::XdbcTimestamp => "XDBC_TIMESTAMP", - Self::XdbcLongvarchar => "XDBC_LONGVARCHAR", - Self::XdbcBinary => "XDBC_BINARY", - Self::XdbcVarbinary => "XDBC_VARBINARY", - Self::XdbcLongvarbinary => "XDBC_LONGVARBINARY", - Self::XdbcBigint => "XDBC_BIGINT", - Self::XdbcTinyint => "XDBC_TINYINT", - Self::XdbcBit => "XDBC_BIT", - Self::XdbcWchar => "XDBC_WCHAR", - Self::XdbcWvarchar => "XDBC_WVARCHAR", + XdbcDataType::XdbcUnknownType => "XDBC_UNKNOWN_TYPE", + XdbcDataType::XdbcChar => "XDBC_CHAR", + XdbcDataType::XdbcNumeric => "XDBC_NUMERIC", + XdbcDataType::XdbcDecimal => "XDBC_DECIMAL", + XdbcDataType::XdbcInteger => "XDBC_INTEGER", + XdbcDataType::XdbcSmallint => "XDBC_SMALLINT", + XdbcDataType::XdbcFloat => "XDBC_FLOAT", + XdbcDataType::XdbcReal => "XDBC_REAL", + XdbcDataType::XdbcDouble => "XDBC_DOUBLE", + XdbcDataType::XdbcDatetime => "XDBC_DATETIME", + XdbcDataType::XdbcInterval => "XDBC_INTERVAL", + XdbcDataType::XdbcVarchar => "XDBC_VARCHAR", + XdbcDataType::XdbcDate => "XDBC_DATE", + XdbcDataType::XdbcTime => "XDBC_TIME", + XdbcDataType::XdbcTimestamp => "XDBC_TIMESTAMP", + XdbcDataType::XdbcLongvarchar => "XDBC_LONGVARCHAR", + XdbcDataType::XdbcBinary => "XDBC_BINARY", + XdbcDataType::XdbcVarbinary => "XDBC_VARBINARY", + XdbcDataType::XdbcLongvarbinary => "XDBC_LONGVARBINARY", + XdbcDataType::XdbcBigint => "XDBC_BIGINT", + XdbcDataType::XdbcTinyint => "XDBC_TINYINT", + XdbcDataType::XdbcBit => "XDBC_BIT", + XdbcDataType::XdbcWchar => "XDBC_WCHAR", + XdbcDataType::XdbcWvarchar => "XDBC_WVARCHAR", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2626,39 +2709,57 @@ impl XdbcDatetimeSubcode { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::XdbcSubcodeUnknown => "XDBC_SUBCODE_UNKNOWN", - Self::XdbcSubcodeYear => "XDBC_SUBCODE_YEAR", - Self::XdbcSubcodeTime => "XDBC_SUBCODE_TIME", - Self::XdbcSubcodeTimestamp => "XDBC_SUBCODE_TIMESTAMP", - Self::XdbcSubcodeTimeWithTimezone => "XDBC_SUBCODE_TIME_WITH_TIMEZONE", - Self::XdbcSubcodeTimestampWithTimezone => { + XdbcDatetimeSubcode::XdbcSubcodeUnknown => "XDBC_SUBCODE_UNKNOWN", + XdbcDatetimeSubcode::XdbcSubcodeYear => "XDBC_SUBCODE_YEAR", + XdbcDatetimeSubcode::XdbcSubcodeTime => "XDBC_SUBCODE_TIME", + XdbcDatetimeSubcode::XdbcSubcodeTimestamp => "XDBC_SUBCODE_TIMESTAMP", + XdbcDatetimeSubcode::XdbcSubcodeTimeWithTimezone => { + "XDBC_SUBCODE_TIME_WITH_TIMEZONE" + } + XdbcDatetimeSubcode::XdbcSubcodeTimestampWithTimezone => { "XDBC_SUBCODE_TIMESTAMP_WITH_TIMEZONE" } - Self::XdbcSubcodeSecond => "XDBC_SUBCODE_SECOND", - Self::XdbcSubcodeYearToMonth => "XDBC_SUBCODE_YEAR_TO_MONTH", - Self::XdbcSubcodeDayToHour => "XDBC_SUBCODE_DAY_TO_HOUR", - Self::XdbcSubcodeDayToMinute => "XDBC_SUBCODE_DAY_TO_MINUTE", - Self::XdbcSubcodeDayToSecond => "XDBC_SUBCODE_DAY_TO_SECOND", - Self::XdbcSubcodeHourToMinute => "XDBC_SUBCODE_HOUR_TO_MINUTE", - Self::XdbcSubcodeHourToSecond => "XDBC_SUBCODE_HOUR_TO_SECOND", - Self::XdbcSubcodeMinuteToSecond => "XDBC_SUBCODE_MINUTE_TO_SECOND", - Self::XdbcSubcodeIntervalYear => "XDBC_SUBCODE_INTERVAL_YEAR", - Self::XdbcSubcodeIntervalMonth => "XDBC_SUBCODE_INTERVAL_MONTH", - Self::XdbcSubcodeIntervalDay => "XDBC_SUBCODE_INTERVAL_DAY", - Self::XdbcSubcodeIntervalHour => "XDBC_SUBCODE_INTERVAL_HOUR", - Self::XdbcSubcodeIntervalMinute => "XDBC_SUBCODE_INTERVAL_MINUTE", - Self::XdbcSubcodeIntervalSecond => "XDBC_SUBCODE_INTERVAL_SECOND", - Self::XdbcSubcodeIntervalYearToMonth => "XDBC_SUBCODE_INTERVAL_YEAR_TO_MONTH", - Self::XdbcSubcodeIntervalDayToHour => "XDBC_SUBCODE_INTERVAL_DAY_TO_HOUR", - Self::XdbcSubcodeIntervalDayToMinute => "XDBC_SUBCODE_INTERVAL_DAY_TO_MINUTE", - Self::XdbcSubcodeIntervalDayToSecond => "XDBC_SUBCODE_INTERVAL_DAY_TO_SECOND", - Self::XdbcSubcodeIntervalHourToMinute => { + XdbcDatetimeSubcode::XdbcSubcodeSecond => "XDBC_SUBCODE_SECOND", + XdbcDatetimeSubcode::XdbcSubcodeYearToMonth => "XDBC_SUBCODE_YEAR_TO_MONTH", + XdbcDatetimeSubcode::XdbcSubcodeDayToHour => "XDBC_SUBCODE_DAY_TO_HOUR", + XdbcDatetimeSubcode::XdbcSubcodeDayToMinute => "XDBC_SUBCODE_DAY_TO_MINUTE", + XdbcDatetimeSubcode::XdbcSubcodeDayToSecond => "XDBC_SUBCODE_DAY_TO_SECOND", + XdbcDatetimeSubcode::XdbcSubcodeHourToMinute => "XDBC_SUBCODE_HOUR_TO_MINUTE", + XdbcDatetimeSubcode::XdbcSubcodeHourToSecond => "XDBC_SUBCODE_HOUR_TO_SECOND", + XdbcDatetimeSubcode::XdbcSubcodeMinuteToSecond => { + "XDBC_SUBCODE_MINUTE_TO_SECOND" + } + XdbcDatetimeSubcode::XdbcSubcodeIntervalYear => "XDBC_SUBCODE_INTERVAL_YEAR", + XdbcDatetimeSubcode::XdbcSubcodeIntervalMonth => { + "XDBC_SUBCODE_INTERVAL_MONTH" + } + XdbcDatetimeSubcode::XdbcSubcodeIntervalDay => "XDBC_SUBCODE_INTERVAL_DAY", + XdbcDatetimeSubcode::XdbcSubcodeIntervalHour => "XDBC_SUBCODE_INTERVAL_HOUR", + XdbcDatetimeSubcode::XdbcSubcodeIntervalMinute => { + "XDBC_SUBCODE_INTERVAL_MINUTE" + } + XdbcDatetimeSubcode::XdbcSubcodeIntervalSecond => { + "XDBC_SUBCODE_INTERVAL_SECOND" + } + XdbcDatetimeSubcode::XdbcSubcodeIntervalYearToMonth => { + "XDBC_SUBCODE_INTERVAL_YEAR_TO_MONTH" + } + XdbcDatetimeSubcode::XdbcSubcodeIntervalDayToHour => { + "XDBC_SUBCODE_INTERVAL_DAY_TO_HOUR" + } + XdbcDatetimeSubcode::XdbcSubcodeIntervalDayToMinute => { + "XDBC_SUBCODE_INTERVAL_DAY_TO_MINUTE" + } + XdbcDatetimeSubcode::XdbcSubcodeIntervalDayToSecond => { + "XDBC_SUBCODE_INTERVAL_DAY_TO_SECOND" + } + XdbcDatetimeSubcode::XdbcSubcodeIntervalHourToMinute => { "XDBC_SUBCODE_INTERVAL_HOUR_TO_MINUTE" } - Self::XdbcSubcodeIntervalHourToSecond => { + XdbcDatetimeSubcode::XdbcSubcodeIntervalHourToSecond => { "XDBC_SUBCODE_INTERVAL_HOUR_TO_SECOND" } - Self::XdbcSubcodeIntervalMinuteToSecond => { + XdbcDatetimeSubcode::XdbcSubcodeIntervalMinuteToSecond => { "XDBC_SUBCODE_INTERVAL_MINUTE_TO_SECOND" } } @@ -2733,9 +2834,9 @@ impl Nullable { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::NullabilityNoNulls => "NULLABILITY_NO_NULLS", - Self::NullabilityNullable => "NULLABILITY_NULLABLE", - Self::NullabilityUnknown => "NULLABILITY_UNKNOWN", + Nullable::NullabilityNoNulls => "NULLABILITY_NO_NULLS", + Nullable::NullabilityNullable => "NULLABILITY_NULLABLE", + Nullable::NullabilityUnknown => "NULLABILITY_UNKNOWN", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2776,10 +2877,10 @@ impl Searchable { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::None => "SEARCHABLE_NONE", - Self::Char => "SEARCHABLE_CHAR", - Self::Basic => "SEARCHABLE_BASIC", - Self::Full => "SEARCHABLE_FULL", + Searchable::None => "SEARCHABLE_NONE", + Searchable::Char => "SEARCHABLE_CHAR", + Searchable::Basic => "SEARCHABLE_BASIC", + Searchable::Full => "SEARCHABLE_FULL", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -2809,11 +2910,11 @@ impl UpdateDeleteRules { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Self::Cascade => "CASCADE", - Self::Restrict => "RESTRICT", - Self::SetNull => "SET_NULL", - Self::NoAction => "NO_ACTION", - Self::SetDefault => "SET_DEFAULT", + UpdateDeleteRules::Cascade => "CASCADE", + UpdateDeleteRules::Restrict => "RESTRICT", + UpdateDeleteRules::SetNull => "SET_NULL", + UpdateDeleteRules::NoAction => "NO_ACTION", + UpdateDeleteRules::SetDefault => "SET_DEFAULT", } } /// Creates an enum from field names used in the ProtoBuf definition. diff --git a/arrow-flight/tests/common/trailers_layer.rs b/arrow-flight/tests/common/trailers_layer.rs index 0ccb7df86c74..b2ab74f7d925 100644 --- a/arrow-flight/tests/common/trailers_layer.rs +++ b/arrow-flight/tests/common/trailers_layer.rs @@ -21,7 +21,7 @@ use std::task::{Context, Poll}; use futures::ready; use http::{HeaderValue, Request, Response}; -use http_body::{Frame, SizeHint}; +use http_body::SizeHint; use pin_project_lite::pin_project; use tower::{Layer, Service}; @@ -99,19 +99,31 @@ impl http_body::Body for WrappedBody { type Data = B::Data; type Error = B::Error; - fn poll_frame( - self: Pin<&mut Self>, + fn poll_data( + mut self: Pin<&mut Self>, cx: &mut Context<'_>, - ) -> Poll, Self::Error>>> { - let mut result = ready!(self.project().inner.poll_frame(cx)); + ) -> Poll>> { + self.as_mut().project().inner.poll_data(cx) + } + + fn poll_trailers( + mut self: Pin<&mut Self>, + cx: &mut Context<'_>, + ) -> Poll, Self::Error>> { + let result: Result, Self::Error> = + ready!(self.as_mut().project().inner.poll_trailers(cx)); + + let mut trailers = http::header::HeaderMap::new(); + trailers.insert("test-trailer", HeaderValue::from_static("trailer_val")); - if let Some(Ok(frame)) = &mut result { - if let Some(trailers) = frame.trailers_mut() { - trailers.insert("test-trailer", HeaderValue::from_static("trailer_val")); + match result { + Ok(Some(mut existing)) => { + existing.extend(trailers.iter().map(|(k, v)| (k.clone(), v.clone()))); + Poll::Ready(Ok(Some(existing))) } + Ok(None) => Poll::Ready(Ok(Some(trailers))), + Err(e) => Poll::Ready(Err(e)), } - - Poll::Ready(result) } fn is_end_stream(&self) -> bool { diff --git a/arrow-integration-testing/Cargo.toml b/arrow-integration-testing/Cargo.toml index 7be56d919852..032b99f4fbbb 100644 --- a/arrow-integration-testing/Cargo.toml +++ b/arrow-integration-testing/Cargo.toml @@ -42,11 +42,11 @@ async-trait = { version = "0.1.41", default-features = false } clap = { version = "4", default-features = false, features = ["std", "derive", "help", "error-context", "usage"] } futures = { version = "0.3", default-features = false } hex = { version = "0.4", default-features = false, features = ["std"] } -prost = { version = "0.13", default-features = false } +prost = { version = "0.12", default-features = false } serde = { version = "1.0", default-features = false, features = ["rc", "derive"] } serde_json = { version = "1.0", default-features = false, features = ["std"] } tokio = { version = "1.0", default-features = false } -tonic = { version = "0.12", default-features = false } +tonic = { version = "0.11", default-features = false } tracing-subscriber = { version = "0.3.1", default-features = false, features = ["fmt"], optional = true } num = { version = "0.4", default-features = false, features = ["std"] } flate2 = { version = "1", default-features = false, features = ["rust_backend"] }