Table of Contents

Struct FieldEvaluator

Namespace
Typhon.Engine
Assembly
Typhon.Engine.dll

A single scalar field predicate: compares one indexed field against a constant threshold. Packed to 16 bytes for cache-dense storage in an execution plan's filter chain.

public struct FieldEvaluator
Inherited Members

Fields

BranchIndex

Disjunctive-normal-form branch index: 0 for AND views, 0..15 for OR views.

public byte BranchIndex

Field Value

byte

CompareOp

Comparison operator to apply.

public CompareOp CompareOp

Field Value

CompareOp

ComponentTag

Which component the field belongs to in a multi-component view: 0 = first (T1), 1 = second (T2).

public byte ComponentTag

Field Value

byte

FieldIndex

Index into the component's Typhon.Engine.ComponentTable.IndexedFieldInfos. Max 63 (capped by ring-buffer flag encoding).

public byte FieldIndex

Field Value

byte

FieldOffset

Byte offset of the field within its component struct.

public ushort FieldOffset

Field Value

ushort

FieldSize

Size of the field in bytes.

public byte FieldSize

Field Value

byte

KeyType

Scalar type used to interpret the field bytes.

public KeyType KeyType

Field Value

KeyType

Threshold

Comparison constant widened to 64 bits. For float/double fields the raw bit pattern is reinterpreted, not numerically converted.

public long Threshold

Field Value

long

Methods

Evaluate(ref FieldEvaluator, byte*)

Evaluate this predicate against a raw field pointer. Returns true if the field satisfies the comparison.

public static bool Evaluate(ref FieldEvaluator eval, byte* fieldPtr)

Parameters

eval FieldEvaluator
fieldPtr byte*

Returns

bool

Remarks

String64 is intentionally not handled here — string-typed predicates are rejected upstream by QueryResolverHelper.MapFieldTypeToKeyType (which throws NotSupportedException for FieldType.String), and the String64 tag is reserved for the index/statistics layer (e.g., IndexStatistics uses it to mark String64BTree indexes as having no selectivity statistics). The Threshold slot is only 8 bytes — not large enough to hold a 64-byte String64 value — so any String64 predicate evaluation would have to happen via the B+Tree index path, not this scalar comparator.