From 5d9c292132a23a245ba5a179765a374c94ffde44 Mon Sep 17 00:00:00 2001
From: Ryan Leckey <ryan@launchbadge.com>
Date: Sat, 22 May 2021 16:38:54 -0700
Subject: [PATCH 1/5] release: v0.5.4

---
 CHANGELOG.md           |  7 +++++++
 Cargo.lock             | 10 +++++-----
 Cargo.toml             |  6 +++---
 sqlx-cli/Cargo.toml    |  4 ++--
 sqlx-core/Cargo.toml   |  4 ++--
 sqlx-macros/Cargo.toml |  6 +++---
 sqlx-rt/Cargo.toml     |  2 +-
 7 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1189e2d2bc..e190bbc5b1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
+## 0.5.4 - 2021-05-22
+
+-   [[#1235]] Fix compilation with rustls from an eager update to webpki [[@ETCaton]]
+
+[#1235]: https://github.com/launchbadge/sqlx/pull/1235
+
 ## 0.5.3 - 2021-05-21
 
 -   [[#1211]] Even more tweaks and fixes to the Pool internals [[@abonander]]
@@ -911,3 +917,4 @@ Fix docs.rs build by enabling a runtime feature in the docs.rs metadata in `Carg
 [@guylapid]: https://github.com/guylapid
 [@natproach]: https://github.com/NatPRoach
 [@feikesteenbergen]: https://github.com/feikesteenbergen
+[@etcaton]: https://github.com/ETCaton
diff --git a/Cargo.lock b/Cargo.lock
index 82aa0caeed..c2d26c1e69 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2255,7 +2255,7 @@ dependencies = [
 
 [[package]]
 name = "sqlx"
-version = "0.5.3"
+version = "0.5.4"
 dependencies = [
  "anyhow",
  "async-std",
@@ -2288,7 +2288,7 @@ dependencies = [
 
 [[package]]
 name = "sqlx-cli"
-version = "0.5.3"
+version = "0.5.4"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -2310,7 +2310,7 @@ dependencies = [
 
 [[package]]
 name = "sqlx-core"
-version = "0.5.3"
+version = "0.5.4"
 dependencies = [
  "ahash",
  "atoi",
@@ -2435,7 +2435,7 @@ dependencies = [
 
 [[package]]
 name = "sqlx-macros"
-version = "0.5.3"
+version = "0.5.4"
 dependencies = [
  "dotenv",
  "either",
@@ -2456,7 +2456,7 @@ dependencies = [
 
 [[package]]
 name = "sqlx-rt"
-version = "0.5.3"
+version = "0.5.4"
 dependencies = [
  "actix-rt",
  "async-native-tls",
diff --git a/Cargo.toml b/Cargo.toml
index 6234ea8d49..d276745a30 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -17,7 +17,7 @@ members = [
 
 [package]
 name = "sqlx"
-version = "0.5.3"
+version = "0.5.4"
 license = "MIT OR Apache-2.0"
 readme = "README.md"
 repository = "https://github.com/launchbadge/sqlx"
@@ -129,8 +129,8 @@ bstr = ["sqlx-core/bstr"]
 git2 = ["sqlx-core/git2"]
 
 [dependencies]
-sqlx-core = { version = "0.5.3", path = "sqlx-core", default-features = false }
-sqlx-macros = { version = "0.5.3", path = "sqlx-macros", default-features = false, optional = true }
+sqlx-core = { version = "0.5.4", path = "sqlx-core", default-features = false }
+sqlx-macros = { version = "0.5.4", path = "sqlx-macros", default-features = false, optional = true }
 
 [dev-dependencies]
 anyhow = "1.0.31"
diff --git a/sqlx-cli/Cargo.toml b/sqlx-cli/Cargo.toml
index 6b9f1549fd..2ae47aec2a 100644
--- a/sqlx-cli/Cargo.toml
+++ b/sqlx-cli/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "sqlx-cli"
-version = "0.5.3"
+version = "0.5.4"
 description = "Command-line utility for SQLx, the Rust SQL toolkit."
 edition = "2018"
 readme = "README.md"
@@ -27,7 +27,7 @@ path = "src/bin/cargo-sqlx.rs"
 [dependencies]
 dotenv = "0.15"
 tokio = { version = "1.0.1", features = ["macros", "rt", "rt-multi-thread"] }
-sqlx = { version = "0.5.3", path = "..", default-features = false, features = [
+sqlx = { version = "0.5.4", path = "..", default-features = false, features = [
     "runtime-async-std-native-tls",
     "migrate",
     "any",
diff --git a/sqlx-core/Cargo.toml b/sqlx-core/Cargo.toml
index 7d4ade7798..2d15453bfb 100644
--- a/sqlx-core/Cargo.toml
+++ b/sqlx-core/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "sqlx-core"
-version = "0.5.3"
+version = "0.5.4"
 repository = "https://github.com/launchbadge/sqlx"
 description = "Core of SQLx, the rust SQL toolkit. Not intended to be used directly."
 license = "MIT OR Apache-2.0"
@@ -100,7 +100,7 @@ offline = ["serde", "either/serde"]
 [dependencies]
 ahash = "0.7.2"
 atoi = "0.4.0"
-sqlx-rt = { path = "../sqlx-rt", version = "0.5.3" }
+sqlx-rt = { path = "../sqlx-rt", version = "0.5.4" }
 base64 = { version = "0.13.0", default-features = false, optional = true, features = ["std"] }
 bigdecimal_ = { version = "0.2.0", optional = true, package = "bigdecimal" }
 rust_decimal = { version = "1.8.1", optional = true }
diff --git a/sqlx-macros/Cargo.toml b/sqlx-macros/Cargo.toml
index 91ae1f6071..731dfc8209 100644
--- a/sqlx-macros/Cargo.toml
+++ b/sqlx-macros/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "sqlx-macros"
-version = "0.5.3"
+version = "0.5.4"
 repository = "https://github.com/launchbadge/sqlx"
 description = "Macros for SQLx, the rust SQL toolkit. Not intended to be used directly."
 license = "MIT OR Apache-2.0"
@@ -84,8 +84,8 @@ heck = "0.3.1"
 either = "1.5.3"
 once_cell = "1.5.2"
 proc-macro2 = { version = "1.0.9", default-features = false }
-sqlx-core = { version = "0.5.3", default-features = false, path = "../sqlx-core" }
-sqlx-rt = { version = "0.5.3", default-features = false, path = "../sqlx-rt" }
+sqlx-core = { version = "0.5.4", default-features = false, path = "../sqlx-core" }
+sqlx-rt = { version = "0.5.4", default-features = false, path = "../sqlx-rt" }
 serde = { version = "1.0.111", features = ["derive"], optional = true }
 serde_json = { version = "1.0.30", features = ["preserve_order"], optional = true }
 sha2 = { version = "0.9.1", optional = true }
diff --git a/sqlx-rt/Cargo.toml b/sqlx-rt/Cargo.toml
index 75fa4bc9c4..62bb08e4ad 100644
--- a/sqlx-rt/Cargo.toml
+++ b/sqlx-rt/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "sqlx-rt"
-version = "0.5.3"
+version = "0.5.4"
 repository = "https://github.com/launchbadge/sqlx"
 license = "MIT OR Apache-2.0"
 description = "Runtime abstraction used by SQLx, the Rust SQL toolkit. Not intended to be used directly."

From eda78a725875b0603c7db6af94ecb3ff84a780a7 Mon Sep 17 00:00:00 2001
From: toshokan <toshokan@shojigate.net>
Date: Sun, 23 May 2021 21:53:50 -0400
Subject: [PATCH 2/5] Fix infinite compile loop regression from recursive Lazy
 reference

---
 sqlx-macros/src/query/mod.rs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sqlx-macros/src/query/mod.rs b/sqlx-macros/src/query/mod.rs
index d114f54528..eed89967f0 100644
--- a/sqlx-macros/src/query/mod.rs
+++ b/sqlx-macros/src/query/mod.rs
@@ -37,7 +37,7 @@ struct Metadata {
 static METADATA: Lazy<Metadata> = Lazy::new(|| {
     use std::env;
 
-    let manifest_dir = env::var("CARGO_MANIFEST_DIR")
+    let manifest_dir: PathBuf = env::var("CARGO_MANIFEST_DIR")
         .expect("`CARGO_MANIFEST_DIR` must be set")
         .into();
 
@@ -47,7 +47,7 @@ static METADATA: Lazy<Metadata> = Lazy::new(|| {
 
     // If a .env file exists at CARGO_MANIFEST_DIR, load environment variables from this,
     // otherwise fallback to default dotenv behaviour.
-    let env_path = METADATA.manifest_dir.join(".env");
+    let env_path = manifest_dir.join(".env");
     if env_path.exists() {
         let res = dotenv::from_path(&env_path);
         if let Err(e) = res {

From 694a2ac478fc3f9c7b6c879e99964b426bad84ea Mon Sep 17 00:00:00 2001
From: Ryan Leckey <ryan@launchbadge.com>
Date: Mon, 24 May 2021 09:34:34 -0700
Subject: [PATCH 3/5] release: v0.5.5

---
 CHANGELOG.md           |  7 +++++++
 Cargo.lock             | 10 +++++-----
 Cargo.toml             |  6 +++---
 sqlx-cli/Cargo.toml    |  4 ++--
 sqlx-core/Cargo.toml   |  4 ++--
 sqlx-macros/Cargo.toml |  6 +++---
 sqlx-rt/Cargo.toml     |  2 +-
 7 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index e190bbc5b1..3e3addaecd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
+## 0.5.5 - 2021-05-24
+
+-   [[#1242]] Fix infinite loop at compile time when using query macros [[@toshokan]]
+
+[#1242]: https://github.com/launchbadge/sqlx/pull/1242
+
 ## 0.5.4 - 2021-05-22
 
 -   [[#1235]] Fix compilation with rustls from an eager update to webpki [[@ETCaton]]
@@ -918,3 +924,4 @@ Fix docs.rs build by enabling a runtime feature in the docs.rs metadata in `Carg
 [@natproach]: https://github.com/NatPRoach
 [@feikesteenbergen]: https://github.com/feikesteenbergen
 [@etcaton]: https://github.com/ETCaton
+[@toshokan]: https://github.com/toshokan
diff --git a/Cargo.lock b/Cargo.lock
index c2d26c1e69..bab48c5036 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2255,7 +2255,7 @@ dependencies = [
 
 [[package]]
 name = "sqlx"
-version = "0.5.4"
+version = "0.5.5"
 dependencies = [
  "anyhow",
  "async-std",
@@ -2288,7 +2288,7 @@ dependencies = [
 
 [[package]]
 name = "sqlx-cli"
-version = "0.5.4"
+version = "0.5.5"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -2310,7 +2310,7 @@ dependencies = [
 
 [[package]]
 name = "sqlx-core"
-version = "0.5.4"
+version = "0.5.5"
 dependencies = [
  "ahash",
  "atoi",
@@ -2435,7 +2435,7 @@ dependencies = [
 
 [[package]]
 name = "sqlx-macros"
-version = "0.5.4"
+version = "0.5.5"
 dependencies = [
  "dotenv",
  "either",
@@ -2456,7 +2456,7 @@ dependencies = [
 
 [[package]]
 name = "sqlx-rt"
-version = "0.5.4"
+version = "0.5.5"
 dependencies = [
  "actix-rt",
  "async-native-tls",
diff --git a/Cargo.toml b/Cargo.toml
index d276745a30..2861b2024e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -17,7 +17,7 @@ members = [
 
 [package]
 name = "sqlx"
-version = "0.5.4"
+version = "0.5.5"
 license = "MIT OR Apache-2.0"
 readme = "README.md"
 repository = "https://github.com/launchbadge/sqlx"
@@ -129,8 +129,8 @@ bstr = ["sqlx-core/bstr"]
 git2 = ["sqlx-core/git2"]
 
 [dependencies]
-sqlx-core = { version = "0.5.4", path = "sqlx-core", default-features = false }
-sqlx-macros = { version = "0.5.4", path = "sqlx-macros", default-features = false, optional = true }
+sqlx-core = { version = "0.5.5", path = "sqlx-core", default-features = false }
+sqlx-macros = { version = "0.5.5", path = "sqlx-macros", default-features = false, optional = true }
 
 [dev-dependencies]
 anyhow = "1.0.31"
diff --git a/sqlx-cli/Cargo.toml b/sqlx-cli/Cargo.toml
index 2ae47aec2a..0c0d92a0bb 100644
--- a/sqlx-cli/Cargo.toml
+++ b/sqlx-cli/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "sqlx-cli"
-version = "0.5.4"
+version = "0.5.5"
 description = "Command-line utility for SQLx, the Rust SQL toolkit."
 edition = "2018"
 readme = "README.md"
@@ -27,7 +27,7 @@ path = "src/bin/cargo-sqlx.rs"
 [dependencies]
 dotenv = "0.15"
 tokio = { version = "1.0.1", features = ["macros", "rt", "rt-multi-thread"] }
-sqlx = { version = "0.5.4", path = "..", default-features = false, features = [
+sqlx = { version = "0.5.5", path = "..", default-features = false, features = [
     "runtime-async-std-native-tls",
     "migrate",
     "any",
diff --git a/sqlx-core/Cargo.toml b/sqlx-core/Cargo.toml
index 2d15453bfb..bfa3f5f9ae 100644
--- a/sqlx-core/Cargo.toml
+++ b/sqlx-core/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "sqlx-core"
-version = "0.5.4"
+version = "0.5.5"
 repository = "https://github.com/launchbadge/sqlx"
 description = "Core of SQLx, the rust SQL toolkit. Not intended to be used directly."
 license = "MIT OR Apache-2.0"
@@ -100,7 +100,7 @@ offline = ["serde", "either/serde"]
 [dependencies]
 ahash = "0.7.2"
 atoi = "0.4.0"
-sqlx-rt = { path = "../sqlx-rt", version = "0.5.4" }
+sqlx-rt = { path = "../sqlx-rt", version = "0.5.5" }
 base64 = { version = "0.13.0", default-features = false, optional = true, features = ["std"] }
 bigdecimal_ = { version = "0.2.0", optional = true, package = "bigdecimal" }
 rust_decimal = { version = "1.8.1", optional = true }
diff --git a/sqlx-macros/Cargo.toml b/sqlx-macros/Cargo.toml
index 731dfc8209..b76185ed53 100644
--- a/sqlx-macros/Cargo.toml
+++ b/sqlx-macros/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "sqlx-macros"
-version = "0.5.4"
+version = "0.5.5"
 repository = "https://github.com/launchbadge/sqlx"
 description = "Macros for SQLx, the rust SQL toolkit. Not intended to be used directly."
 license = "MIT OR Apache-2.0"
@@ -84,8 +84,8 @@ heck = "0.3.1"
 either = "1.5.3"
 once_cell = "1.5.2"
 proc-macro2 = { version = "1.0.9", default-features = false }
-sqlx-core = { version = "0.5.4", default-features = false, path = "../sqlx-core" }
-sqlx-rt = { version = "0.5.4", default-features = false, path = "../sqlx-rt" }
+sqlx-core = { version = "0.5.5", default-features = false, path = "../sqlx-core" }
+sqlx-rt = { version = "0.5.5", default-features = false, path = "../sqlx-rt" }
 serde = { version = "1.0.111", features = ["derive"], optional = true }
 serde_json = { version = "1.0.30", features = ["preserve_order"], optional = true }
 sha2 = { version = "0.9.1", optional = true }
diff --git a/sqlx-rt/Cargo.toml b/sqlx-rt/Cargo.toml
index 62bb08e4ad..942a54753f 100644
--- a/sqlx-rt/Cargo.toml
+++ b/sqlx-rt/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "sqlx-rt"
-version = "0.5.4"
+version = "0.5.5"
 repository = "https://github.com/launchbadge/sqlx"
 license = "MIT OR Apache-2.0"
 description = "Runtime abstraction used by SQLx, the Rust SQL toolkit. Not intended to be used directly."

From 4986ea2e5971ce1ab561bb84aa6be9c880a1d68e Mon Sep 17 00:00:00 2001
From: Jonas Platte <jplatte@users.noreply.github.com>
Date: Mon, 31 May 2021 00:52:25 +0200
Subject: [PATCH 4/5] Improve root README.md and sqlx-cli/README.md (#1262)

* readme: Fix inconsistent list style

* readme: Improve text alignment

* readme: Fix missing links

* readme: Consistently use code formatting for runtime & TLS crates and dedup links

* readme: Add SQLx is not an ORM section

* readme: Improve documentation about offline mode
---
 README.md          | 50 ++++++++++++++++++++++++++++++++++++----------
 sqlx-cli/README.md | 17 +++++++++++-----
 2 files changed, 51 insertions(+), 16 deletions(-)

diff --git a/README.md b/README.md
index df8a0e056d..7b14e4574b 100644
--- a/README.md
+++ b/README.md
@@ -50,7 +50,7 @@
 <br />
 
 <div align="center">
-  <sub>Built with ❤️ by <a href="https://launchbadge.com">The LaunchBadge team</a></sub>
+  <small>Built with ❤️ by <a href="https://launchbadge.com">The LaunchBadge team</a></small>
 </div>
 
 <br />
@@ -59,20 +59,23 @@ SQLx is an async, pure Rust<sub>†</sub> SQL crate featuring compile-time check
 
 -   **Truly Asynchronous**. Built from the ground-up using async/await for maximum concurrency.
 
--   **Type-safe SQL** (if you want it) without DSLs. Use the `query!()` macro to check your SQL and bind parameters at
-    compile time. (You can still use dynamic SQL queries if you like.)
+-   **Compile-time checked queries** (if you want). See [SQLx is not an ORM](#sqlx-is-not-an-orm).
 
 -   **Database Agnostic**. Support for [PostgreSQL], [MySQL], [SQLite], and [MSSQL].
 
 -   **Pure Rust**. The Postgres and MySQL/MariaDB drivers are written in pure Rust using **zero** unsafe<sub>††</sub> code.
 
-*   **Runtime Agnostic**. Works on different runtimes ([async-std](https://crates.io/crates/async-std) / [tokio](https://crates.io/crates/tokio) / [actix](https://crates.io/crates/actix-rt)) and TLS backends ([native-tls](https://crates.io/crates/native-tls), [rustls](https://crates.io/crates/rustls)).
+-   **Runtime Agnostic**. Works on different runtimes ([`async-std`] / [`tokio`] / [`actix`]) and TLS backends ([`native-tls`], [`rustls`]).
 
-<sub><sup>† The SQLite driver uses the libsqlite3 C library as SQLite is an embedded database (the only way
-we could be pure Rust for SQLite is by porting _all_ of SQLite to Rust).</sup></sub>
+<small><small>
 
-<sub><sup>†† SQLx uses `#![forbid(unsafe_code)]` unless the `sqlite` feature is enabled. As the SQLite driver interacts
-with C, those interactions are `unsafe`.</sup></sub>
+† The SQLite driver uses the libsqlite3 C library as SQLite is an embedded database (the only way
+we could be pure Rust for SQLite is by porting _all_ of SQLite to Rust).
+
+†† SQLx uses `#![forbid(unsafe_code)]` unless the `sqlite` feature is enabled. As the SQLite driver interacts
+with C, those interactions are `unsafe`.
+
+</small></small>
 
 [postgresql]: http://postgresql.org/
 [sqlite]: https://sqlite.org/
@@ -108,6 +111,8 @@ SQLx is compatible with the [`async-std`], [`tokio`] and [`actix`] runtimes; and
 [`async-std`]: https://github.com/async-rs/async-std
 [`tokio`]: https://github.com/tokio-rs/tokio
 [`actix`]: https://github.com/actix/actix-net
+[`native-tls`]: https://crates.io/crates/native-tls
+[`rustls`]: https://crates.io/crates/rustls
 
 ```toml
 # Cargo.toml
@@ -118,7 +123,7 @@ sqlx = { version = "0.5", features = [ "runtime-tokio-rustls" ] }
 sqlx = { version = "0.5", features = [ "runtime-async-std-native-tls" ] }
 ```
 
-<sub><sup>The runtime and TLS backend not being separate feature sets to select is a workaround for a [Cargo issue](https://github.com/rust-lang/cargo/issues/3494).</sup></sub>
+<small><small>The runtime and TLS backend not being separate feature sets to select is a workaround for a [Cargo issue](https://github.com/rust-lang/cargo/issues/3494).</small></small>
 
 #### Cargo Feature Flags
 
@@ -168,6 +173,24 @@ sqlx = { version = "0.5", features = [ "runtime-async-std-native-tls" ] }
 
 -   `tls`: Add support for TLS connections.
 
+## SQLx is not an ORM!
+
+SQLx supports **compile-time checked queries**. It does not, however, do this by providing a Rust
+API or DSL (domain-specific language) for building queries. Instead, it provides macros that take
+regular SQL as an input and ensure that it is valid for your database. The way this works is that
+SQLx connects to your development DB at compile time to have the database itself verify (and return
+some info on) your SQL queries. This has some potentially surprising implications:
+
+- Since SQLx never has to parse the SQL string itself, any syntax that the development DB accepts
+  can be used (including things added by database extensions)
+- Due to the different amount of information databases let you retrieve about queries, the extent of
+  SQL verification you get from the query macros depends on the database
+
+**If you are looking for an (asynchronous) ORM,** you can check out [`ormx`], which is built on top
+of SQLx.
+
+[`ormx`]: https://crates.io/crates/ormx
+
 ## Usage
 
 ### Quickstart
@@ -336,8 +359,8 @@ Differences from `query()`:
     ```
 
 The biggest downside to `query!()` is that the output type cannot be named (due to Rust not
-officially supporting anonymous records). To address that, there is a `query_as!()` macro that is identical
-except that you can name the output type.
+officially supporting anonymous records). To address that, there is a `query_as!()` macro that is 
+mostly identical except that you can name the output type.
 
 ```rust
 // no traits are needed
@@ -359,6 +382,11 @@ WHERE organization = ?
 // countries[0].count
 ```
 
+To avoid the need of having a development database around to compile the project even when no
+modifications (to the database-accessing parts of the code) are done, you can enable "offline mode"
+to cache the results of the SQL query analysis using the `sqlx` command-line tool. See
+[sqlx-cli/README.md](./sqlx-cli/README.md#enable-building-in-offline-mode-with-query).
+
 ## Safety
 
 This crate uses `#![forbid(unsafe_code)]` to ensure everything is implemented in 100% Safe Rust.
diff --git a/sqlx-cli/README.md b/sqlx-cli/README.md
index 0c47941c4e..f098dad8ab 100644
--- a/sqlx-cli/README.md
+++ b/sqlx-cli/README.md
@@ -49,17 +49,19 @@ $ sqlx migrate run
 Compares the migration history of the running database against the `migrations/` folder and runs
 any scripts that are still pending.
 
-#### Enable building in "offline" mode with `query!()`
+#### Enable building in "offline mode" with `query!()`
 
 Note: must be run as `cargo sqlx`.
 
 ```bash
 cargo sqlx prepare
 ```
-Saves query data to `sqlx-data.json` in the current directory; check this file into version control
-and an active database connection will no longer be needed to build your project.
 
-Has no effect unless the `offline` feature of `sqlx` is enabled in your project. Omitting that feature is the most likely cause if you get a `sqlx-data.json` file that looks like this:
+Saves query metadata to `sqlx-data.json` in the current directory; check this file into version
+control and an active database connection will no longer be needed to build your project.
+
+Has no effect unless the `offline` feature of `sqlx` is enabled in your project. Omitting that
+feature is the most likely cause if you get a `sqlx-data.json` file that looks like this:
 
 ```json
 {
@@ -67,10 +69,12 @@ Has no effect unless the `offline` feature of `sqlx` is enabled in your project.
 }
 ```
 
-----
+---
+
 ```bash
 cargo sqlx prepare --check
 ```
+
 Exits with a nonzero exit status if the data in `sqlx-data.json` is out of date with the current
 database schema and queries in the project. Intended for use in Continuous Integration.
 
@@ -79,3 +83,6 @@ database schema and queries in the project. Intended for use in Continuous Integ
 To make sure an accidentally-present `DATABASE_URL` environment variable or `.env` file does not
 result in `cargo build` (trying to) access the database, you can set the `SQLX_OFFLINE` environment
 variable to `true`.
+
+If you want to make this the default, just add it to your `.env` file. `cargo sqlx prepare` will
+still do the right thing and connect to the database.

From 358b80f62e84392c5efbfd4fa1e21a44c0705e42 Mon Sep 17 00:00:00 2001
From: Rohan Sharma <rhnsharma5113@gmail.com>
Date: Wed, 2 Jun 2021 00:50:12 +0530
Subject: [PATCH 5/5] Rename _expr to expr (#1264)

---
 sqlx-macros/src/query/args.rs | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/sqlx-macros/src/query/args.rs b/sqlx-macros/src/query/args.rs
index b46b7f664e..71094a67d2 100644
--- a/sqlx-macros/src/query/args.rs
+++ b/sqlx-macros/src/query/args.rs
@@ -79,13 +79,13 @@ pub fn quote_args<DB: DatabaseExt>(
                             use ::sqlx::ty_match::{WrapSameExt as _, MatchBorrowExt as _};
 
                             // evaluate the expression only once in case it contains moves
-                            let _expr = ::sqlx::ty_match::dupe_value(#name);
+                            let expr = ::sqlx::ty_match::dupe_value(#name);
 
-                            // if `_expr` is `Option<T>`, get `Option<$ty>`, otherwise `$ty`
-                            let ty_check = ::sqlx::ty_match::WrapSame::<#param_ty, _>::new(&_expr).wrap_same();
+                            // if `expr` is `Option<T>`, get `Option<$ty>`, otherwise `$ty`
+                            let ty_check = ::sqlx::ty_match::WrapSame::<#param_ty, _>::new(&expr).wrap_same();
 
-                            // if `_expr` is `&str`, convert `String` to `&str`
-                            let (mut _ty_check, match_borrow) = ::sqlx::ty_match::MatchBorrow::new(ty_check, &_expr);
+                            // if `expr` is `&str`, convert `String` to `&str`
+                            let (mut _ty_check, match_borrow) = ::sqlx::ty_match::MatchBorrow::new(ty_check, &expr);
 
                             _ty_check = match_borrow.match_borrow();