Re: SQL-standard function body
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Cc: Justin Pryzby <pryzby@telsasoft.com>, Noah Misch <noah@leadboat.com>,
Robert Haas <robertmhaas@gmail.com>, pgsql-hackers@postgresql.org
Date: 2021-04-27T16:16:53Z
Lists: pgsql-hackers
Peter Eisentraut <peter.eisentraut@enterprisedb.com> writes: > On 18.04.21 23:33, Tom Lane wrote: >> The actual use-case for that seems pretty thin, so we never bothered >> to worry about it before. But if we're going to build loop-breaking >> logic to handle function body dependencies, it should deal with this >> too. I think that all that's required is for the initial dummy >> function declaration to omit defaults as well as providing a dummy >> body. > I have studied this a bit. I'm not sure where the dummy function > declaration should be created. The current dependency-breaking logic in > pg_dump_sort.c doesn't appear to support injecting additional objects > into the set of dumpable objects. So we would need to create it perhaps > in dumpFunc() and then later set flags that indicate whether it will be > required. Hmm, good point. The existing code that breaks loops involving views depends on the fact that the view relation and the view's ON SELECT rule are already treated as distinct objects within pg_dump. So we just need to mark the rule object to indicate whether to emit it or not. To make it work for functions, there would have to be a secondary object representing the function body (and the default expressions, I guess). That's kind of a lot of complication, and inefficiency, for a corner case that may never arise in practice. We've ignored the risk for default expressions, and AFAIR have yet to receive any field complaints about it. So maybe it's okay to do the same for SQL-style function bodies, at least for now. > Another option would be that we disallow this at creation time. Don't like that one much. The backend shouldn't be in the business of rejecting valid commands just because pg_dump might be unable to cope later. regards, tom lane
Commits
-
Don't crash on empty statements in SQL-standard function bodies.
- bfeede9fa464 14.0 landed
-
psql: Fix line continuation prompts for unbalanced parentheses
- d9a9f4b4b92a 14.0 landed
-
Provide query source text when parsing a SQL-standard function body.
- 409723365b27 14.0 landed
-
Revert "Cope with NULL query string in ExecInitParallelPlan()."
- 83efce7a1ebc 14.0 landed
-
Undo decision to allow pg_proc.prosrc to be NULL.
- 1111b2668d89 14.0 landed
-
SQL-standard function body
- e717a9a18b2e 14.0 landed
-
Move pg_stat_statements query jumbling to core.
- 5fd9dfa5f50e 14.0 cited
-
Extend SQL function tests lightly
- 11b80d900fe4 14.0 landed