Greg Stark <stark@mit.edu> wrote:
> I actually don't really dislike using "TRUNCATE" for this
> command. I was more asking about whether this meant people were
> thinking of the view as a thing where you could control the data
> in it by hand and could have the view be "empty" rather than just
> "not valid".
You can either populate the MV in the CREATE command or by REFRESH,
and it will be scannable. If it is created WITH NO DATA or
TRUNCATEd it is not scannable, generating an error on an attempt to
reference it.
test=# select * from tm;
type | totamt
------+--------
y | 12
z | 24
x | 5
(3 rows)
test=# truncate tm;
TRUNCATE TABLE
test=# select * from tm;
ERROR: materialized view "tm" has not been populated
HINT: Use the REFRESH MATERIALIZED VIEW command.
> The way I was thinking about it, whatever the command is named,
> you might be able to tell the database to drop the storage
> associated with the view but that would make the view invalid
> until it was refreshed. It wouldn't make it appear to be empty.
I think we're on the same page after all.
--
Kevin Grittner
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company