36 Commits

Author SHA1 Message Date
Mirek Klimos
dd900e50b6
Optimize SASL auth in sqlx-postgres (#3050)
* Optimize SASL auth in sqlx-postgres

* fix formatting
2024-02-16 16:32:31 -08:00
Thomas de Zeeuw
31e541ac7a
Fix handling of deferred constraints for PostgreSQL (#2913) 2024-01-20 02:36:06 -08:00
Austin Bonander
487b89a4b6
fix: ignore extra fields in Postgres describe parsing (#2670)
* fix(postgres): sqlx prepare fails if shared_preload_libraries=pg_stat_statements

closes #2622

refs:
* https://serde.rs/enum-representations.html#untagged
* https://serde.rs/field-attrs.html#skip
* https://www.postgresql.org/docs/current/pgstatstatements.html
  * https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-COMPUTE-QUERY-ID

* fix(postgres): regression of #1449

```
error: error occurred while decoding column 0: data did not match any variant of untagged enum Explain at line 3 column 1
Error:    --> tests/postgres/macros.rs:103:15
    |
103 |     let row = sqlx::query!(r#"CALL forty_two(null)"#)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)

error: could not compile `sqlx` (test "postgres-macros") due to previous error
```

* refactor(postgres): don't define unused fields in QueryPlan

* refactor(postgres): simplify query plan handling, add unit test

* chore: document why we load `pg_stat_statements` in tests

---------

Co-authored-by: mrl5 <31549762+mrl5@users.noreply.github.com>
2023-07-31 14:52:55 -07:00
Yuri Astrakhan
a824e8468c
Cleanup format arguments (#2650)
Inlined format args make code more readable, and code more compact.

I ran this clippy command to fix most cases, and then cleaned up a few trailing commas and uncaught edge cases.

```
cargo clippy --bins --examples  --benches --tests --lib --workspace --fix -- -A clippy::all -W clippy::uninlined_format_args
```
2023-07-31 13:27:04 -07:00
Andrew Lilley Brinker
1bdbedabdc
Impl AsMut for advisory lock types (#2520) (#2554)
The documentation for `PgAdvisoryLockGuard` lists a set of types
that should be able to be passed to it, but when actually trying
to do so, compilation would fail due to missing `AsMut` trait
implementations for those types. This commit adds the missing
`AsMut` impls so that `Transaction` and `PgConnection` can be used
as type parameters to `PgAdvisoryLockGuard`, as expected.

For reference: https://github.com/launchbadge/sqlx/issues/2520
2023-06-30 16:53:14 -07:00
Austin Bonander
0f6c377c12 fix: replace use of deprecated base64 functions 2023-03-16 17:03:14 -07:00
Austin Bonander
d43257e18a chore: cleanup, fix all non-deprecation warnings 2023-03-16 17:03:14 -07:00
Bram Geron
1ff6a2ac94 feat: support calling PostgreSQL procedures with the macros
Fixes #1449 (I think). I verified that the code fixes the new test.

I used INOUT in setup.sql because older versions of Postgres don't
support OUT parameters.
2023-03-03 19:36:39 -08:00
Nikhil Benesch
bb2baf2183 Don't run EXPLAIN nullability analysis on Materialize
Materialize [0] is a PostgreSQL-like database that, similar to
CockroachDB, does not support PostgreSQL's `EXPLAIN` output. Extend the
fix from PR #1248 to Materialize, too, so that sqlx can still be used
with Materialize.

See #1248.

[0]: https://materialize.com
2023-03-03 19:36:12 -08:00
Austin Bonander
c4b835c23a feat: add Connection::shrink_buffers, PoolConnection::close
closes #2372
2023-03-03 16:50:27 -08:00
Thibs
c4130d45e3 Add client SSL authentication using key-file for Postgres, MySQL and MariaDB (#1850)
* use native-tls API

* Add client cert and key to MySQL connector

* Add client ssl tests for PostgreSQL

* Add client ssl tests for MariaDB and MySQL

* Adapt GA tests

* Fix RUSTFLAGS to run all tests

* Remove containers to free the DB port before running SSL auth tests

* Fix CI bad naming

* Use docker-compose down to remove also the network

* Fix main rebase

* Stop trying to stop service using docker-compose, simply use docker cmd

* Fix RUSTFLAGS for Postgres

* Name the Docker images for MariaDB and MySQL so we can stop them using their name

* Add the exception for mysql 5.7 not supporting compatible TLS version with RusTLS

* Rebase fixes

* Set correctly tls struct (fix merge)

* Handle Elliptic Curve variant for private key

* Fix tests suite

* Fix features in CI

* Add tests for Postgres 15 + rebase

* Python tests: fix exception for MySQL 5.7 + remove unneeded for loops

* CI: run SSL tests only when building with TLS support

---------

Co-authored-by: Barry Simons <linuxuser586@gmail.com>
2023-02-21 13:25:25 -08:00
Marco Cameriero
ab2ae26189 Postgres OID resolution query does not take into account current search_path (#2133)
* Fix oid resolution query

* Address review comments
2023-02-21 13:25:25 -08:00
CosmicHorror
acaee75a30 Initial work to switch to tracing (#2185)
* Add tracing dep

* Switch over basic events

* Switch over dynamically enabled events

* Fix missing SocketAddr formatting

* More format fixing

* refactor: Apply tracing changes to new crate structure
2023-02-21 13:25:25 -08:00
Austin Bonander
b5312c3b6f Break drivers out into separate crates, clean up some technical debt (#2039)
* WIP rt refactors

* refactor: break drivers out into separate crates

also cleans up significant technical debt
2023-02-21 13:25:25 -08:00
Ryan Leckey
04f56570a4 Collapse into 1 crate 2019-07-25 23:41:50 -07:00
Ryan Leckey
0703a1b91a Clean up connection methods a bit 2019-07-25 23:34:39 -07:00
Zachery Gyurkovitz
a49191fd46 Change get_results to produce a Stream 2019-07-25 11:54:36 -07:00
Zachery Gyurkovitz
2fb0c545b7 Implement get_results 2019-07-19 14:13:23 -07:00
Zachery Gyurkovitz
a4b5cfc408 Implement get_result 2019-07-19 14:12:07 -07:00
Zachery Gyurkovitz
6e7b18bc00 cargo fmt 2019-07-18 11:59:33 -07:00
Ryan Leckey
3599d50811 Use advance instead of set in read loop 2019-07-17 23:01:26 -07:00
Ryan Leckey
28168c414d Switched to a functional approach for front-end message construction 2019-07-17 23:01:05 -07:00
Ryan Leckey
8589f0b907 Move to explicit prepare vs. implicit in execute builder 2019-07-17 12:43:46 -07:00
Ryan Leckey
c040c97cb3 Initial experiment with the low-level API and PREPARE + EXECUTE queries 2019-07-16 01:15:12 -07:00
Ryan Leckey
f161fa3178 Optimize encode of StartupMessage 2019-07-11 10:08:57 -07:00
Ryan Leckey
da42be7d0a Implement DataRow and CommandComplete 2019-06-30 07:07:57 -07:00
Ryan Leckey
cfe522034e Implement RowDescription 2019-06-30 06:35:30 -07:00
Ryan Leckey
e8ecbeda36 WIP Query 2019-06-29 21:57:04 -07:00
Ryan Leckey
c895ef52fe Decorate send/receive with trace logs for development 2019-06-29 21:40:33 -07:00
Ryan Leckey
735c8c366a Fix some lint warnings 2019-06-29 21:34:06 -07:00
Ryan Leckey
4c90e026f7 Improve performance and minor tweaks 2019-06-29 21:32:39 -07:00
Ryan Leckey
aa0b27af35 Minor clean up 2019-06-28 21:36:46 -07:00
Ryan Leckey
c59e65d65b Add some additional decode benchmarks 2019-06-28 00:30:43 -07:00
Ryan Leckey
5c73e220b6 Set up a connection benchmark using a mocked pg server 2019-06-26 12:49:08 -07:00
Ryan Leckey
8a4c5ea2fe Integrate new protocol crate to connection 2019-06-22 21:44:13 -07:00
Ryan Leckey
22f71df7c7 mason -> sqlx 2019-06-22 20:54:43 -07:00