Fix logger regression (#3938)

This commit is contained in:
Joey de Waal 2025-07-17 23:58:36 +02:00 committed by GitHub
parent 01d5443f15
commit 24317d5eab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 16 additions and 13 deletions

View File

@ -87,6 +87,10 @@ impl QueryLogger {
self.rows_affected += n;
}
pub fn sql(&self) -> &SqlStr {
&self.sql
}
pub fn finish(&self) {
let elapsed = self.start.elapsed();

View File

@ -108,10 +108,14 @@ impl MySqlConnection {
persistent: bool,
) -> Result<impl Stream<Item = Result<Either<MySqlQueryResult, MySqlRow>, Error>> + 'e, Error>
{
let mut logger = QueryLogger::new(sql, self.inner.log_settings.clone());
self.inner.stream.wait_until_ready().await?;
self.inner.stream.waiting.push_back(Waiting::Result);
Ok(try_stream! {
let sql = logger.sql().as_str();
// make a slot for the shared column data
// as long as a reference to a row is not held past one iteration, this enables us
// to re-use this memory freely between result sets
@ -120,7 +124,7 @@ impl MySqlConnection {
let (mut column_names, format, mut needs_metadata) = if let Some(arguments) = arguments {
if persistent && self.inner.cache_statement.is_enabled() {
let (id, metadata) = self
.get_or_prepare_statement(sql.as_str())
.get_or_prepare_statement(sql)
.await?;
if arguments.types.len() != metadata.parameters {
@ -144,7 +148,7 @@ impl MySqlConnection {
(metadata.column_names, MySqlValueFormat::Binary, false)
} else {
let (id, metadata) = self
.prepare_statement(sql.as_str())
.prepare_statement(sql)
.await?;
if arguments.types.len() != metadata.parameters {
@ -171,11 +175,10 @@ impl MySqlConnection {
}
} else {
// https://dev.mysql.com/doc/internals/en/com-query.html
self.inner.stream.send_packet(Query(sql.as_str())).await?;
self.inner.stream.send_packet(Query(sql)).await?;
(Arc::default(), MySqlValueFormat::Text, true)
};
let mut logger = QueryLogger::new(sql, self.inner.log_settings.clone());
loop {
// query response is a meta-packet which may be one of:

View File

@ -215,6 +215,9 @@ impl PgConnection {
persistent: bool,
metadata_opt: Option<Arc<PgStatementMetadata>>,
) -> Result<impl Stream<Item = Result<Either<PgQueryResult, PgRow>, Error>> + 'e, Error> {
let mut logger = QueryLogger::new(query, self.inner.log_settings.clone());
let sql = logger.sql().as_str();
// before we continue, wait until we are "ready" to accept more queries
self.wait_until_ready().await?;
@ -237,13 +240,7 @@ impl PgConnection {
// prepare the statement if this our first time executing it
// always return the statement ID here
let (statement, metadata_) = self
.get_or_prepare(
query.as_str(),
&arguments.types,
persistent,
metadata_opt,
false,
)
.get_or_prepare(sql, &arguments.types, persistent, metadata_opt, false)
.await?;
metadata = metadata_;
@ -296,7 +293,7 @@ impl PgConnection {
PgValueFormat::Binary
} else {
// Query will trigger a ReadyForQuery
self.inner.stream.write_msg(Query(query.as_str()))?;
self.inner.stream.write_msg(Query(sql))?;
self.inner.pending_ready_for_query_count += 1;
// metadata starts out as "nothing"
@ -307,7 +304,6 @@ impl PgConnection {
};
self.inner.stream.flush().await?;
let mut logger = QueryLogger::new(query, self.inner.log_settings.clone());
Ok(try_stream! {
loop {