WHERE drops UNKNOWN rows too.

highlighted = computed this step

UNKNOWN from NULL is dropped

A NULL comparison gives UNKNOWN, and WHERE does not keep UNKNOWN rows.

UNKNOWN is not TRUE\text{UNKNOWN is not TRUE}

Read UNKNOWN rows

There is 1 UNKNOWN row, and unknownKept is no.

UNKNOWN rows=1\text{UNKNOWN rows}=1

WHERE-filter examples are tiny finite-table transforms with SQL-style TRUE/FALSE/UNKNOWN logic; SQL dialect completeness, type coercion, optimizer behavior, indexing, and product claims are out of scope.

UNKNOWN from NULL is dropped: base rowsitemqtystatuspen3opennotebook0openmug2closedstickerNULLopen predicate evaluationsourcevaluestruthkept0[pen, 3, open]TRUEyes1[notebook, 0, open]FALSEno2[mug, 2, closed]TRUEyes3[sticker, NULL, open]UNKNOWNno WHERE output rowsitemqtystatuspen3openmug2closed WHERE factsfactvalueinputRowCount4trueRows2falseRows1unknownRows1keptRows2droppedRows2rowOrdersource_orderunknownKeptno

Find the NULL row

The NULL qty row is marked UNKNOWN and kept=no.

NULL row dropped\text{NULL row dropped}

Summary

WHERE keeps TRUE, not TRUE-or-UNKNOWN.

UNKNOWN dropped\text{UNKNOWN dropped}