# PRQL test-databases
Test PRQL queries against various SQL RDBMS.
## Data
Database chinook.db was downloaded from <https://www.sqlitetutorial.net/sqlite-sample-database>
Columns are renamed to snake_case, so Postgres and DuckDb don't struggle with them.
For optimal accessibility, portability between databases and file size, all tables are stored
as CSV files. Their current size is 432kB, it could be gzip-ed to 112kB, but that would require a preprocessing step before running `cargo test`.
## SQLite
Can be run as part of `cargo test`. Uses bundled sqlite, compiled as part of cargo build.
## DuckDb
Can be run as part of `cargo test`. Uses bundled DuckDb, compiled as part of cargo build.
## Postgres
If passed environmental variable `POSTGRES_HOST` this crate will requests postgres server that
should already have data loaded in.
### Docker compose
There is also a proof on concept for testing done against Postgres, which can
be run by running `docker-compose up`. This will:
- build a docker image for Postgres (with data already loaded in)
- build a docker image for this crate (+data), compiled with --tests
- run the two images, executing the tests.
## Test organization
We follow the advice in
<https://matklad.github.io/2021/02/27/delete-cargo-integration-tests.html>.