Skip to content

Commit c0abf80

Browse files
committed
update
1 parent a23ce79 commit c0abf80

File tree

19 files changed

+869
-478
lines changed

19 files changed

+869
-478
lines changed

.github/workflows/sqlx.yml

Lines changed: 74 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ jobs:
343343

344344
- uses: Swatinem/rust-cache@v2
345345

346-
- run: cargo build --features mysql,mysql-compression,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
346+
- run: cargo build --features mysql,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
347347

348348
- run: docker compose -f tests/docker-compose.yml run -d -p 3306:3306 --name mysql_${{ matrix.mysql }} mysql_${{ matrix.mysql }}
349349
- run: sleep 60
@@ -354,18 +354,38 @@ jobs:
354354
- run: >
355355
cargo test
356356
--no-default-features
357-
--features any,mysql,macros,mysql-compression,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
357+
--features any,mysql,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
358358
env:
359359
DATABASE_URL: mysql://root:password@localhost:3306/sqlx?ssl-mode=disabled
360360
SQLX_OFFLINE_DIR: .sqlx
361361
RUSTFLAGS: --cfg mysql_${{ matrix.mysql }}
362362
363+
# Run tests to validate zstd compression for traffic
364+
- run: >
365+
cargo test
366+
--no-default-features
367+
--features any,mysql,mysql-zstd-compression,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
368+
env:
369+
DATABASE_URL: mysql://root:password@localhost:3306/sqlx?ssl-mode=disabled&compression=zstd:1
370+
SQLX_OFFLINE_DIR: .sqlx
371+
RUSTFLAGS: --cfg mysql_${{ matrix.mysql }}
372+
373+
# Run tests to validate zlib compression for traffic
374+
- run: >
375+
cargo test
376+
--no-default-features
377+
--features any,mysql,mysql-zlib-compression,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
378+
env:
379+
DATABASE_URL: mysql://root:password@localhost:3306/sqlx?ssl-mode=disabled&compression=zlib:1
380+
SQLX_OFFLINE_DIR: .sqlx
381+
RUSTFLAGS: --cfg mysql_${{ matrix.mysql }}
382+
363383
# Run the `test-attr` test again to cover cleanup.
364384
- run: >
365385
cargo test
366386
--test mysql-test-attr
367387
--no-default-features
368-
--features any,mysql,macros,mysql-compression,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
388+
--features any,mysql,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
369389
env:
370390
DATABASE_URL: mysql://root:password@localhost:3306/sqlx?ssl-mode=disabled
371391
SQLX_OFFLINE_DIR: .sqlx
@@ -376,7 +396,7 @@ jobs:
376396
run: >
377397
cargo test
378398
--no-default-features
379-
--features any,mysql,macros,mysql-compression,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
399+
--features any,mysql,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
380400
env:
381401
DATABASE_URL: mysql://root:password@localhost:3306/sqlx
382402
SQLX_OFFLINE_DIR: .sqlx
@@ -390,7 +410,7 @@ jobs:
390410
cargo build
391411
--no-default-features
392412
--test mysql-macros
393-
--features any,mysql,macros,mysql-compression,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
413+
--features any,mysql,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
394414
env:
395415
SQLX_OFFLINE: true
396416
SQLX_OFFLINE_DIR: .sqlx
@@ -402,7 +422,7 @@ jobs:
402422
cargo test
403423
--no-default-features
404424
--test mysql-macros
405-
--features any,mysql,macros,mysql-compression,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
425+
--features any,mysql,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
406426
env:
407427
DATABASE_URL: mysql://root:password@localhost:3306/sqlx
408428
SQLX_OFFLINE: true
@@ -421,11 +441,32 @@ jobs:
421441
run: >
422442
cargo test
423443
--no-default-features
424-
--features any,mysql,macros,mysql-compression,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
444+
--features any,mysql,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
425445
env:
426446
DATABASE_URL: mysql://root@localhost:3306/sqlx?sslmode=verify_ca&ssl-ca=.%2Ftests%2Fcerts%2Fca.crt&ssl-key=.%2Ftests%2Fcerts%2Fkeys%2Fclient.key&ssl-cert=.%2Ftests%2Fcerts%2Fclient.crt
427447
RUSTFLAGS: --cfg mysql_${{ matrix.mysql }}
428448

449+
# Run tests to validate zstd compression for traffic with tls
450+
- if: ${{ matrix.tls != 'none' }}
451+
run: >
452+
cargo test
453+
--no-default-features
454+
--features any,mysql,mysql-zstd-compression,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
455+
env:
456+
DATABASE_URL: mysql://root@localhost:3306/sqlx?sslmode=verify_ca&ssl-ca=.%2Ftests%2Fcerts%2Fca.crt&ssl-key=.%2Ftests%2Fcerts%2Fkeys%2Fclient.key&ssl-cert=.%2Ftests%2Fcerts%2Fclient.crt&compression=zstd:1
457+
RUSTFLAGS: --cfg mysql_${{ matrix.mysql }}
458+
459+
# Run tests to validate zlib compression for traffic with tls
460+
- if: ${{ matrix.tls != 'none' }}
461+
run: >
462+
cargo test
463+
--no-default-features
464+
--features any,mysql,mysql-zlib-compression,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
465+
env:
466+
DATABASE_URL: mysql://root@localhost:3306/sqlx?sslmode=verify_ca&ssl-ca=.%2Ftests%2Fcerts%2Fca.crt&ssl-key=.%2Ftests%2Fcerts%2Fkeys%2Fclient.key&ssl-cert=.%2Ftests%2Fcerts%2Fclient.crt&compression=zlib:1
467+
RUSTFLAGS: --cfg mysql_${{ matrix.mysql }}
468+
469+
429470
mariadb:
430471
name: MariaDB
431472
runs-on: ubuntu-24.04
@@ -444,7 +485,7 @@ jobs:
444485

445486
- uses: Swatinem/rust-cache@v2
446487

447-
- run: cargo build --features mysql,mysql-compression,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
488+
- run: cargo build --features mysql,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
448489

449490
- run: docker compose -f tests/docker-compose.yml run -d -p 3306:3306 --name mariadb_${{ matrix.mariadb }} mariadb_${{ matrix.mariadb }}
450491
- run: sleep 30
@@ -455,18 +496,28 @@ jobs:
455496
- run: >
456497
cargo test
457498
--no-default-features
458-
--features any,mysql,macros,mysql-compression,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
499+
--features any,mysql,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
459500
env:
460501
DATABASE_URL: mysql://root:password@localhost:3306/sqlx
461502
SQLX_OFFLINE_DIR: .sqlx
462503
RUSTFLAGS: --cfg mariadb="${{ matrix.mariadb }}"
463504
505+
# Run tests to validate zlib compression for traffic
506+
- run: >
507+
cargo test
508+
--no-default-features
509+
--features any,mysql,mysql-zlib-compression,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
510+
env:
511+
DATABASE_URL: mysql://root:password@localhost:3306/sqlx?compression=zlib:1
512+
SQLX_OFFLINE_DIR: .sqlx
513+
RUSTFLAGS: --cfg mariadb="${{ matrix.mariadb }}"
514+
464515
# Run the `test-attr` test again to cover cleanup.
465516
- run: >
466517
cargo test
467518
--test mysql-test-attr
468519
--no-default-features
469-
--features any,mysql,macros,mysql-compression,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
520+
--features any,mysql,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
470521
env:
471522
DATABASE_URL: mysql://root:password@localhost:3306/sqlx
472523
SQLX_OFFLINE_DIR: .sqlx
@@ -491,7 +542,7 @@ jobs:
491542
cargo test
492543
--no-default-features
493544
--test mysql-macros
494-
--features any,mysql,macros,mysql-compression,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
545+
--features any,mysql,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
495546
env:
496547
DATABASE_URL: mysql://root:password@localhost:3306/sqlx
497548
SQLX_OFFLINE: true
@@ -510,7 +561,18 @@ jobs:
510561
run: >
511562
cargo test
512563
--no-default-features
513-
--features any,mysql,macros,mysql-compression,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
564+
--features any,mysql,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
514565
env:
515566
DATABASE_URL: mysql://root@localhost:3306/sqlx?sslmode=verify_ca&ssl-ca=.%2Ftests%2Fcerts%2Fca.crt&ssl-key=.%2Ftests%2Fcerts%2Fkeys%2Fclient.key&ssl-cert=.%2Ftests%2Fcerts%2Fclient.crt
516567
RUSTFLAGS: --cfg mariadb="${{ matrix.mariadb }}"
568+
569+
570+
# Run tests to validate zlib compression for traffic with tls
571+
- if: ${{ matrix.tls != 'none' }}
572+
run: >
573+
cargo test
574+
--no-default-features
575+
--features any,mysql,mysql-zlib-compression,macros,migrate,_unstable-all-types,runtime-${{ matrix.runtime }},tls-${{ matrix.tls }}
576+
env:
577+
DATABASE_URL: mysql://root@localhost:3306/sqlx?sslmode=verify_ca&ssl-ca=.%2Ftests%2Fcerts%2Fca.crt&ssl-key=.%2Ftests%2Fcerts%2Fkeys%2Fclient.key&ssl-cert=.%2Ftests%2Fcerts%2Fclient.crt&compression=zlib:1
578+
RUSTFLAGS: --cfg mariadb="${{ matrix.mariadb }}"

Cargo.toml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,8 @@ regexp = ["sqlx-sqlite?/regexp"]
162162
bstr = ["sqlx-core/bstr"]
163163

164164
# compression
165-
mysql-compression = ["sqlx-mysql/compression"]
165+
mysql-zstd-compression = ["sqlx-mysql/zstd-compression"]
166+
mysql-zlib-compression = ["sqlx-mysql/zlib-compression"]
166167

167168
[workspace.dependencies]
168169
# Core Crates
@@ -362,7 +363,7 @@ required-features = ["sqlite"]
362363
[[test]]
363364
name = "mysql"
364365
path = "tests/mysql/mysql.rs"
365-
required-features = ["mysql", "compression"]
366+
required-features = ["mysql"]
366367

367368
[[test]]
368369
name = "mysql-types"
@@ -404,6 +405,12 @@ name = "mysql-rustsec"
404405
path = "tests/mysql/rustsec.rs"
405406
required-features = ["mysql"]
406407

408+
[[test]]
409+
name = "mysql-compression"
410+
path = "tests/mysql/compression.rs"
411+
required-features = ["mysql"]
412+
413+
407414
#
408415
# PostgreSQL
409416
#

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,9 @@ be removed in the future.
177177

178178
- `mysql`: Add support for the MySQL/MariaDB database server.
179179

180-
- `mysql-compression`: Add compression support for MySQL/MariaDB database server.
180+
- `mysql-zlib-compression`: Add zlib compression support for MySQL/MariaDB database server.
181+
182+
- `mysql-zstd-compression`: Add std compression support for MySQL database server.
181183

182184
- `mssql`: Add support for the MSSQL database server.
183185

sqlx-mysql/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ json = ["sqlx-core/json", "serde"]
1414
any = ["sqlx-core/any"]
1515
offline = ["sqlx-core/offline", "serde/derive"]
1616
migrate = ["sqlx-core/migrate"]
17-
compression = ["zstd", "flate2"]
17+
zstd-compression = ["zstd"]
18+
zlib-compression = ["flate2"]
1819

1920
# Type Integration features
2021
bigdecimal = ["dep:bigdecimal", "sqlx-core/bigdecimal"]

sqlx-mysql/src/connection/auth.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ impl AuthPlugin {
5353
0x04 => {
5454
let payload = encrypt_rsa(stream, 0x02, password, nonce).await?;
5555

56-
stream.write_packet(&*payload)?;
56+
stream.write_packet(&*payload).await?;
5757
stream.flush().await?;
5858

5959
Ok(false)
@@ -143,7 +143,7 @@ async fn encrypt_rsa<'s>(
143143
}
144144

145145
// client sends a public key request
146-
stream.write_packet(&[public_key_request_id][..])?;
146+
stream.write_packet(&[public_key_request_id][..]).await?;
147147
stream.flush().await?;
148148

149149
// server sends a public key response

0 commit comments

Comments
 (0)