diff --git a/CHANGELOG.md b/CHANGELOG.md index 256c3ed..4fc7e7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +## [0.26.0] - 2025-01-06 + +* paser: Add back `label` support, which was removed in 0.25.0. +* parser/runner: support `[statement|query] error retry` (Only support multi-line error message) + ## [0.25.0] - 2024-12-26 * runner: Add `retry` clause to `statement ok` and `query ok|error`. diff --git a/Cargo.lock b/Cargo.lock index e6a8eee..27d6b17 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -1884,7 +1884,7 @@ dependencies = [ [[package]] name = "sqllogictest" -version = "0.25.0" +version = "0.26.0" dependencies = [ "async-trait", "educe", @@ -1907,7 +1907,7 @@ dependencies = [ [[package]] name = "sqllogictest-bin" -version = "0.25.0" +version = "0.26.0" dependencies = [ "anyhow", "async-trait", @@ -1929,7 +1929,7 @@ dependencies = [ [[package]] name = "sqllogictest-engines" -version = "0.25.0" +version = "0.26.0" dependencies = [ "async-trait", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 5113a9a..eab0e01 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ resolver = "2" members = ["sqllogictest", "sqllogictest-bin", "sqllogictest-engines", "tests"] [workspace.package] -version = "0.25.0" +version = "0.26.0" edition = "2021" homepage = "https://github.com/risinglightdb/sqllogictest-rs" keywords = ["sql", "database", "parser", "cli"] diff --git a/sqllogictest-bin/Cargo.toml b/sqllogictest-bin/Cargo.toml index f188c3a..f8aa4b4 100644 --- a/sqllogictest-bin/Cargo.toml +++ b/sqllogictest-bin/Cargo.toml @@ -23,8 +23,8 @@ glob = "0.3" itertools = "0.13" quick-junit = { version = "0.5" } rand = "0.8" -sqllogictest = { path = "../sqllogictest", version = "0.25" } -sqllogictest-engines = { path = "../sqllogictest-engines", version = "0.25" } +sqllogictest = { path = "../sqllogictest", version = "0.26" } +sqllogictest-engines = { path = "../sqllogictest-engines", version = "0.26" } tokio = { version = "1", features = [ "rt", "rt-multi-thread", diff --git a/sqllogictest-engines/Cargo.toml b/sqllogictest-engines/Cargo.toml index e50446a..f6468c6 100644 --- a/sqllogictest-engines/Cargo.toml +++ b/sqllogictest-engines/Cargo.toml @@ -20,7 +20,7 @@ postgres-types = { version = "0.2.8", features = ["derive", "with-chrono-0_4"] } rust_decimal = { version = "1.36.0", features = ["tokio-pg"] } serde = { version = "1", features = ["derive"] } serde_json = "1" -sqllogictest = { path = "../sqllogictest", version = "0.25" } +sqllogictest = { path = "../sqllogictest", version = "0.26" } thiserror = "2" tokio = { version = "1", features = [ "rt", diff --git a/sqllogictest/src/parser.rs b/sqllogictest/src/parser.rs index b069469..2426a0a 100644 --- a/sqllogictest/src/parser.rs +++ b/sqllogictest/src/parser.rs @@ -95,6 +95,7 @@ pub enum QueryExpect { types: Vec, sort_mode: Option, result_mode: Option, + label: Option, results: Vec, }, /// Query should fail with the given error message. @@ -108,6 +109,7 @@ impl QueryExpect { types: Vec::new(), sort_mode: None, result_mode: None, + label: None, results: Vec::new(), } } @@ -255,12 +257,18 @@ impl std::fmt::Display for Record { write!(f, "query ")?; match expected { QueryExpect::Results { - types, sort_mode, .. + types, + sort_mode, + label, + .. } => { write!(f, "{}", types.iter().map(|c| c.to_char()).join(""))?; if let Some(sort_mode) = sort_mode { write!(f, " {}", sort_mode.as_str())?; } + if let Some(label) = label { + write!(f, " {label}")?; + } } QueryExpect::Error(err) => err.fmt_inline(f)?, } @@ -281,6 +289,8 @@ impl std::fmt::Display for Record { for result in results { write!(f, "\n{result}")?; } + + // query always ends with a blank line writeln!(f)? } QueryExpect::Error(err) => err.fmt_multiline(f)?, @@ -815,6 +825,7 @@ fn parse_inner(loc: &Location, script: &str) -> Result { + // query [] [