PackageTrack
Sign in Get early access

sqllogictest

Sqllogictest parser and runner.

0.29.1 14M downloads/mo #2583 most downloaded on crates.io risinglightdb/sqllogictest-rs

What this package is like to depend on

Last release 6 months ago

14 Feb 2026

Release timing varies

gaps range from 8 days to 3 months

Nearly every release is documented

notes for 68 of 70 stable releases

1 version withdrawn

withdrawn after publishing

5 years old

71 releases · first in 2021

3 releases in the last 12 months

see the full history below

Release timeline

71 releases · Dec 2021 to Feb 2026
2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 71
  1. 0.29.1 14 Feb 2026
    Release notes

    [0.29.1] - 2026-02-13

    • parser/runner: Add let record for binding query results to variables.
    Open source →
    Release notes
    • parser/runner: Add let record for binding query results to variables.
    Open source →
  2. 0.29.0 19 Dec 2025
    Release notes

    [0.29.0] - 2025-12-19

    • parser/runner: Support matching expected failures by SQLSTATE via statement|query error (<SQLSTATE>).
    Open source →
    Release notes
    • parser/runner: Support matching expected failures by SQLSTATE via statement|query error (<SQLSTATE>).
    Open source →
  3. 0.28.4 07 Sep 2025
    Release notes

    [0.28.4] - 2025-09-04

    • bin: support skip files with regex
    • runner: Add <slt:ignore> to skip the volatile parts of the output.
    Open source →
    Release notes
    • bin: support skip files with regex
    • runner: Add <slt:ignore> to skip the volatile parts of the output.
    Open source →
  4. 0.28.3 06 Jun 2025
    Release notes

    [0.28.3] - 2025-05-16

    • bin: Add --shutdown-timeout to set a timeout for shutting down the database connections after a test file is finished. By default, this is unspecified, meaning to wait forever.
    Open source →
    Release notes
    • bin: Add --shutdown-timeout to set a timeout for shutting down the database connections after a test file is finished. By default, this is unspecified, meaning to wait forever.
    Open source →
  5. 0.28.2 07 May 2025
    Release notes

    [0.28.2] - 2025-05-07

    • engines: Enhance graceful shutdown by canceling ongoing queries when shutting down postgres connections. This improves the behavior when receiving a Ctrl-C signal by ensuring that any long-running queries are properly canceled before the connection is closed.
    • bin: In parallel mode, the output of a test case will be printed promptly before shutting down the database connection.
    Open source →
    Release notes
    • engines: Enhance graceful shutdown by canceling ongoing queries when shutting down postgres connections. This improves the behavior when receiving a Ctrl-C signal by ensuring that any long-running queries are properly canceled before the connection is closed.
    • bin: In parallel mode, the output of a test case will be printed promptly before shutting down the database connection.
    Open source →
  6. 0.28.1 18 Apr 2025
    Release notes

    [0.28.1] - 2025-04-18

    • bin: Support graceful shutdown. When receiving a Ctrl-C, the program will cancel all running test cases, log cancelled and skipped test cases, drop temporary databases (if in parallel mode), close database connections, and finally exit with a non-zero code.
    Open source →
    Release notes
    • bin: Support graceful shutdown. When receiving a Ctrl-C, the program will cancel all running test cases, log cancelled and skipped test cases, drop temporary databases (if in parallel mode), close database connections, and finally exit with a non-zero code.
    Open source →
  7. 0.28.0 07 Mar 2025
    Release notes

    [0.28.0] - 2025-03-06

    • runner: Add Partitioner and Runner::with_partitioner to enable partitioning of test cases, allowing only a subset of the glob result to be executed. This can be helpful for running tests in parallel in CI.
    • bin: Add --partition-id and --partition-count to set a hash partitioning for the test cases. If users are running in Buildkite CI with parallelism: .. specified in the workflow file, this will be automatically configured.
    Open source →
    Release notes
    • runner: Add Partitioner and Runner::with_partitioner to enable partitioning of test cases, allowing only a subset of the glob result to be executed. This can be helpful for running tests in parallel in CI.
    • bin: Add --partition-id and --partition-count to set a hash partitioning for the test cases. If users are running in Buildkite CI with parallelism: .. specified in the workflow file, this will be automatically configured.
    Open source →
  8. 0.27.2 18 Feb 2025
    Release notes

    [0.27.2] - 2025-02-18

    • engines/bin: fix stdin to be closed properly to avoid hangs in the external engine.
    Open source →
    Release notes
    • engines/bin: fix stdin to be closed properly to avoid hangs in the external engine.
    Open source →
  9. 0.27.1 17 Feb 2025
    Release notes

    [0.27.1] - 2025-02-17

    • runner: Add Runner::set_var method to allow adding runner-local variables for substitution.
    • bin: Add __DATABASE__ variable for accessing current database name from SLT files.
    Open source →
    Release notes
    • runner: Add Runner::set_var method to allow adding runner-local variables for substitution.
    • bin: Add __DATABASE__ variable for accessing current database name from SLT files.
    Open source →
  10. 0.27.0 11 Feb 2025
    Release notes

    [0.27.0] - 2025-02-11

    • runner: add shutdown method to DB and AsyncDB trait to allow for graceful shutdown of the database connection. Users are encouraged to call Runner::shutdown or Runner::shutdown_async after running tests to ensure that the database connections are properly closed.
    Open source →
    Release notes
    • runner: add shutdown method to DB and AsyncDB trait to allow for graceful shutdown of the database connection. Users are encouraged to call Runner::shutdown or Runner::shutdown_async after running tests to ensure that the database connections are properly closed.
    Open source →
  11. 0.26.4 27 Jan 2025
    Release notes
    • runner: add random string in path generation to avoid conflict when using include.
    • bin: detect connection refused error and exit early to make error message clearer.
    Open source →
  12. 0.26.3 14 Jan 2025
    Release notes
    • bin: when --fail-fast is enabled, abort all remaining connections before dropping temporary databases.
    Open source →
  13. 0.26.2 10 Jan 2025
    Release notes
    • bin: support --fail-fast, and add env vars SLT_FAIL_FAST and SLT_KEEP_DB_ON_FAILURE
    Open source →
  14. 0.26.1 09 Jan 2025
    Release notes
    • parser/runner: support system ok retry
    Open source →
  15. 0.26.0 06 Jan 2025
    Release notes
    • parser: Add back label support, which was removed in 0.25.0.
    • parser/runner: support [statement|query] error retry (Only support multi-line error message)
    Open source →
  16. 0.25.0 26 Dec 2024
    Release notes
    • runner: Add retry clause to statement ok and query ok|error.
    Open source →
  17. 0.24.0 20 Dec 2024
    Release notes
    • runner: Added a Normalizer type for normalizing result values. A new function with_normalizer(normalizer: Normalizer) has been added to the Runner to allow for specifying a custom Normalizer. The existing default normalizer is available via the runner::default_normalizer(..) function.
    • parser: Added a new control mode resultmode that controls whether the results are in valuewise or columnwise mode. The default is columnwise which means results are in columns. valuewise means the results are in a single column (sqlite test style).
    • parser: Added valuesortsort mode. The valuesort mode works like rowsort except that it does not honor row groupings. Each individual result value is sorted on its own.

    Breaking change:

    • The Validator type used in various function in Runner implementation has a new required field Normalizer that is used to normalize result values.
    Open source →
  18. 0.23.1 13 Dec 2024
    Release notes
    • feat(bin): add opt --keep-db-on-failure
    Open source →
  19. 0.23.0 17 Nov 2024
    Release notes
    • Refine the behavior of update_record_with_output / --override
      • runner: Previously, query returning 0 rows will become statement ok. Now it returns statement count 0.
      • bin: Now --override will not change the type chars of query <types>, since in practice it becomes ?s which might cause confusion.
    • runner: statement count <n> is incorrectly handled when the result is a query.
    Open source →
  20. 0.22.0 09 Sep 2024
    Release notes
    • engines/bin: support MySQL engine
    Open source →
  21. 0.21.0 01 Jul 2024
    Release notes

    Breaking changes:

    • runner: RecordOutput is now returned by Runner::run (or Runner::run_async). This allows users to access the output of each record, or check whether the record is skipped.
    • runner(substitution): add a special variable __NOW__ which will be replaced with the current Unix timestamp in nanoseconds.
    • runner(substitution): for system commands, we do not substitute environment variables any more, because the shell can do that. It's necessary to escape like \\ any more. $__TEST_DIR__, and are still supported.
    • runner(system): change sh to bash.
    Open source →
  22. 0.20.6 24 Jun 2024
    Release notes
    • runner: add logs for system command (with target sqllogictest::system_command) for ease of debugging.
    Open source →
  23. 0.20.5 20 Jun 2024
    Release notes
    • fix(runner): when running in parallel, the runner will correctly inherit configuration like sort_mode and labels from the main runner.
    Open source →
  24. 0.20.4 06 Jun 2024
    Release notes
    • bump dependencies
    Open source →
  25. 0.20.3 06 Jun 2024
    Release notes
    • feat(bin): hide INFO level log by default
    Open source →
  26. 0.20.2 22 Apr 2024
    Release notes
    • fix(bin): halt is not handled.
    Open source →
  27. 0.20.1 17 Apr 2024
    Release notes
    • bin: When using -j <jobs> to run tests in parallel, add a random suffix to the temporary databases. This is useful if the test is manually canceled, but you want to rerun it freshly. Note that if the test failed, the database will be dropped. This is existing behavior and unchanged.
    • bin: replace env_logger with tracing-subscriber. You will be able to see the record being executed with RUST_LOG=debug sqllogictest ....
    • runner: fix the behavior of background system commands (end with &). In 0.20.0, it will block until the process exits. Now we return immediately.
      system ok
      sleep 5 &
      
    Open source →
  28. 0.20.0 11 Apr 2024
    Release notes
    • Show stdout, stderr when system command fails.

    • Support matching stdout for system

      system ok
      echo "Hello, world!"
      ----
      Hello, world!
      

      Currently, only exact match is supported. Besides, the output cannot contain more than one blank lines in between. The record ends with two consecutive blank lines.

      Some minor Breaking changes:

      • Add field stdout to parser::Record::System and runner::RecordOutput::System, and mark them as #[non_exhaustive].
      • Change trait method AsyncDB::run_command's return type from std::process::ExitStatus to std::process::Output.
    Open source →
  29. 0.19.1 04 Jan 2024
    Release notes
    • parser: include now returns error if no file is matched.
    Open source →
  30. 0.19.0 14 Nov 2023
    Release notes
    • parser: refactor expect field in sqllogictest parser to make it easier to work with.
    Open source →
  31. 0.18.0 09 Nov 2023
    Release notes
    • Support matching multiline error message under ---- for both statement error and query error.

      query error
      SELECT 1/0;
      ----
      db error: ERROR: Failed to execute query
      
      Caused by these errors:
        1: Failed to evaluate expression: 1/0
        2: Division by zero
      

      The output error message must be the exact match of the expected one to pass the test, except for the leading and trailing whitespaces. Users may use --override to let the runner update the test files with the actual output.

      Empty lines are allowed in the expected error message. As a result, the message must end with two consecutive empty lines.

      Breaking changes in the parser:

      • Add new variants to ParseErrorKind. Mark it as #[non_exhaustive].
      • Change the type of expected_error from Regex to ExpectedError, which is either a inline Regex or multiline String.
    Open source →
  32. 0.17.2 01 Nov 2023
    Release notes
    • fix(runner): fix parallel testing db name duplication. Now we use full file path instead of filename as the temporary db name in run_parallel_async.
    Open source →
  33. 0.17.1 20 Sep 2023
    Release notes
    • bin: support envvars SLT_HOST/PORT/DB/USER/PASSWORD
    Open source →
  34. 0.17.0 19 Sep 2023
    Release notes
    • Support environment variables substitution for SQL and system commands. For compatibility, this feature is by default disabled, and can be enabled by adding control substitution on to the test file.

      control substitution on
      
      query TTTT
      SELECT
          '$foo'                -- short
        , '${foo}'              -- long
        , '${bar:default}'      -- default value
        , '${bar:$foo-default}' -- recursive default value
      FROM baz;
      ----
      ...
      

      Besides, there's a special variable $__TEST_DIR__ which is the path to a temporary directory specific to the current test case. This can be helpful if you need to manipulate some external resources during the test.

      control substitution on
      
      statement ok
      COPY (SELECT * FROM foo) TO '$__TEST_DIR__/foo.txt';
      
      system ok
      echo "foo" > "$__TEST_DIR__/foo.txt"
      

      Changes:

      • (parser) Breaking change: Add Control::Substitution. Mark Control as #[non_exhaustive].
      • (runner) Breaking change: Remove enable_testdir. For migration, one should now enable general substitution by the control statement and use a dollar-prefixed $__TEST_DIR__.
    Open source →
  35. 0.16.0 15 Sep 2023
    Release notes
    • Support running external system commands with the syntax below. This is useful for manipulating some external resources during the test.

      system ok
      echo "Hello, world!"
      

      The runner will check the exit code of the command, and the output will be ignored. Currently, only ok is supported.

      Changes:

      • (parser) Breaking change: Add Record::System, and corresponding TestErrorKind and RecordOutput. Mark TestErrorKind and RecordOutput as #[non_exhaustive].
      • (runner) Add run_command to AsyncDB trait. The default implementation will run the command with std::process::Command::status. Implementors can override this method to utilize an asynchronous runtime such as tokio.
    • fix(runner): fix database name duplication for parallel tests by using the full path of the test file (instead of the file name) as the database name.

    Open source →
  36. 0.15.3 21 Aug 2023
    Release notes
    • fix(bin): fix error context display. To avoid stack backtrace being printed, unset RUST_BACKTRACE environment variable, or use pre-built binaries built with stable toolchain instead.
    Open source →
  37. 0.15.2 31 Jul 2023
    Release notes
    • fix(bin): do not print stack backtrace on error
    Open source →
  38. 0.15.1 24 Jul 2023
    Release notes
    • fix statement error unexpectedly passed when result is a successful query. Similarly for expected query error but successful statement ok.
    Open source →
  39. 0.15.0 11 Jul 2023
    Release notes
    • Allow multiple connections to the database in a single test case, which is useful for testing the transaction behavior. This can be achieved by attaching a connection foo record before the query or statement.
      • (parser) Add Record::Connection.
      • (runner) Breaking change: Since the runner may establish multiple connections at runtime, Runner::new now takes a impl MakeConnection, which is usually a closure that returns a try-future of the AsyncDB instance.
      • (bin) The connection to the database is now established lazily on the first query or statement.
    Open source →
  40. 0.14.0 09 Jun 2023
    Release notes
    • We enhanced how skipif and onlyif works. Previously it checks against DB::engine_name(), and sqllogictest-bin didn't implement it.
      • (parser) A minor breaking change: Change the field names of Condition:: OnlyIf/SkipIf.
      • (runner) Add Runner::add_label. Now multiple labels are supported ( DB::engine_name() is still included). The condition evaluates to true if any of the provided labels match the skipif/onlyif <label>.
      • (bin) Add --label option to specify custom labels.
    Open source →
  41. 0.13.2 25 Mar 2023
    Release notes
    • Runner::update_test_file properly escapes regex special characters.
    Open source →
  42. 0.13.0 16 Feb 2023
    Release notes
    • sqllogictest-bin now uses the strict validator to update records (the runner still doesn't check schema).
    • The query syntax now allows optional columns (query\n without any column arguments).
    Open source →
  43. 0.12.1 16 Feb 2023 withdrawn

    Nothing published for this version

  44. 0.12.0 09 Feb 2023
    Release notes
    • customizable column types and validators
    Open source →
  45. 0.11.2 09 Feb 2023
    Release notes
    • support multiple files as input in cli
    • remove unnecessary debug
    Open source →
  46. 0.11.1 15 Jan 2023
    Release notes
    • fix parsing for trailing comments
    Open source →
  47. 0.11.0 14 Jan 2023
    Release notes

    This release contains some minor fixes.

    • fix: use Vec<Vec<String>> for external engine (JDBC)
    • fix: Use lines() instead of split('\n') in parse_inner. So the behavior can be correct on Windows.
    • fix: parse DML with returning as a query
    • A minor breaking change: update_test_file takes &mut Runner instead of its ownnership.
    Open source →
  48. 0.10.0 16 Dec 2022
    Release notes
    • Improve the ability to unparse and update the test files. Mainly add update_record_with_output and update_test_file to the library.

      More details:

      • Add impl Display for Record (refactor unparse).
      • Add Record::Whitespace so the whitespace in the original files can be reconstructed during unparse.
      • Add tests for unparsing and updating records.
      • Refactor and fix the behavior about newlines and halt for CLI options --override and --format.
    • Fix: hash-threshold should be compared with the number of values instead of the number of rows.

    • Breaking change: The type of Validator is changed from fn(&Vec<String>, &Vec<String>) -> bool to fn(&[Vec<String>], &[String]) -> bool. Also added a default_validator.

    Thanks to the contributions of @alamb and @xudong963 .

    Open source →
  49. 0.9.0 07 Dec 2022
    Release notes
    • Improve the format and color handling for errors.
    • Support hash-threshold.
    • Fix statement count <n> for postgres engines.
    • Breaking change: use Vec<Vec<String>> instead of String as the query results by DB. This allows the runner to verify the results more precisely.
      • For rowsort, runner will only sort actual results now, which means the result in the test cases should be sorted.
    • Breaking change: Hook is removed.
    • Breaking change: Record and parser's behavior are tweaked:
      • retain Include record when linking its content
      • keep parsing after Halt
      • move Begin/EndInclude to Injected
    • Added CLI options --override and --format, which can override the test files with the actual output of the database, or reformat the test files.
    Open source →
  50. 0.8.0 23 Nov 2022
    Release notes
    • Support checking error message using statement error <regex> and query error <regex> syntax.
      • Breaking change: Record::Statement, Record::Query and TestErrorKind are changed accordingly.
    Open source →
  51. 0.7.1 15 Nov 2022
    Release notes
    • Fix: --external-engine-command-template should not be required
    Open source →
  52. 0.7.0 15 Nov 2022
    Release notes
    • Add support for external driver.
    • Support more type in postgres-extended.
    • Record file stack in location.
    Open source →
  53. 0.6.4 25 Aug 2022
    Release notes
    • Use one session for each file in serial mode.
    Open source →
  54. 0.6.3 24 Aug 2022
    Release notes
    • Support registering hook function after each query.
    Open source →
  55. 0.6.2 22 Aug 2022
    Release notes
    • Support load balancing of multiple addr.
    • Integrate with libtest-mimic. Add the macro sqllogictest::harness!.
    • Improve error handling for parser.
    Open source →
  56. 0.6.1 16 Aug 2022
    Release notes
    • Add parallel running to Runner.
    • Drop database after parallel run.
    Open source →
  57. 0.6.0 06 Aug 2022
    Release notes
    • Support postgres extended mode
    • Separate sqllogictest runner to sqllogictest-bin
    Open source →
  58. 0.5.5 26 Jul 2022
    Release notes
    • Add timestamp to junit. (#57)
    • Add sleep function to AsyncDB. (#61)
    • Fix panic without junit. (#58)
    Open source →
  59. 0.5.4 03 Jul 2022
    Release notes
    • Remove unsupported characters from junit test name.
    Open source →
  60. 0.5.3 26 Jun 2022
    Release notes

    Added

    • Add junit support. Use --junit <filename> to generate junit xml.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive