Skip to content

Commit 2bed2e0

Browse files
committed
Release v0.9.2
1 parent 512b823 commit 2bed2e0

12 files changed

Lines changed: 367 additions & 159 deletions

File tree

.github/workflows/ci.yaml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,21 @@ jobs:
4242
run: cargo doc --workspace --no-deps --document-private-items --all-features
4343
env:
4444
RUSTDOCFLAGS: -D warnings
45+
46+
docs_rs:
47+
name: Emulate docs.rs build
48+
runs-on: ubuntu-latest
49+
env:
50+
RUSTDOCFLAGS: -Dwarnings
51+
steps:
52+
- uses: actions/checkout@v4
53+
- uses: dtolnay/rust-toolchain@nightly
54+
- uses: dtolnay/install@cargo-docs-rs
55+
- run: cargo +nightly docs-rs
4556

4657
clippy:
4758
name: Clippy
48-
needs: [format, docs]
59+
needs: [format, docs, docs_rs]
4960
runs-on: ubuntu-latest
5061
strategy:
5162
matrix:

.github/workflows/publish.yaml

Lines changed: 55 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
exasol-version: ${{ env.EXASOL_VERSION }}
3030
num-nodes: ${{ env.NUM_NODES }}
3131

32-
- uses: dtolnay/rust-toolchain@stable
32+
- uses: dtolnay/rust-toolchain@1.86.0
3333
- uses: Swatinem/rust-cache@v2
3434

3535
- name: Test IO combos (no TLS, no compression)
@@ -38,41 +38,89 @@ jobs:
3838
env:
3939
DATABASE_URL: ${{ steps.exa-cluster.outputs.url }}
4040
SQLX_OFFLINE: true
41-
41+
4242
- name: Test IO combos (no TLS, with compression)
4343
timeout-minutes: ${{ fromJSON(env.TESTS_TIMEOUT) }}
4444
run: cargo test --features runtime-tokio,etl,compression -- it_works_with_io_combo --ignored --nocapture
4545
env:
4646
DATABASE_URL: ${{ steps.exa-cluster.outputs.url }}
4747
SQLX_OFFLINE: true
48-
48+
4949
- name: Test IO combos (NativeTLS, no compression)
5050
timeout-minutes: ${{ fromJSON(env.TESTS_TIMEOUT) }}
5151
run: cargo test --features runtime-tokio,etl,tls-native-tls -- it_works_with_io_combo --ignored --nocapture
5252
env:
5353
DATABASE_URL: ${{ steps.exa-cluster.outputs.url }}
5454
SQLX_OFFLINE: true
55-
55+
5656
- name: Test IO combos (NativeTLS, with compression)
5757
timeout-minutes: ${{ fromJSON(env.TESTS_TIMEOUT) }}
5858
run: cargo test --features runtime-tokio,etl,tls-native-tls,compression -- it_works_with_io_combo --ignored --nocapture
5959
env:
6060
DATABASE_URL: ${{ steps.exa-cluster.outputs.url }}
6161
SQLX_OFFLINE: true
62-
62+
6363
- name: Test IO combos (Rustls, no compression)
6464
timeout-minutes: ${{ fromJSON(env.TESTS_TIMEOUT) }}
6565
run: cargo test --features runtime-tokio,etl,tls-rustls-aws-lc-rs -- it_works_with_io_combo --ignored --nocapture
6666
env:
6767
DATABASE_URL: ${{ steps.exa-cluster.outputs.url }}
6868
SQLX_OFFLINE: true
69-
69+
7070
- name: Test IO combos (Rustls, with compression)
7171
timeout-minutes: ${{ fromJSON(env.TESTS_TIMEOUT) }}
7272
run: cargo test --features runtime-tokio,etl,tls-rustls-aws-lc-rs,compression -- it_works_with_io_combo --ignored --nocapture
7373
env:
7474
DATABASE_URL: ${{ steps.exa-cluster.outputs.url }}
7575
SQLX_OFFLINE: true
76+
77+
io_tests_latest:
78+
name: IO tests on latest Exasol (TLS only)
79+
runs-on: ubuntu-latest
80+
steps:
81+
- uses: actions/checkout@v4
82+
83+
- name: Free disk space
84+
uses: ./.github/actions/free-space
85+
86+
- name: Create Exasol cluster
87+
timeout-minutes: ${{ fromJSON(env.EXA_CLUSTER_SETUP_TIMEOUT) }}
88+
id: exa-cluster
89+
uses: ./.github/actions/exa-cluster
90+
with:
91+
exasol-version: latest
92+
num-nodes: 1
93+
94+
- uses: dtolnay/rust-toolchain@1.86.0
95+
- uses: Swatinem/rust-cache@v2
96+
97+
- name: Test IO combos (NativeTLS, no compression)
98+
timeout-minutes: ${{ fromJSON(env.TESTS_TIMEOUT) }}
99+
run: cargo test --features runtime-tokio,etl,tls-native-tls -- it_works_with_io_combo_tls --ignored --nocapture
100+
env:
101+
DATABASE_URL: ${{ steps.exa-cluster.outputs.url }}
102+
SQLX_OFFLINE: true
103+
104+
- name: Test IO combos (NativeTLS, with compression)
105+
timeout-minutes: ${{ fromJSON(env.TESTS_TIMEOUT) }}
106+
run: cargo test --features runtime-tokio,etl,tls-native-tls,compression -- it_works_with_io_combo_tls --ignored --nocapture
107+
env:
108+
DATABASE_URL: ${{ steps.exa-cluster.outputs.url }}
109+
SQLX_OFFLINE: true
110+
111+
- name: Test IO combos (Rustls, no compression)
112+
timeout-minutes: ${{ fromJSON(env.TESTS_TIMEOUT) }}
113+
run: cargo test --features runtime-tokio,etl,tls-rustls-aws-lc-rs -- it_works_with_io_combo_tls --ignored --nocapture
114+
env:
115+
DATABASE_URL: ${{ steps.exa-cluster.outputs.url }}
116+
SQLX_OFFLINE: true
117+
118+
- name: Test IO combos (Rustls, with compression)
119+
timeout-minutes: ${{ fromJSON(env.TESTS_TIMEOUT) }}
120+
run: cargo test --features runtime-tokio,etl,tls-rustls-aws-lc-rs,compression -- it_works_with_io_combo_tls --ignored --nocapture
121+
env:
122+
DATABASE_URL: ${{ steps.exa-cluster.outputs.url }}
123+
SQLX_OFFLINE: true
76124

77125
driver_tests:
78126
name: Driver tests
@@ -195,7 +243,7 @@ jobs:
195243

196244
publish:
197245
name: Publish
198-
needs: [io_tests, driver_tests, etl_tests]
246+
needs: [io_tests, io_tests_latest, driver_tests, etl_tests]
199247
runs-on: ubuntu-latest
200248
steps:
201249
- uses: actions/checkout@v4

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](http://keepachangelog.com/)
66
and this project adheres to [Semantic Versioning](http://semver.org/).
77

8+
## [0.9.2] - 2026-01-23
9+
10+
### Fixed
11+
12+
- [#59](https://github.com/bobozaur/sqlx-exasol/pull/59): More closely mimic sqlx feature flags
13+
- mimic `sqlx` feature flags more closely to avoid surprises
14+
- fix `docs.rs` build
15+
- add `cargo docs-rs` CI job
16+
- selective re-exports from `sqlx` and `sqlx-core`
17+
- add latest Exasol IO tests to publish workflow
18+
819
## [0.9.1] - 2026-01-22
920

1021
### Added

Cargo.toml

Lines changed: 95 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
members = [".", "sqlx-exasol-cli", "sqlx-exasol-impl", "sqlx-exasol-macros"]
33

44
[workspace.package]
5-
version = "0.9.1"
5+
version = "0.9.2-alpha"
66
license = "MIT OR Apache-2.0"
77
edition = "2024"
88
rust-version = "1.86.0"
@@ -23,87 +23,138 @@ authors.workspace = true
2323
repository.workspace = true
2424
exclude = ["tests/*"]
2525

26+
# Note: written so that it may be copy-pasted to other crates
2627
[package.metadata.docs.rs]
27-
features = [
28-
"etl",
29-
"compression",
30-
"any",
31-
"migrate",
32-
"macros",
33-
"bigdecimal",
34-
"chrono",
35-
"rust_decimal",
36-
"time",
37-
"uuid",
38-
"json",
39-
"geo-types",
40-
]
28+
features = ["_unstable-docs"]
29+
rustdoc-args = ["--cfg", "docsrs"]
4130

4231
[features]
4332
default = ["any", "macros", "migrate", "json"]
4433

45-
derive = ["sqlx-a-orig/derive", "sqlx-exasol-macros?/derive"]
46-
macros = ["derive", "sqlx-a-orig/macros", "sqlx-exasol-macros/macros"]
34+
derive = ["sqlx-exasol-macros/derive", "sqlx-orig/derive"]
35+
macros = ["derive", "sqlx-exasol-macros/macros", "sqlx-orig/macros"]
4736
migrate = [
48-
"sqlx-a-orig/migrate",
37+
"sqlx-core/migrate",
38+
"sqlx-exasol-macros/migrate",
4939
"sqlx-exasol-impl/migrate",
50-
"sqlx-exasol-macros?/migrate",
5140
]
5241

53-
sqlx-toml = ["sqlx-exasol-impl/sqlx-toml", "sqlx-exasol-macros?/sqlx-toml"]
42+
# Enable parsing of `sqlx.toml` for configuring macros and migrations.
43+
sqlx-toml = ["sqlx-core/sqlx-toml", "sqlx-exasol-macros?/sqlx-toml"]
44+
45+
# intended mainly for CI and docs
46+
all-databases = ["any"]
47+
_unstable-all-types = [
48+
"bigdecimal",
49+
"rust_decimal",
50+
"json",
51+
"time",
52+
"chrono",
53+
"uuid",
54+
"geo-types",
55+
]
56+
57+
# Render documentation that wouldn't otherwise be shown (e.g. `sqlx_core::config`).
58+
_unstable-docs = ["all-databases", "_unstable-all-types", "etl", "compression"]
5459

5560
# Base runtime features without TLS
56-
runtime-async-std = ["sqlx-a-orig/runtime-async-std"]
57-
runtime-tokio = ["sqlx-a-orig/runtime-tokio"]
61+
runtime-async-global-executor = [
62+
"_rt-async-global-executor",
63+
"sqlx-core/_rt-async-global-executor",
64+
"sqlx-exasol-macros?/_rt-async-global-executor",
65+
]
66+
runtime-async-std = [
67+
"_rt-async-std",
68+
"sqlx-core/_rt-async-std",
69+
"sqlx-exasol-macros?/_rt-async-std",
70+
]
71+
runtime-smol = [
72+
"_rt-smol",
73+
"sqlx-core/_rt-smol",
74+
"sqlx-exasol-macros?/_rt-smol",
75+
]
76+
runtime-tokio = [
77+
"_rt-tokio",
78+
"sqlx-core/_rt-tokio",
79+
"sqlx-exasol-macros?/_rt-tokio",
80+
]
5881

5982
# TLS features
60-
tls-native-tls = ["sqlx-a-orig/tls-native-tls", "sqlx-exasol-impl/native-tls"]
83+
tls-native-tls = [
84+
"sqlx-core/_tls-native-tls",
85+
"sqlx-exasol-macros?/_tls-native-tls",
86+
"sqlx-exasol-impl/native-tls",
87+
]
88+
tls-rustls = ["tls-rustls-ring"] # For backwards compatibility
6189
tls-rustls-aws-lc-rs = [
62-
"sqlx-a-orig/tls-rustls-aws-lc-rs",
90+
"sqlx-core/_tls-rustls-aws-lc-rs",
91+
"sqlx-exasol-macros?/_tls-rustls-aws-lc-rs",
6392
"sqlx-exasol-impl/rustls-aws-lc-rs",
6493
]
94+
tls-rustls-ring = ["tls-rustls-ring-webpki"] # For backwards compatibility
6595
tls-rustls-ring-webpki = [
66-
"sqlx-a-orig/tls-rustls-ring-webpki",
96+
"sqlx-core/_tls-rustls-ring-webpki",
97+
"sqlx-exasol-macros?/_tls-rustls-ring-webpki",
6798
"sqlx-exasol-impl/rustls-ring",
6899
]
69100
tls-rustls-ring-native-roots = [
70-
"sqlx-a-orig/tls-rustls-ring-native-roots",
101+
"sqlx-core/_tls-rustls-ring-native-roots",
102+
"sqlx-exasol-macros?/_tls-rustls-ring-native-roots",
71103
"sqlx-exasol-impl/rustls-ring",
72104
]
73105

74-
# Database
75-
any = ["sqlx-a-orig/any", "sqlx-exasol-impl/any"]
106+
# No-op feature used by the workflows to compile without TLS enabled. Not meant for general use.
107+
tls-none = []
108+
109+
# for conditional compilation
110+
_rt-async-global-executor = []
111+
_rt-async-std = []
112+
_rt-smol = []
113+
_rt-tokio = []
114+
115+
# database
116+
any = ["sqlx-core/any", "sqlx-exasol-impl/any"]
117+
118+
# types
119+
json = ["sqlx-core/json", "sqlx-exasol-macros?/json", "sqlx-exasol-impl/json"]
76120

77-
# Types
78121
bigdecimal = [
79-
"sqlx-a-orig/bigdecimal",
80-
"sqlx-exasol-impl/bigdecimal",
122+
"sqlx-core/bigdecimal",
81123
"sqlx-exasol-macros?/bigdecimal",
124+
"sqlx-exasol-impl/bigdecimal",
82125
]
83126
chrono = [
84-
"sqlx-a-orig/chrono",
85-
"sqlx-exasol-impl/chrono",
127+
"sqlx-core/chrono",
86128
"sqlx-exasol-macros?/chrono",
129+
"sqlx-exasol-impl/chrono",
87130
]
88-
geo-types = ["sqlx-exasol-impl/geo-types", "sqlx-exasol-macros?/geo-types"]
89-
json = ["sqlx-a-orig/json", "sqlx-exasol-impl/json", "sqlx-exasol-macros?/json"]
90131
rust_decimal = [
91-
"sqlx-a-orig/rust_decimal",
92-
"sqlx-exasol-impl/rust_decimal",
132+
"sqlx-core/rust_decimal",
93133
"sqlx-exasol-macros?/rust_decimal",
134+
"sqlx-exasol-impl/rust_decimal",
94135
]
95-
time = ["sqlx-a-orig/time", "sqlx-exasol-impl/time", "sqlx-exasol-macros?/time"]
96-
uuid = ["sqlx-a-orig/uuid", "sqlx-exasol-impl/uuid", "sqlx-exasol-macros?/uuid"]
136+
time = ["sqlx-core/time", "sqlx-exasol-macros?/time", "sqlx-exasol-impl/time"]
137+
uuid = ["sqlx-core/uuid", "sqlx-exasol-macros?/uuid", "sqlx-exasol-impl/uuid"]
138+
geo-types = ["sqlx-exasol-macros?/geo-types", "sqlx-exasol-impl/geo-types"]
97139

98140
# Driver specific features
99141
compression = ["sqlx-exasol-impl/compression"]
100142
etl = ["sqlx-exasol-impl/etl"]
101143

102144
[workspace.dependencies]
103145
# Internal
104-
sqlx-exasol = { version = "0.9.1", path = "." }
105-
sqlx-exasol-macros = { version = "0.9.1", path = "sqlx-exasol-macros" }
106-
sqlx-exasol-impl = { version = "0.9.1", path = "sqlx-exasol-impl" }
146+
sqlx-exasol = { version = "0.9.2-alpha", path = "." }
147+
sqlx-exasol-macros = { version = "0.9.2-alpha", path = "sqlx-exasol-macros" }
148+
sqlx-exasol-impl = { version = "0.9.2-alpha", path = "sqlx-exasol-impl" }
149+
150+
# SQLx
151+
sqlx-cli = { version = "=0.9.0-alpha.1", default-features = false }
152+
sqlx-core = { version = "=0.9.0-alpha.1", default-features = false, features = [
153+
"offline",
154+
"migrate",
155+
] }
156+
sqlx-macros-core = { version = "=0.9.0-alpha.1", default-features = false }
157+
sqlx-orig = { version = "=0.9.0-alpha.1", default-features = false, package = "sqlx" }
107158

108159
# External
109160
arrayvec = { version = "0.7", default-features = false }
@@ -165,15 +216,6 @@ serde_json = { version = "1", default-features = false, features = [
165216
"raw_value",
166217
] }
167218
sha2 = { version = "0.10", default-features = false, features = ["std"] }
168-
sqlx-cli = { version = "0.9.0-alpha.1", default-features = false }
169-
sqlx-core = { version = "0.9.0-alpha.1", default-features = false, features = [
170-
"offline",
171-
"migrate",
172-
] }
173-
sqlx-macros-core = { version = "0.9.0-alpha.1", default-features = false }
174-
# Purposely named like this to prevent formatting reordering.
175-
# We also get the benefit of ensuring that our overrides work correctly since `sqlx` is not available
176-
sqlx-a-orig = { version = "0.9.0-alpha.1", default-features = false, package = "sqlx" }
177219
syn = { version = "2", default-features = false, features = [
178220
"full",
179221
"parsing",
@@ -203,7 +245,8 @@ wkt = { version = "0.14", default-features = false, features = [
203245
[dependencies]
204246
sqlx-exasol-macros = { workspace = true, optional = true }
205247
sqlx-exasol-impl = { workspace = true }
206-
sqlx-a-orig = { workspace = true }
248+
sqlx-core = { workspace = true }
249+
sqlx-orig = { workspace = true }
207250

208251
[dev-dependencies]
209252
dotenvy = { workspace = true }

0 commit comments

Comments
 (0)