Vadim Mikheev wrote:
> > I am inclined to think that we should do SetQuerySnapshot in the outer
> > loop of pg_exec_query_string, just before calling
> > pg_analyze_and_rewrite. This would ensure that parse/plan accesses to
> ^^^^^^^^^^^^^^
> Actually not - snapshot is passed as parameter to heap_beginscan...
> And currently SnapshotNow is used everywhere.
>
I sometimes mentioned anxieties about the use of SnapshotNow,
though I 've had no reasonable solution for it.
SnapshotNow isn't a real snapshot and so it wouldn't be able to
give us a complete consistency e.g. in the case "DDL statements
in transaction block".
However I couldn't think of any reasnoable way how to
handle the following cases.
We would have PREPARE statements in the near future.
How does PREPARE use the same snapshot as the execution ?
We would never be able to have shared catalog cache.
We coulnd't delete dropped table files immediately after commit.
...
Regards.
Hiroshi Inoue