Goal: Add the content SELECT (all descriptor fields) on top of the base query.
Work
- SELECT
alias.$ per joined class + target; SQL calculated fields' expression (with targetAlias substitution) as aliased columns. Multi-source → one query per ContentSource; non-applicable columns SELECT NULL.
- Column→field map: emit
(columnAlias → path+step+className) + json key (property name) → field id, consumed by Stage 4. Use $ selector to stay under the 2000-column cap; use $->[Prop] selectively for sort/filter columns.
- Hidden ≠ removed: hidden fields are still selected; only fields removed from the descriptor are dropped.
- Sorting:
sorting → ORDER BY (resolve field's path/column; for $ blobs use $->[Prop]).
Tests: ECSQL snapshots for direct/related/calculated/multi-source; ORDER BY; non-applicable NULL columns; column→field map correctness.
Dependencies: #1406, #1409.
Goal: Add the content SELECT (all descriptor fields) on top of the base query.
Work
alias.$per joined class + target; SQL calculated fields'expression(withtargetAliassubstitution) as aliased columns. Multi-source → one query perContentSource; non-applicable columns SELECT NULL.(columnAlias → path+step+className)+ json key (property name) → field id, consumed by Stage 4. Use$selector to stay under the 2000-column cap; use$->[Prop]selectively for sort/filter columns.sorting→ ORDER BY (resolve field's path/column; for$blobs use$->[Prop]).Tests: ECSQL snapshots for direct/related/calculated/multi-source; ORDER BY; non-applicable NULL columns; column→field map correctness.
Dependencies: #1406, #1409.