Expected inner-join facts are assertions only.
Honest by construction
Expected inner-join facts are assertions only.
compiler is source of truth \text{compiler is source of truth} compiler is source of truth
Render checked rows
The guarded join renders 3 rows after recomputation.
checked rows = 3 \text{checked rows}=3 checked rows = 3
Inner-join examples are tiny finite-table transforms; SQL dialect completeness, type coercion, optimizer behavior, execution cost, indexing, and database-product claims are out of scope.
Honest by construction: left table sid name 1 Ada 2 Bea 3 Cal NULL NoKey
Honest by construction: right table sid score 1 A 1 A2 3 C 4 D NULL Ghost
candidate row pairs leftSource rightSource leftKey rightKey matched 0 0 [1] [1] yes 0 1 [1] [1] yes 0 2 [1] [3] no 0 3 [1] [4] no 0 4 [1] [NULL] no 1 0 [2] [1] no 1 1 [2] [1] no 1 2 [2] [3] no 1 3 [2] [4] no 1 4 [2] [NULL] no 2 0 [3] [1] no 2 1 [3] [1] no 2 2 [3] [3] yes 2 3 [3] [4] no 2 4 [3] [NULL] no 3 0 [NULL] [1] no 3 1 [NULL] [1] no 3 2 [NULL] [3] no 3 3 [NULL] [4] no 3 4 [NULL] [NULL] no
inner join rows left.sid left.name right.sid right.score 1 Ada 1 A 1 Ada 1 A2 3 Cal 3 C
inner join facts fact value leftRowCount 4 rightRowCount 5 candidatePairCount 20 matchingPairCount 3 unmatchedLeftRows 2 unmatchedRightRows 2 joinRowCount 3 keyColumnCount 1 nullKeyMatches 0 rowOrder left_source_then_right_source
Try to tamper
Wrong expected facts, derived sidecars, missing keys, duplicate keys, duplicate columns, bools, floats, and unsupported keys fail closed.
tamper rejected \text{tamper rejected} tamper rejected
Summary
The book shows exact finite inner-join behavior only; product SQL behavior is outside the model.
scoped inner join model \text{scoped inner join model} scoped inner join model