PG Bug reporting form <noreply@postgresql.org> writes: > When creating an updatable "complex" view, if an ON CONFLICT clause is > provided, an INSERT SELECT to that view will cause "ERROR: variable not > found in subplan target lists". Removing the ON CONFLICT clause eliminates > the error message.
I believe the problem is that you wrote the ON CONFLICT clause incorrectly:
> ON CONFLICT (slo_id, time_window, tags) DO UPDATE SET value = NEW.value
You should have written "EXCLUDED.value" not "NEW.value". There is a bug here, but it's that the parser accepted this rule. I'm guessing that the parsing logic for ON CONFLICT didn't consider the possibility that NEW and OLD for a rule would already be in the range table.