Skip to content

Commit 50acb3c

Browse files
Merge branch 'main' into optional-liblzma
2 parents f855644 + 017d9ad commit 50acb3c

File tree

14 files changed

+180
-139
lines changed

14 files changed

+180
-139
lines changed

Cargo.lock

Lines changed: 115 additions & 122 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ axum = "0.8.4"
3131
criterion = "0.6.0"
3232
diesel = "2.2.10"
3333
diesel_migrations = "2.2.0"
34-
flate2 = "1.1.1"
34+
flate2 = "1.1.2"
3535
futures-util = "0.3.31"
3636
hex = "0.4.3"
3737
indicatif = "0.17.11"
@@ -45,10 +45,10 @@ quick-xml = "0.37.5"
4545
r2d2_postgres = "0.18.2"
4646
rand = "0.9.1"
4747
regex-lite = "0.1.6"
48-
reqwest = { version = "0.12.18", default-features = false }
48+
reqwest = { version = "0.12.20", default-features = false }
4949
reqwest-middleware = "0.4.2"
5050
reqwest-retry = "0.7.0"
51-
reqwest-tracing = "0.5.7"
51+
reqwest-tracing = "0.5.8"
5252
semver = "1.0.26"
5353
serde = "1.0.219"
5454
serde_json = "1.0.140"
@@ -65,7 +65,7 @@ tracing = "0.1.41"
6565
tracing-indicatif = "0.3.9"
6666
tracing-subscriber = "0.3.19"
6767
url = "2.5.4"
68-
zip = { version = "4.0.0", default-features = false, features = ["deflate"] }
68+
zip = { version = "4.1.0", default-features = false, features = ["deflate"] }
6969

7070
[workspace.metadata.release]
7171
shared-version = true

postgresql_archive/src/archive.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ pub async fn extract(url: &str, bytes: &Vec<u8>, out_dir: &Path) -> Result<Vec<P
4545
let extractor_fn = extractor::registry::get(url)?;
4646
let mut extract_directories = extractor::ExtractDirectories::default();
4747
extract_directories.add_mapping(Regex::new(".*")?, out_dir.to_path_buf());
48-
extractor_fn(bytes, extract_directories)
48+
extractor_fn(bytes, &extract_directories)
4949
}
5050

5151
#[cfg(test)]

postgresql_archive/src/configuration/theseus/extractor.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use tracing::{debug, instrument, warn};
1313
/// # Errors
1414
/// Returns an error if the extraction fails.
1515
#[instrument(skip(bytes))]
16-
pub fn extract(bytes: &Vec<u8>, extract_directories: ExtractDirectories) -> Result<Vec<PathBuf>> {
16+
pub fn extract(bytes: &Vec<u8>, extract_directories: &ExtractDirectories) -> Result<Vec<PathBuf>> {
1717
let out_dir = extract_directories.get_path(".")?;
1818

1919
let parent_dir = if let Some(parent) = out_dir.parent() {
@@ -41,7 +41,7 @@ pub fn extract(bytes: &Vec<u8>, extract_directories: ExtractDirectories) -> Resu
4141
debug!("Extracting archive to {}", extract_dir.to_string_lossy());
4242
let mut archive_extract_directories = ExtractDirectories::default();
4343
archive_extract_directories.add_mapping(Regex::new(".*")?, extract_dir.clone());
44-
let files = tar_gz_extract(bytes, archive_extract_directories)?;
44+
let files = tar_gz_extract(bytes, &archive_extract_directories)?;
4545

4646
if out_dir.exists() {
4747
debug!(

postgresql_archive/src/configuration/zonky/extractor.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use zip::ZipArchive;
1616
/// Returns an error if the extraction fails.
1717
#[expect(clippy::case_sensitive_file_extension_comparisons)]
1818
#[instrument(skip(bytes))]
19-
pub fn extract(bytes: &Vec<u8>, extract_directories: ExtractDirectories) -> Result<Vec<PathBuf>> {
19+
pub fn extract(bytes: &Vec<u8>, extract_directories: &ExtractDirectories) -> Result<Vec<PathBuf>> {
2020
let out_dir = extract_directories.get_path(".")?;
2121
let parent_dir = if let Some(parent) = out_dir.parent() {
2222
parent
@@ -63,7 +63,7 @@ pub fn extract(bytes: &Vec<u8>, extract_directories: ExtractDirectories) -> Resu
6363

6464
let mut archive_extract_directories = ExtractDirectories::default();
6565
archive_extract_directories.add_mapping(Regex::new(".*")?, extract_dir.clone());
66-
let files = tar_xz_extract(&archive_bytes, archive_extract_directories)?;
66+
let files = tar_xz_extract(&archive_bytes, &archive_extract_directories)?;
6767

6868
if out_dir.exists() {
6969
debug!(

postgresql_archive/src/extractor/registry.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ static REGISTRY: LazyLock<Arc<Mutex<RepositoryRegistry>>> =
1212
LazyLock::new(|| Arc::new(Mutex::new(RepositoryRegistry::default())));
1313

1414
type SupportsFn = fn(&str) -> Result<bool>;
15-
type ExtractFn = fn(&Vec<u8>, ExtractDirectories) -> Result<Vec<PathBuf>>;
15+
type ExtractFn = fn(&Vec<u8>, &ExtractDirectories) -> Result<Vec<PathBuf>>;
1616

1717
/// Singleton struct to store extractors
1818
#[expect(clippy::type_complexity)]
@@ -107,7 +107,7 @@ mod tests {
107107
let extractor = get(url)?;
108108
let mut extract_directories = ExtractDirectories::default();
109109
extract_directories.add_mapping(Regex::new(".*")?, PathBuf::from("test"));
110-
assert!(extractor(&Vec::new(), extract_directories).is_ok());
110+
assert!(extractor(&Vec::new(), &extract_directories).is_ok());
111111
Ok(())
112112
}
113113

postgresql_archive/src/extractor/tar_gz_extractor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use tracing::{debug, instrument, warn};
1414
/// # Errors
1515
/// Returns an error if the extraction fails.
1616
#[instrument(skip(bytes))]
17-
pub fn extract(bytes: &Vec<u8>, extract_directories: ExtractDirectories) -> Result<Vec<PathBuf>> {
17+
pub fn extract(bytes: &Vec<u8>, extract_directories: &ExtractDirectories) -> Result<Vec<PathBuf>> {
1818
let mut files = Vec::new();
1919
let input = BufReader::new(Cursor::new(bytes));
2020
let decoder = GzDecoder::new(input);

postgresql_archive/src/extractor/tar_xz_extractor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use tracing::{debug, instrument, warn};
1414
/// # Errors
1515
/// Returns an error if the extraction fails.
1616
#[instrument(skip(bytes))]
17-
pub fn extract(bytes: &Vec<u8>, extract_directories: ExtractDirectories) -> Result<Vec<PathBuf>> {
17+
pub fn extract(bytes: &Vec<u8>, extract_directories: &ExtractDirectories) -> Result<Vec<PathBuf>> {
1818
let mut files = Vec::new();
1919
let input = BufReader::new(Cursor::new(bytes));
2020
let decoder = XzDecoder::new(input);

postgresql_archive/src/extractor/zip_extractor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use zip::ZipArchive;
1313
/// # Errors
1414
/// Returns an error if the extraction fails.
1515
#[instrument(skip(bytes))]
16-
pub fn extract(bytes: &Vec<u8>, extract_directories: ExtractDirectories) -> Result<Vec<PathBuf>> {
16+
pub fn extract(bytes: &Vec<u8>, extract_directories: &ExtractDirectories) -> Result<Vec<PathBuf>> {
1717
let mut files = Vec::new();
1818
let reader = Cursor::new(bytes);
1919
let mut archive = ZipArchive::new(reader).map_err(|_| io::Error::other("Zip error"))?;

postgresql_embedded/README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,30 @@ The following features are available:
110110
| `tokio` | Enables using tokio for async | No |
111111
| `zonky` | Enables zonky PostgreSQL binaries | No |
112112

113+
## Bundling PostgreSQL
114+
115+
To bundle PostgreSQL with your application, you can enable the `bundled` feature. This will download the PostgreSQL
116+
archive at compile time and include it in your binary. You should specify the version of PostgreSQL to bundle by
117+
setting the environment variable `POSTGRESQL_VERSION` to a specific version, e.g. `=17.2.0`. In order to use the bundled
118+
PostgreSQL, you will also need to set an explicit matching version at runtime in `Settings`:
119+
120+
```rust
121+
use postgresql_embedded::{Result, Settings, VersionReq};
122+
123+
#[tokio::main]
124+
async fn main() -> Result<()> {
125+
let settings = Settings {
126+
version: VersionReq::from_str("=17.2.0")?,
127+
..Default::default()
128+
};
129+
Ok(())
130+
}
131+
```
132+
133+
The PostgreSQL binaries can also be obtained from a different GitHub source by setting the `POSTGRESQL_RELEASES_URL`
134+
environment variable. The repository must contain the releases with archives in same structure as
135+
[theseus-rs/postgresql_binaries](https://github.com/theseus-rs/postgresql-binaries).
136+
113137
## Safety
114138

115139
This crate uses `#![forbid(unsafe_code)]` to ensure everything is implemented in 100% safe Rust.

0 commit comments

Comments
 (0)