gabotechs commented on issue #16028:
URL: https://github.com/apache/datafusion/issues/16028#issuecomment-2875255482
That's an interesting suggestion! although I imagine that identifying where
is the actual setup code can be a non trivial task. My idea was to always run
any statement that is considered "setup code" (pretty much anything other than
`SELECT` and `EXPLAIN` statements) so that the workflow looks like this:
1. Run a sqllogictest file
```shell
cargo test --test sqllogictests -- aggregate
```
2. get a bunch of errors:
<details><summary>command output</summary>
```
Completed 3 test files in 2 seconds
External error: 5 errors in file
/Users/foo/github/datafusion/datafusion/sqllogictest/test_files/aggregate.slt
1. query result mismatch:
[SQL] WITH t AS (SELECT i as c1, i + 1 as c2 FROM generate_series(1, 10)
t(i))
SELECT key, MIN(c), MAX(c) FROM (SELECT STRUCT(c1 AS 'a', c2 AS 'b') AS c,
(c1 % 2) AS key FROM t) GROUP BY key
[Diff] (-expected|+actual)
- 0 {a: 1, b: 3} {a: 10, b: 11}
+ 0 {a: 2, b: 3} {a: 10, b: 11}
1 {a: 1, b: 2} {a: 9, b: 10}
at
/Users/foo/github/datafusion/datafusion/sqllogictest/test_files/aggregate.slt:6954
2. query result mismatch:
[SQL] WITH t AS (SELECT i as c1, i + 1 as c2 FROM generate_series(1, 10)
t(i))
SELECT key, MIN(c), MAX(c) FROM (SELECT CASE WHEN c1 % 2 == 0 THEN STRUCT(c1
AS 'a', c2 AS 'b') ELSE NULL END AS c, (c1 % 2) AS key FROM t) GROUP BY key
[Diff] (-expected|+actual)
- 0 {a: 1, b: 3} {a: 10, b: 11}
+ 0 {a: 2, b: 3} {a: 10, b: 11}
1 NULL NULL
at
/Users/foo/github/datafusion/datafusion/sqllogictest/test_files/aggregate.slt:6962
3. query result mismatch:
[SQL] WITH t AS (SELECT i as c1, i + 1 as c2 FROM generate_series(1, 10)
t(i))
SELECT key, MIN(c), MAX(c) FROM (SELECT CASE WHEN c1 % 3 == 0 THEN STRUCT(c1
AS 'a', c2 AS 'b') ELSE NULL END AS c, (c1 % 2) AS key FROM t) GROUP BY key
[Diff] (-expected|+actual)
- 0 {a: 1, b: 7} {a: 6, b: 7}
+ 0 {a: 6, b: 7} {a: 6, b: 7}
1 {a: 3, b: 4} {a: 9, b: 10}
at
/Users/foo/github/datafusion/datafusion/sqllogictest/test_files/aggregate.slt:6970
4. query result mismatch:
[SQL] WITH t AS (SELECT i as c1 FROM generate_series(1, 10) t(i))
SELECT MIN(c), MAX(c) FROM (SELECT STRUCT(c1 AS 'a') AS c FROM t);
[Diff] (-expected|+actual)
- {a: 2} {a: 10}
+ {a: 1} {a: 10}
at
/Users/foo/github/datafusion/datafusion/sqllogictest/test_files/aggregate.slt:6984
5. query result mismatch:
[SQL] SELECT MIN(column1),MAX(column1) FROM (
VALUES
(STRUCT(1 AS 'a',2 AS 'b', 3 AS 'c')),
(STRUCT(1 AS 'a',2 AS 'b', 4 AS 'c'))
);
[Diff] (-expected|+actual)
- {a: 2, b: 2, c: 3} {a: 1, b: 2, c: 4}
+ {a: 1, b: 2, c: 3} {a: 1, b: 2, c: 4}
at
/Users/foo/github/datafusion/datafusion/sqllogictest/test_files/aggregate.slt:6991
Error: Execution("1 failures")
error: test failed, to rerun pass `-p datafusion-sqllogictest --test
sqllogictests`
```
</details>
3. just pick one of the failing test reported in stdout and use its line
number
```
cargo test --test sqllogictests -- aggregate:6954
```
<details><summary>command output</summary>
```
Completed 3 test files in 0 seconds
External error: 1 errors in file
/Users/gabriel.musatmestre/github/datafusion/datafusion/sqllogictest/test_files/aggregate.slt
1. query result mismatch:
[SQL] WITH t AS (SELECT i as c1, i + 1 as c2 FROM generate_series(1, 10)
t(i))
SELECT key, MIN(c), MAX(c) FROM (SELECT STRUCT(c1 AS 'a', c2 AS 'b') AS c,
(c1 % 2) AS key FROM t) GROUP BY key
[Diff] (-expected|+actual)
- 0 {a: 1, b: 3} {a: 10, b: 11}
+ 0 {a: 2, b: 3} {a: 10, b: 11}
1 {a: 1, b: 2} {a: 9, b: 10}
at
/Users/gabriel.musatmestre/github/datafusion/datafusion/sqllogictest/test_files/aggregate.slt:6954
Error: Execution("1 failures")
error: test failed, to rerun pass `-p datafusion-sqllogictest --test
sqllogictests`
```
</details>
4. launch just the test that you care about with a debugger attached, making
sure that the debugger doesn't do 1e6 irrelevant stops in breakpoints due to
other tests running
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]