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
Config 0s 2s 2s 3s
Eval 3s 43s 43s 47s
Build 10s 40s 24s 34s
Test - - - -
Deploy - - - -
Suite 0s 1m26s 46s 47s

Timeline

0s10s20s30s40s