Skip to content

Make it easier to update sqltestlogic test expected output ("test script completion mode") #4570

@alamb

Description

@alamb

Usecase

I am writing a new sqllogictest case (I love this tool) and I want to quickly update the expected outputs

For example, given this type of sqllogictest script, I would like to easily update the script (fill in the values of XX and YY)

# Reproducer for https://github.com/apache/arrow-datafusion/issues/3944
statement ok
CREATE TABLE test(
  i_item_desc VARCHAR,
  d1_date DATE,
  d2_date DATE,
  d3_date DATE
) as VALUES
  ('h','2022-12-12','2022-12-5','2022-12-12')
;


# Check greater than 
query C
select i_item_desc
from test
where d3_date > d2_date + INTERVAL '1 days';
----
XX

# Check less than 
query C
select i_item_desc
from test
where d3_date < d2_date + INTERVAL '1 days';
----
YY

Prior to #4547 (thanks @xxchan and @xudong963 ) I would copy/paste the output from my console into the test file

After #4547 I need to copy/paste a diff and then remove all instances of +

For example, I do

cargo test -p datafusion --test sqllogictests -- dates

Which would print out

[Diff] (-excepted|+actual)
-   DD
+   c
+   d
+   e
+   f
+   g
+   h

Which while I can do is quite annoying

Desire

  1. A way to run sqllogictest that given the input file would produce the expected output file so I can verify the contents and update the script

Implementation Ideas

This is called "test script completion mode" in sqlllogictest https://www.sqlite.org/sqllogictest/doc/trunk/about.wiki

I think the sqllogictest runner binary has some version of this that looks super awesome (and relevant to updating results), here:

https://github.com/risinglightdb/sqllogictest-rs/blob/d753e4c77fbf00cdaab69477df2e9c3dba3f5fcc/sqllogictest-bin/src/lib.rs#L505

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions