hpcc-systems/HPCC-Platform — pull request #2281 by ghalliday (2012-05-14 10:26:38+00:00)
Title: Extend implicit row projection to nested rows

The previous version of the implicit project code only analysed the top
level of fields within a dataset. If a dataset contained a nested
row field then it was either all included, or all removed. This
commit extends the functionality so it also removes fields from nested
records if they are unsued.

The main differences are
* Ensuring each set of fields knows the original record structure
* Keeping track of nested fields
* Replacing selectors now also ensures that fields of type datarow are
mapped if they have been changed.

The advantage is often smaller generated code, and reduced data pulled
from datafiles and indexes. It also improves the accuracy of an
upcoming feature for describing what data is actually used by a query.

The disadvantage is that this generates more unique row formats - which
increases the size of the metadata classes. An issue is open to work
on reducing the size of those for the common cases.

Signed-off-by: Gavin Halliday