Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 11 additions & 12 deletions sqlx-postgres/src/connection/describe.rs
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,15 @@ WHERE rngtypid = $1
Ok(array_oid)
}

/// Check whether EXPLAIN statements are supported by the current connection
fn is_explain_available(&self) -> bool {
let parameter_statuses = &self.inner.stream.parameter_statuses;
let is_cockroachdb = parameter_statuses.contains_key("crdb_version");
let is_materialize = parameter_statuses.contains_key("mz_version");
let is_questdb = parameter_statuses.contains_key("questdb_version");
!is_cockroachdb && !is_materialize && !is_questdb
}

pub(crate) async fn get_nullable_for_columns(
&mut self,
stmt_id: StatementId,
Expand Down Expand Up @@ -486,18 +495,8 @@ WHERE rngtypid = $1
)
})?;

// If the server is CockroachDB or Materialize, skip this step (#1248).
if !self
.inner
.stream
.parameter_statuses
.contains_key("crdb_version")
&& !self
.inner
.stream
.parameter_statuses
.contains_key("mz_version")
{
// If the server doesn't support EXPLAIN statements, skip this step (#1248).
if self.is_explain_available() {
// patch up our null inference with data from EXPLAIN
let nullable_patch = self
.nullables_from_explain(stmt_id, meta.parameters.len())
Expand Down
Loading