529adee2

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Group columns and indices into a SchemaSnapshot record

querySchema used to return only a column map; queryIndices was a second
separate query. Anywhere we wanted to compare two schemas in full, the
caller had to remember to query both and call compareSchemas twice.

Replace with a SchemaSnapshot record holding both maps. querySchema now
returns SchemaSnapshot; the old column query is renamed queryColumns so
the two halves can still be called directly. compareSchemaSnapshots
compares both halves under context "columns" / "indices" and uses the
undefined-trick so adding a field forces an update to the comparison.

Tidy-up:

- import Path and Path.IO open everywhere instead of qualified / partial
- use fromAbsDir and fromAbsFile instead of generic toFilePath
- settingsFor in both test suites now takes Path Rel Dir, not FilePath,
  with [reldir|test_resources/foo|] at call sites

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 0s 2s 2s 3s 0s
Eval 3s 43s 43s 47s 0s
Build 10s 40s 24s 34s 0s
Suite 0s 1m26s 46s 47s 1s

Timeline

0s10s20s30s40s