mirror of
https://github.com/launchbadge/sqlx.git
synced 2025-12-29 04:04:56 +00:00
Fix logger regression (#3938)
This commit is contained in:
parent
01d5443f15
commit
24317d5eab
@ -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();
|
||||
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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 {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user