Re: time stops within transaction
От | Tom Lane |
---|---|
Тема | Re: time stops within transaction |
Дата | |
Msg-id | 7673.971929378@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: time stops within transaction (Hiroshi Inoue <Inoue@tpf.co.jp>) |
Список | pgsql-hackers |
Hiroshi Inoue <Inoue@tpf.co.jp> writes: >>>> Postgres doesn't have an idea of what a 'top-level' statement is? I.E. >>>> statement as submitted by a client (libpq)? >> >> There's never been any reason to make such a distinction. > There's already a distinction. > Snapshot is made per top-level statement and functions/subqueries > use the same snapshot as that of top-level statement. Not so. SetQuerySnapshot is executed per querytree, not per top-level statement --- for example, if a rule generates multiple queries from a user statement, SetQuerySnapshot is called again for each query. With the current structure of pg_exec_query_string(), an operation executed in the outer loop, rather than the inner, would more or less correspond to one "top level" query --- if you want to assume that pg_exec_query_string() is only called from PostgresMain. That's true today but hasn't always been true --- I believe it used to be used to parse SPI commands, and someday it may be again. regards, tom lane
В списке pgsql-hackers по дате отправления: