mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-06-01 04:40:39 +00:00
feat: pgwire 0.37 (#7443)
This commit is contained in:
@@ -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",
|
||||
] }
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user