mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2025-12-22 22:20:02 +00:00
feat: pgwire 0.37 (#7443)
This commit is contained in:
35
Cargo.lock
generated
35
Cargo.lock
generated
@@ -9320,9 +9320,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pgwire"
|
name = "pgwire"
|
||||||
version = "0.36.3"
|
version = "0.37.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "70a2bcdcc4b20a88e0648778ecf00415bbd5b447742275439c22176835056f99"
|
checksum = "02d86d57e732d40382ceb9bfea80901d839bae8571aa11c06af9177aed9dfb6c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"base64 0.22.1",
|
"base64 0.22.1",
|
||||||
@@ -9341,6 +9341,7 @@ dependencies = [
|
|||||||
"ryu",
|
"ryu",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
|
"smol_str",
|
||||||
"stringprep",
|
"stringprep",
|
||||||
"thiserror 2.0.17",
|
"thiserror 2.0.17",
|
||||||
"tokio",
|
"tokio",
|
||||||
@@ -11505,10 +11506,11 @@ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.219"
|
version = "1.0.228"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
|
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"serde_core",
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -11523,10 +11525,19 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_derive"
|
name = "serde_core"
|
||||||
version = "1.0.219"
|
version = "1.0.228"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
|
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
|
||||||
|
dependencies = [
|
||||||
|
"serde_derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_derive"
|
||||||
|
version = "1.0.228"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -12001,6 +12012,16 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "smol_str"
|
||||||
|
version = "0.3.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3498b0a27f93ef1402f20eefacfaa1691272ac4eca1cdc8c596cb0a245d6cbf5"
|
||||||
|
dependencies = [
|
||||||
|
"borsh",
|
||||||
|
"serde_core",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "snafu"
|
name = "snafu"
|
||||||
version = "0.7.5"
|
version = "0.7.5"
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ operator.workspace = true
|
|||||||
otel-arrow-rust.workspace = true
|
otel-arrow-rust.workspace = true
|
||||||
parking_lot.workspace = true
|
parking_lot.workspace = true
|
||||||
pg_interval = "0.4"
|
pg_interval = "0.4"
|
||||||
pgwire = { version = "0.36.3", default-features = false, features = [
|
pgwire = { version = "0.37", default-features = false, features = [
|
||||||
"server-api-ring",
|
"server-api-ring",
|
||||||
"pg-ext-types",
|
"pg-ext-types",
|
||||||
] }
|
] }
|
||||||
|
|||||||
@@ -28,13 +28,13 @@ fn build_string_data_rows(
|
|||||||
schema: Arc<Vec<FieldInfo>>,
|
schema: Arc<Vec<FieldInfo>>,
|
||||||
rows: Vec<Vec<String>>,
|
rows: Vec<Vec<String>>,
|
||||||
) -> Vec<PgWireResult<DataRow>> {
|
) -> Vec<PgWireResult<DataRow>> {
|
||||||
|
let mut encoder = DataRowEncoder::new(schema.clone());
|
||||||
rows.iter()
|
rows.iter()
|
||||||
.map(|row| {
|
.map(|row| {
|
||||||
let mut encoder = DataRowEncoder::new(schema.clone());
|
|
||||||
for value in row {
|
for value in row {
|
||||||
encoder.encode_field(&Some(value))?;
|
encoder.encode_field(&Some(value))?;
|
||||||
}
|
}
|
||||||
encoder.finish()
|
Ok(encoder.take_row())
|
||||||
})
|
})
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -262,6 +262,26 @@ impl QueryParser for DefaultQueryParser {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_parameter_types(&self, _stmt: &Self::Statement) -> PgWireResult<Vec<Type>> {
|
||||||
|
// we have our own implementation of describes in ExtendedQueryHandler
|
||||||
|
// so we don't use these methods
|
||||||
|
Err(PgWireError::ApiError(
|
||||||
|
"get_parameter_types is not expected to be called".into(),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_result_schema(
|
||||||
|
&self,
|
||||||
|
_stmt: &Self::Statement,
|
||||||
|
_column_format: Option<&Format>,
|
||||||
|
) -> PgWireResult<Vec<FieldInfo>> {
|
||||||
|
// we have our own implementation of describes in ExtendedQueryHandler
|
||||||
|
// so we don't use these methods
|
||||||
|
Err(PgWireError::ApiError(
|
||||||
|
"get_result_schema is not expected to be called".into(),
|
||||||
|
))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
|
|||||||
@@ -395,13 +395,13 @@ impl Iterator for RecordBatchRowIterator {
|
|||||||
type Item = PgWireResult<DataRow>;
|
type Item = PgWireResult<DataRow>;
|
||||||
|
|
||||||
fn next(&mut self) -> Option<Self::Item> {
|
fn next(&mut self) -> Option<Self::Item> {
|
||||||
if self.i < self.record_batch.num_rows() {
|
|
||||||
let mut encoder = DataRowEncoder::new(self.pg_schema.clone());
|
let mut encoder = DataRowEncoder::new(self.pg_schema.clone());
|
||||||
|
if self.i < self.record_batch.num_rows() {
|
||||||
if let Err(e) = self.encode_row(self.i, &mut encoder) {
|
if let Err(e) = self.encode_row(self.i, &mut encoder) {
|
||||||
return Some(Err(e));
|
return Some(Err(e));
|
||||||
}
|
}
|
||||||
self.i += 1;
|
self.i += 1;
|
||||||
Some(encoder.finish())
|
Some(Ok(encoder.take_row()))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user