feat: pgwire 0.37 (#7443)

This commit is contained in:
Ning Sun
2025-12-22 13:13:39 +08:00
committed by GitHub
parent c0652f6dd5
commit bd8ffd3db9
5 changed files with 53 additions and 12 deletions

View File

@@ -87,7 +87,7 @@ operator.workspace = true
otel-arrow-rust.workspace = true
parking_lot.workspace = true
pg_interval = "0.4"
pgwire = { version = "0.36.3", default-features = false, features = [
pgwire = { version = "0.37", default-features = false, features = [
"server-api-ring",
"pg-ext-types",
] }

View File

@@ -28,13 +28,13 @@ fn build_string_data_rows(
schema: Arc<Vec<FieldInfo>>,
rows: Vec<Vec<String>>,
) -> Vec<PgWireResult<DataRow>> {
let mut encoder = DataRowEncoder::new(schema.clone());
rows.iter()
.map(|row| {
let mut encoder = DataRowEncoder::new(schema.clone());
for value in row {
encoder.encode_field(&Some(value))?;
}
encoder.finish()
Ok(encoder.take_row())
})
.collect()
}

View File

@@ -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]

View File

@@ -395,13 +395,13 @@ impl Iterator for RecordBatchRowIterator {
type Item = PgWireResult<DataRow>;
fn next(&mut self) -> Option<Self::Item> {
let mut encoder = DataRowEncoder::new(self.pg_schema.clone());
if self.i < self.record_batch.num_rows() {
let mut encoder = DataRowEncoder::new(self.pg_schema.clone());
if let Err(e) = self.encode_row(self.i, &mut encoder) {
return Some(Err(e));
}
self.i += 1;
Some(encoder.finish())
Some(Ok(encoder.take_row()))
} else {
None
}