Class ExtremeRowRenderRequest
The already-prepared inputs of one native extreme-row render: the filtered source SQL, the canonical payload aliases the returned source must expose, and the ordered key/group aliases that source exposes for the native construct.
public sealed record ExtremeRowRenderRequest : IEquatable<ExtremeRowRenderRequest>
- Inheritance
-
ExtremeRowRenderRequest
- Implements
- Inherited Members
- Extension Methods
Remarks
This is a read-only input constructed by the core and handed to an external
IExtremeRowRenderer. Implementing a renderer means receiving instances through
Render(ExtremeRowRenderRequest). The eager constructor is part of the public contract:
an external assembly without InternalsVisibleTo can construct one directly. Validation
happens at construction - a null reference throws ArgumentNullException, while an
empty or whitespace-only sourceSql, a null or empty collection element, or an undeclared
KeywordCase throws ArgumentException (a whitespace-only alias is
accepted). There is no SQL, provider, security or cardinality validation, and nothing calls
CanRender(ExtremeRowDescription) or Render(ExtremeRowRenderRequest).
Constructors
ExtremeRowRenderRequest(string, bool, IReadOnlyList<string>, IReadOnlyList<string>, IReadOnlyList<ExtremeRowRenderColumn>, IReadOnlyList<string>, KeywordCase)
Creates the prepared inputs of one native extreme-row render. Exposed so an external IExtremeRowRenderer can be exercised without a host that has internals access. Every collection is borrowed, not copied; the renderer must not mutate a collection while the request is in use, including from a concurrent caller.
public ExtremeRowRenderRequest(string sourceSql, bool isMax, IReadOnlyList<string> payloadAliases, IReadOnlyList<string> keyAliases, IReadOnlyList<ExtremeRowRenderColumn> keyColumns, IReadOnlyList<string> groupAliases, KeywordCase keywordCase)
Parameters
sourceSqlstringThe prepared filtered source SQL. Must not be null, empty or whitespace-only.
isMaxboolpayloadAliasesIReadOnlyList<string>The canonical payload aliases, in order. Must not be null; elements must not be null or empty (whitespace-only is accepted).
keyAliasesIReadOnlyList<string>The aliases of the extreme-key components, in selector order. Must not be null; elements must not be null or empty (whitespace-only is accepted).
keyColumnsIReadOnlyList<ExtremeRowRenderColumn>The shape facts aligned with
keyAliases. Must not be null; elements must not be null.groupAliasesIReadOnlyList<string>The aliases of the group-by components; empty for the global form. Must not be null; elements must not be null or empty (whitespace-only is accepted).
keywordCaseKeywordCaseThe keyword casing; must be a declared KeywordCase value.
Exceptions
- ArgumentNullException
A required reference is null.
- ArgumentException
sourceSqlis empty or whitespace-only, a collection contains a null or empty element, orkeywordCaseis not a declared value.
Properties
GroupAliases
The aliases of the group-by components, in selector order; empty for the global form.
public IReadOnlyList<string> GroupAliases { get; }
Property Value
IsMax
public bool IsMax { get; }
Property Value
KeyAliases
The aliases of the extreme-key components, in selector order.
public IReadOnlyList<string> KeyAliases { get; }
Property Value
KeyColumns
The shape facts of the extreme-key components, positionally aligned with KeyAliases. A renderer whose key emission depends on the component type (for example ClickHouse's floating-key NaN adaptation) reads this instead of re-deriving it.
public IReadOnlyList<ExtremeRowRenderColumn> KeyColumns { get; }
Property Value
KeywordCase
The keyword casing the returned SQL should use.
public KeywordCase KeywordCase { get; }
Property Value
PayloadAliases
The canonical aliases of the payload columns the returned source must expose, in order.
public IReadOnlyList<string> PayloadAliases { get; }
Property Value
SourceSql
The prepared filtered source: select * from <source> where <key-component IS NOT
NULL> [and <condition>]. The renderer wraps it and returns the winning-row source.
public string SourceSql { get; }