Walk entire database [#3301]
Closes #3301 (closed). Improves database.Record.Walk
to make it a viable way to walk the entire database (e.g. for snapshots).
- Makes index-ignoring behavior optional (default off).
- Updates set/list/value Walk implementations to avoid walking empty/non-existent records.
- Refactors walk helpers to avoid populating the data model (otherwise a full database walk could consume excessive memory).
- Refactors data model population to use methods instead of function literals (required for the previous point).
- Refactors parameterized map keys to simplify the previous two points.
- Adds methods to get keys for parameterized attributes (otherwise they can't reasonably be walked if modified = false).
Changelog: fix
Edited by Ethan Reesor