What the warehouse says the query cost. Zero means not reported rather than free: DuckDB bills nobody and reports nothing, and the two are indistinguishable.
Which refusal, when decision is refused.
What the engine decided.
Semantic fields refused, on a denial. Never shown to the denied caller.
The warehouse this compiled for.
How it was grouped.
Wall clock time of the warehouse round trip.
The failure, when decision is error.
What would answer instead. The actionable half.
Who asked. anonymous on an engine without authentication.
The warehouse's own identifier, so two logs can be joined.
What was asked for. Names only, never values.
The workspace digest that answered, tying a number to a model revision.
The workspace namespace the request resolved to.
The event as the engine sent it, for anything not modelled here.
The refusal in the engine's own words.
What the caller should do about a refusal.
Rows returned, for a query that ran to completion.
Identifies the compiled statement without disclosing it.
When the decision was made, RFC 3339.
One decision the engine recorded.
refusedanddeniedare separate on purpose, and a consumer should keep them separate. Denied is access: this caller may not read a field. Refused is correctness: nobody can be told this accurately, andhintnames a question that can be answered. Counting them together turns every fan-out into an access incident.Carries no filter values, no SQL text and no result rows, by design. The
sqlHashidentifies the statement without disclosing it.