Skip to main content

AUDIT.CATALOG.NOT_COMPARED — read completely, and outside a comparison on purpose

  • Category: safety
  • Level: 0
  • Stability: stable
  • Suites: audit

The audit reports this notice for an object it read completely and understood, which a rule nonetheless does not compare with something else. The boundary is part of how that rule is built, and the rule's page names it.

Where it comes from​

Today it comes from the redundant-index rule, PG.L7.INDEX_REDUNDANT, and its MySQL twin, in three shapes:

  • A b-tree under a non-default operator class. text_pattern_ops serves LIKE 'foo%' and the default class serves equality and ordering, while the server prints both key positions the same way. The index is compared against nothing.
  • A partial index on a table that carries another condition. A partial index is compared against the indexes under its own condition. Whether one condition implies another is not decided here, so the pair between two different conditions stays unjudged.
  • A MySQL prefix-length key. It indexes the first characters of a column — bytes only for a binary string — and no column list can say that.

A partial index alone under the only condition on its table, and a GIN index alone under its method and operator class, do not produce this notice. Each was compared against everything a comparison can mean.

Why it is not undetermined​

An undetermined result is a check that wanted to run and could not, and --strict escalates it. Nothing here wanted to run. Reporting these as undetermined turned every schema with an ordinary partial index into a permanent red under the ci profile, which is why this notice has an id of its own.

It reports as not_applicable, with the reason not_comparable. A pipeline can count it, filter it or ignore it, and a strict run is not affected by it.

How it differs from AUDIT.CATALOG.UNREAD.NOT_UNDERSTOOD​

That notice means part of the object did not arrive in a form a rule can reason about: an expression recorded beside an index rather than among its key positions, or a condition whose shape the reading does not recognize. It stays undetermined, because there the question really is unanswered.

What to do​

Nothing is owed. There is no setting to change and no grant to make. If a pair that falls under one of these boundaries matters to you, compare it by hand: the notice names the index and the boundary.