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
forwardCompatibilitynixpkgs-25_05pre-commitreleaseshellconfiguredevShelldefaultx86_64-linux