Commit graph

267 commits

Author SHA1 Message Date
Ryan Leckey
47f3d77e59 query_as: fully implement query_as, required a db-specific ext trait 2020-03-11 01:44:41 -07:00
Ryan Leckey
f18ab2fecb tweak type decoding in text mode for floats 2020-03-11 01:44:06 -07:00
Ryan Leckey
4c102f7b0e Database::Connection requires a Connection that can be connected 2020-03-11 01:44:06 -07:00
Ryan Leckey
8e8cf6db20 postgres: fix various issues and add more tests 2020-03-11 01:44:06 -07:00
Ryan Leckey
433aab1e5b postgres: use RawValue in Decode and implement row-returning simple queries 2020-03-11 01:44:06 -07:00
Ryan Leckey
9f1cf953c0 decode: use HasRawValue 2020-03-11 01:43:27 -07:00
Ryan Leckey
dd5f250e5e decode: add lifetime to Decode; impl Decode for &str and &[u8]; remove DecodeError 2020-03-11 01:43:27 -07:00
Ryan Leckey
d257c32946 postgres: handle NoticeResponse 2020-03-11 01:43:27 -07:00
Ryan Leckey
09f30067a0 Error::NotFound -> Error::RowNotFound and remove Error::FoundMoreThanOne 2020-03-11 01:43:27 -07:00
Ryan Leckey
e0fa55f241 Add additional docs to Query::bind 2020-03-11 01:43:27 -07:00
Ryan Leckey
817d07c081 Use non_exhaustive on sqlx::Error 2020-03-11 01:43:27 -07:00
Ryan Leckey
f462343787 Split Executor into Executor and RefExecutor
* Allow `conn.fetch(" ... ")` to be called where `conn` is an owned Connection
 * Executor::fetch -> RefExecutor::fetch_by_ref
 * Executor::fetch_by_ref -> Executor::fetch
 * Move `Connection::describe` to `Executor::describe`
 * `Transaction` is no longer a `Connection`
 * `Connection` has `Executor` as a super-trait again which greatly simplifies bounds
2020-03-11 01:43:27 -07:00
Ryan Leckey
0afcf33395 rename Executor::execute to Executor::fetch 2020-03-11 01:43:27 -07:00
Ryan Leckey
72b60e8a7d remove the DB type parameter from HasCursor and push to an associated type; remove Cursor::first 2020-03-11 01:43:27 -07:00
Ryan Leckey
d981262e7e row: RowIndex -> ColumnIndex and de-duplicate logic with macros 2020-03-11 01:43:27 -07:00
Austin Bonander
0cb7bd1185 make macros work again 2020-03-11 01:43:27 -07:00
Ryan Leckey
55ffd989e1 postgres: add support for simple queries (that do not return results) 2020-03-11 01:43:17 -07:00
Ryan Leckey
7404708bab adjust Cursor::map to work through black magic hacks and hope we get GATs soon 2020-03-11 01:43:17 -07:00
Ryan Leckey
a374c18a18 postgres: rewrite protocol in more iterative and lazy fashion 2020-03-11 01:43:17 -07:00
Ryan Leckey
3795d15e1c postgres: break out TLS and SASL into their own files 2020-03-11 01:43:04 -07:00
Ryan Leckey
ea1a4fb042 add Cursor and rewrite Executor/Query over it
* this breaks a lot internally as-is
 * mysql needs a restructure
2020-03-11 01:43:04 -07:00
Ryan Leckey
bb17ebfbbd make Connect extend Connection to simplify bounds 2020-03-11 01:42:34 -07:00
Ryan Leckey
d3d58ef0cf remove unused methods from Arguments: is_empty, len, size 2020-03-11 01:42:34 -07:00
Ryan Leckey
05bc3ba987 Prepare v0.2.6 2020-03-10 15:40:33 -07:00
Wesley Norris
737dd038c5 Fix null bitmap being cleared 2020-03-09 20:31:49 -04:00
Ryan Leckey
f8e112f4d9 Prepare v0.2.5 2020-02-01 00:49:27 -08:00
Ryan Leckey
7201f637bf Fix #104, need to advance buffer index to account for the null (one 32-bit length val of -1) 2020-02-01 00:33:59 -08:00
Austin Bonander
eff7c9e125
fix Pool to remove possibility of "leaking" connections (#84)
* fix `Pool` to reduce possibility of "leaking" connections

now uses RAII guards to control `SharedPool::size`

* add smoke test for `Pool` to both Postgres and MySQL tests

add `Pool::is_closed()`

* fix documentation re: pool

* refactor pool implementation to not use futures oneshot channels

https://github.com/launchbadge/sqlx/pull/84#issuecomment-580476223

* run cargo fmt

* Pool: remove superfluous guard struct, document some internal methods
2020-01-31 23:33:42 -08:00
Austin Bonander
2349978417 fix and test floats in MySQL 2020-01-30 12:17:32 -08:00
Jane Lusby
7d3772e23b Resolve PR comments 2020-01-22 20:49:22 -08:00
Jane Lusby
ea03fa47e7 Initial commit with doc_cfg changes 2020-01-22 13:10:10 -08:00
Ryan Leckey
24d6c696f8
Merge pull request #70 from launchbadge/ab/idents-fix
sqlx-macros: fix handling of invalid idents
2020-01-21 16:01:56 -08:00
Wesley Norris
1461891901 Fix passwords not being percent decoded
The password portion of the `Url` type is post-percent encoding
and needs to be manually decoded before processing and being
sent to the server.
2020-01-21 18:53:07 -05:00
Austin Bonander
d55e4568b8 fix build with tls and runtime-tokio features on 2020-01-21 12:24:54 -08:00
Austin Bonander
831ce2d615 fix build with TLS feature on 2020-01-21 11:57:01 -08:00
Austin Bonander
efed9b3d6d sqlx-macros: fix handling of invalid idents
add regression test with Trybuild

fix lint warnings as otherwise Trybuild wanted to include them
2020-01-21 01:52:57 -08:00
Jonas Platte
f93beb460a
Add PgTypeInfo::with_oid 2020-01-18 14:04:17 +01:00
Ryan Leckey
3e6efc57b6 Prepare v0.2.4 2020-01-18 01:22:14 -08:00
Ryan Leckey
60d45ac44b Fix (again) the handling of nulls in mysql and add an integration test for it 2020-01-18 01:20:26 -08:00
Ryan Leckey
ac9aeb2e26 Prepare v0.2.3 2020-01-18 00:47:26 -08:00
Ryan Leckey
d00c18ec75 Fix query! for the no results case in Postgres and MySQL 2020-01-18 00:43:59 -08:00
Ryan Leckey
3b91b06828 Prepare v0.2.2 2020-01-16 18:31:48 -08:00
Ryan Leckey
35c5556512 Update dependencies 2020-01-16 18:29:58 -08:00
Austin Bonander
beba141aec PgConnection: clear buffers after TLS upgrade 2020-01-16 13:30:48 -08:00
Ryan Leckey
d46acb0e0e default sqlx-core and sqlx-macros to runtime-async-std as well to make "cargo c" work during dev 2020-01-16 12:51:08 -08:00
Ryan Leckey
fe3225a8b8 Prepare v0.2.1 2020-01-16 01:52:47 -08:00
Daniel Akhterov
5ad09887e0 Fix mysql null bitmap not starting at bit 3 2020-01-16 01:44:20 -08:00
Ryan Leckey
62e1df5ad9 Prepare v0.2.0 2020-01-15 02:20:19 -08:00
Ryan Leckey
809bc3964c Run rustfmt 2020-01-15 01:34:20 -08:00
Ryan Leckey
ae4fcd1406 Work around bug with format! and await on stable 2020-01-15 01:32:16 -08:00
Ryan Leckey
daf7f6c556 Be explicit with features for docs.rs 2020-01-15 01:27:07 -08:00
Ryan Leckey
92f12e11aa Add support for Tokio 2020-01-15 01:17:33 -08:00
Ryan Leckey
96f14c0700 Merge remote-tracking branch 'origin/ab/proc-macro-unhack-sort-of' into rl-transaction-1 2020-01-15 00:29:43 -08:00
Ryan Leckey
6ddf3184de Run rustfmt 2020-01-15 00:27:19 -08:00
Ryan Leckey
2e5e273565 Fix Pool alias with Pool changes 2020-01-15 00:26:22 -08:00
Ryan Leckey
b1a27ddac2 Add a Transaction type to simplify dealing with Transactions 2020-01-15 00:22:01 -08:00
Austin Bonander
0fdb875c20 support arbitrary numbers of bind parameters in query!() et al 2020-01-15 00:05:34 -08:00
Ryan Leckey
28ed854b03 Extract Connection::open into a new trait Connect::connect 2020-01-14 23:58:17 -08:00
Ryan Leckey
3183413e9e
Merge pull request #50 from launchbadge/rl-refactor-types
Refactor HasSqlType to provide an array of compatible types
2020-01-14 23:32:45 -08:00
Ryan Leckey
6b22fb7489 Refactor HasSqlType to provide an array of compatible types.
* Intending to use in a new Row type to check types at runtime for
   dynamic queries and to guard against schema changes

 * Hoping the query! macro can utilize this to allow accepting N
   rust types for 1 sql type and returning N rust types for 1 sql
   type.
2020-01-14 23:27:42 -08:00
Austin Bonander
114aaa5dfc MySqlConnection: warn if server does not support SSL 2020-01-14 12:14:01 -08:00
Austin Bonander
fc66c8fa3f give examples of connection strings enabling SSL 2020-01-14 12:07:43 -08:00
Ryan Leckey
330b1e2b4e Fix serialization test for postgres 2020-01-14 10:43:54 -08:00
Ryan Leckey
0a5b527d79 fix import errors and run rustfmt 2020-01-14 10:35:50 -08:00
Ryan Leckey
cb1dbff544 mysql: if in a TLS stream, sha2 auth is just "send a clear text password" 2020-01-14 10:32:59 -08:00
Austin Bonander
6682d4dce7 Pool::new(): forward to connection types for string syntax 2020-01-13 20:43:32 -08:00
Austin Bonander
c92ee619c3 fix some behaviors with TLS in MySQL 2020-01-13 20:42:49 -08:00
Austin Bonander
a014accf08 document TLS options for MySQL 2020-01-13 14:58:37 -08:00
Austin Bonander
f04e4bdbeb document TLS options for Postgres 2020-01-13 14:54:29 -08:00
Austin Bonander
ff219061b2 implement TLS for MySQL 2020-01-13 12:34:05 -08:00
Austin Bonander
638852a2dd implement TLS support for Postgres 2020-01-13 11:52:09 -08:00
Ryan Leckey
fe98b0b612 Turn on neccessary feature flags of futures-channel and async-std 2020-01-11 04:06:33 -08:00
Ryan Leckey
1d20926189 Use '+00:00' over UTC for MySQL timezone 2020-01-11 03:54:04 -08:00
Ryan Leckey
9b50dccfce Run rustfmt 2020-01-11 03:52:17 -08:00
Ryan Leckey
c4a0ac50df Indicate that we support both forms of SCRAM (just always reject channel binding for now) 2020-01-11 03:52:12 -08:00
Ryan Leckey
4f28590def Downgrade generic-array to match digest 2020-01-11 03:35:38 -08:00
Daniel Akhterov
db230e2ce0 Resolve Comments
- Remove `hex` from root `Cargo.toml`
    - Make `hmac` crate optional
    - Clean up checking mechanisms for "SCRAM-SHA-256"
    - Use `str::from_utf8` instead of `String::from_utf8_lossyf
    - Update `Sasl*Response` structs be tuple structs
    - Factor out `len` in `SaslInitialResponse.encode()`
    - Use `protocol_err` instead of `expect` when constructing `Hmacf
      instances
    - Remove `it_connects_to_database_user` test as it was too fragile
    - Move `sasl_auth` function into `postgres/connection` as it more
      related to `Connection` rather than `protocl`
    - Return an error when decoding base64 salt rather than panicing
      in `Authentication::SaslContinue`
2020-01-11 03:33:38 -08:00
Daniel Akhterov
507d988fc4 Implememnt SASL Authentication 2020-01-11 03:33:21 -08:00
Ryan Leckey
fec6101e1a Use timeout over .timeout to stay off unstable 2020-01-11 03:31:55 -08:00
Ryan Leckey
619de5aac2 Update dependencies 2020-01-11 03:30:03 -08:00
Ryan Leckey
95fac72abf Use crossbeam queues to achieve fairness in the pool 2020-01-11 03:26:48 -08:00
Ryan Leckey
03251b719b Refactor pool to fix liveness and consistently check 2020-01-11 01:02:03 -08:00
Ryan Leckey
132f7b2944 Add test_on_acquire option to the Pool 2020-01-11 01:01:21 -08:00
Ryan Leckey
42d0a9bc3d has_columns is only used for postgres 2020-01-11 01:00:24 -08:00
Andrey Kuznetsov
e7026ce92d derive Debug for Pool 2020-01-10 23:36:50 +00:00
Kris
7464d35803 Check if enough bytes was received 2020-01-07 11:44:15 +01:00
Kris
bad21b1567 Build docs for all features (#32) 2020-01-06 23:57:55 -08:00
Ryan Leckey
6d525b23ed (cargo-release) sqlx-core: v0.1.3 2020-01-06 11:10:24 -08:00
Ryan Leckey
280f12ea71 Configure release.toml so we can easily release sub crates 2020-01-06 11:10:20 -08:00
Ryan Leckey
92f3f8cf6f Finish reallocation strategy for BufStream
Fixes #30
2020-01-06 10:53:56 -08:00
Ryan Leckey
5c532a8ecc [sqlx-core] prepare v0.1.2 2020-01-05 22:00:56 -08:00
Austin Bonander
589d06ec66 change UnexpectedEof to ConnectionAborted 2020-01-03 19:06:00 -08:00
Ryan Leckey
054d3ed838 Run rustfmt on auth_plugin 2020-01-03 17:55:34 -08:00
Ryan Leckey
d8df21e280 Tweak mysql connection to work with MariaDb
SECURE_CONNECTION has the wrong value in the mariadb docs and that had me stumped for too long
2020-01-03 17:53:24 -08:00
Ryan Leckey
8d8fea874a Use forbid(unsafe_code) over deny(unsafe_code) 2020-01-03 11:45:18 -08:00
Ryan Leckey
ed8cb40245 Remove more unused imports 2020-01-02 23:49:42 -08:00
Ryan Leckey
4ced4058ac Remove unused imports and a couple unused muts 2020-01-02 23:47:49 -08:00
Ryan Leckey
ce343dee9c [MySQL] Add initial support for authenticationSupports caching_sha2_password and sha256_password 2020-01-02 23:22:46 -08:00
Ryan Leckey
e591f0f021 Run rustfmt 2019-12-30 02:11:14 -08:00
Ryan Leckey
19e38ab8d3 [MySQL] [Postgres] Add support for BLOB and BYTEA types 2019-12-30 02:10:09 -08:00
Ryan Leckey
27759a12c7 [MySQL] Allow not specifying database on initial connect 2019-12-30 02:10:09 -08:00
Ryan Leckey
c325feaf9a [MySQL] Configure connection on open 2019-12-30 02:10:09 -08:00
Ryan Leckey
2a42ff9f0d [MySQL] Add an integration tests for chrono + MySQL and fix issues 2019-12-30 02:10:09 -08:00
Ryan Leckey
e161787952 [MySQL] Rename ty.flag to ty.is_unsigned 2019-12-30 02:10:09 -08:00
Ryan Leckey
3a645a1824 [MySQL] Don't adjust the raw bytes coming to the Decode trait
This is a minor adjustment that keeps parity between Encode and Decode
2019-12-30 02:10:09 -08:00
Ryan Leckey
2068f05482 Update dependencies 2019-12-28 04:02:52 -08:00
Ryan Leckey
5e719917c0 Run rustfmt 2019-12-28 03:45:47 -08:00
Ryan Leckey
f67872cbcf Add some ground work for #1 2019-12-28 03:45:37 -08:00
Ryan Leckey
86ac601872 Prepare v0.1.1 2019-12-28 02:42:51 -08:00
Austin Bonander
c98c49ad47 fix docs and guarantees for pool 2019-12-28 02:02:29 -08:00
Ryan Leckey
dc43d3ee2f Merge branch 'master' of ssh://github.com/mehcode/sqlx 2019-12-28 01:01:50 -08:00
Ryan Leckey
e16c043bf9 Add basic docs to MySql and Postgres Connection 2019-12-28 01:01:45 -08:00
Austin Bonander
af4b5b753d fixup docs for Query/QueryAs/Executor 2019-12-28 00:56:55 -08:00
Ryan Leckey
7b8ef0f46b Add more authors 2019-12-28 00:36:37 -08:00
Ryan Leckey
ef98ff2828 Add repo/desc to sub crates 2019-12-28 00:25:04 -08:00
Ryan Leckey
98269ddd20 Fix several nits from Clippy and add back chrono support for MySql 2019-12-27 23:16:13 -08:00
Ryan Leckey
9b0f34b0ce Fix a couple minor nits with Pool and run rustfmt 2019-12-27 22:47:25 -08:00
Ryan Leckey
a23bfb60eb Clean up the example a touch 2019-12-27 21:50:13 -08:00
Ryan Leckey
017ee38725 De-duplicate error impls and forward MySqlConnection/PgConnection to crate root 2019-12-27 21:50:13 -08:00
Austin Bonander
7d745f98ea implement query_as!() et al, document query macros 2019-12-27 21:45:31 -08:00
Ryan Leckey
56a82346f2 Run cargo fmt 2019-12-27 20:44:03 -08:00
Ryan Leckey
d76b1357da Audit MySql and Postgres protocols 2019-12-27 17:31:01 -08:00
Austin Bonander
b85618e5f8 fix errors from .send_raw() additions that I didn't catch 2019-12-19 23:26:59 -08:00
Austin Bonander
892a179787 set default max_lifetime in pool::Options to 30 minutes and explain why 2019-12-19 23:26:59 -08:00
Austin Bonander
786deecc36 replace bitflags::_core with std
for some reason IntelliJ-Rust reaches for this first
2019-12-19 18:46:37 -08:00
Austin Bonander
5192983093 implement Executor::send() 2019-12-19 18:46:37 -08:00
Austin Bonander
56875a8931 finish discussed refactors 2019-12-18 23:02:01 -08:00
Austin Bonander
8aa931356f WIP implement statement caching for MySQL, perform discussed refactors 2019-12-18 23:02:01 -08:00
Austin Bonander
e11f5bcaa7 allow chrono to be used with query!() 2019-12-18 23:02:01 -08:00
Austin Bonander
d8d93867b7 implement prepared statement caching for postgres 2019-12-18 23:02:01 -08:00
Austin Bonander
ca3fbd740a implement support for chrono
fix tests
2019-12-11 19:59:41 -08:00
Daniel Akhterov
918657638b Test all number types and String type 2019-12-05 21:36:09 -08:00
Daniel Akhterov
fdd60eb9b1 Fix null_bitmap size in MariaDb 2019-12-05 19:39:28 -08:00
Daniel Akhterov
6cac5383e3 Fix renamed functions/ response types 2019-12-05 18:29:35 -08:00
Austin Bonander
b0a36ddd5c fix Executor::describe() for MariaDB
prevent exhaustive match of `describe` structs
2019-12-04 18:13:10 -08:00
Daniel Akhterov
4d28424af5 Fix maraidb build errors 2019-12-04 14:18:43 -08:00
Austin Bonander
193e79569a query refactors 2019-12-04 13:30:19 -08:00
Austin Bonander
acca40c88e make query!() output anonymous records 2019-12-03 21:30:53 -08:00
Ryan Leckey
871183d23b Minor fixes and run rustfmt 2019-12-03 00:22:02 -08:00
Ryan Leckey
f16c805f4c Try and trim down the features a bit 2019-12-03 00:14:59 -08:00
Ryan Leckey
9558ab1c50 Remove bytes usage and update dependencies 2019-12-02 23:26:44 -08:00
Ryan Leckey
bf4f65ea2f [MySQL] Add fetch_optional, fix encode/decode for integers 2019-12-02 22:14:41 -08:00
Ryan Leckey
6925d5999c Fix mariadb compile errors and remove useless Row wrapper 2019-12-02 21:11:49 -08:00
Daniel Akhterov
55da9daaf1 WIP: MariaDb fetch 2019-12-02 20:47:38 -08:00
Ryan Leckey
f8f71b1b70 Merge remote-tracking branch 'origin/ab/conn-timeout' 2019-11-27 23:31:24 -08:00
Ryan Leckey
2227303f20 Have Backend require Executor and de-duplicate some logic 2019-11-27 23:26:20 -08:00
Daniel Akhterov
56ca61a22e WIP: MariaDb fetch 2019-11-27 20:19:53 -08:00
Ryan Leckey
f1fa802837 Allow Query::bind to forward the type inference used for FromRow 2019-11-27 15:21:29 -08:00
Austin Bonander
279e329f27 break up pool.rs into multiple files 2019-11-26 10:12:47 -08:00
Austin Bonander
8d9e949cc2 implement pool idle reaper, format relevant files 2019-11-26 10:09:59 -08:00