Postgres CREATE OR REPLACE VIEW... can it block? I'm looking for a way for a table to be swapped while it's being used. Say we have a view
CREATE OR REPLACE VIEW my_data AS SELECT * FROM my_data_v1;

that is being used, e.g. lots of SELECT * FROM my_data. Then I ingest data into a new table, my_data_v2, and then run:
CREATE OR REPLACE VIEW my_data AS SELECT * FROM my_data_v2;

Would this block on any SELECT statements that are using the original view definition?
Yes, that would block, and there is no way around that.