lesson 1 of 3 · the cleaning log — every dropped row has a receiptthe cleaning log — every dropped row has a receiptlesson 1 of 3 · the cleaning log — every dropped row has a receiptthe cleaning log — every dropped row has a receiptlesson 1 of 3 · the cleaning log — every dropped row has a receiptthe cleaning log — every dropped row has a receiptlesson 1 of 3 · the cleaning log — every dropped row has a receiptthe cleaning log — every dropped row has a receiptlesson 1 of 3 · the cleaning log — every dropped row has a receiptthe cleaning log — every dropped row has a receiptlesson 1 of 3 · the cleaning log — every dropped row has a receiptthe cleaning log — every dropped row has a receiptlesson 1 of 3 · the cleaning log — every dropped row has a receiptthe cleaning log — every dropped row has a receiptlesson 1 of 3 · the cleaning log — every dropped row has a receiptthe cleaning log — every dropped row has a receiptlesson 1 of 3 · the cleaning log — every dropped row has a receiptthe cleaning log — every dropped row has a receiptlesson 1 of 3 · the cleaning log — every dropped row has a receiptthe cleaning log — every dropped row has a receiptlesson 1 of 3 · the cleaning log — every dropped row has a receiptthe cleaning log — every dropped row has a receipt
Nulls never get one blanket treatment — each column gets a named
decision, and the decisions live in a registry the cleaning pass looks
up. Fill in the lookup: fetch this column's policy function from
NULL_POLICY and call it with the current (null) value.