Re: MAINTAIN privilege -- what do we need to un-revert it?
Yugo Nagata <nagata@sraoss.co.jp>
From: Yugo Nagata <nagata@sraoss.co.jp>
To: Yugo NAGATA <nagata@sraoss.co.jp>
Cc: Jeff Davis <pgsql@j-davis.com>, Noah Misch <noah@leadboat.com>, Michael
Paquier <michael@paquier.xyz>, Nathan Bossart <nathandbossart@gmail.com>,
pgsql-hackers@postgresql.org, Joe Conway <mail@joeconway.com>, Robert Haas
<robertmhaas@gmail.com>
Date: 2024-08-05T07:05:02Z
Lists: pgsql-hackers
Attachments
- doc_create_matview_search_path.patch (text/x-diff) patch
On Fri, 2 Aug 2024 16:13:01 +0900 Yugo NAGATA <nagata@sraoss.co.jp> wrote: > On Thu, 01 Aug 2024 11:31:53 -0700 > Jeff Davis <pgsql@j-davis.com> wrote: > > > On Wed, 2024-07-31 at 18:20 +0900, Yugo NAGATA wrote: > > > I agree that it might not be important, but I think adding the flag > > > would be > > > also helpful for improving code-readability because it clarify the > > > function > > > is used in the two cases. I attached patch for this fix (patch 0003). > > > > Committed with one minor modification: I moved the boolean flag to be > > near the other booleans rather than at the end. Thank you. > > > > > Sure. I fixed the patch to remove 'param' from both functions. (patch > > > 0002) > > > > Committed, thank you. > > Thank you for committing them. > Should not they be backported to REL_17_STABLE? > > > > > > I also add the small refactoring around ExecCreateTableAs(). (patch > > > 0001) > > > > > > - Remove matview-related codes from intorel_startup. > > > Materialized views are no longer handled in this function. > > > > > > - RefreshMatViewByOid is moved to just after create_ctas_nodata > > > call to improve code readability. > > > > > > > I'm not sure the changes in intorel_startup() are correct. I tried > > adding an Assert(into->viewQuery == NULL), and it fails because there's > > another path I did not consider: "EXPLAIN ANALYZE CREATE MATERIALIZED > > VIEW ...", which does not go through ExecCreateTableAs() but does go > > through CreateIntoRelDestReceiver(). > > > > See: > > > > https://postgr.es/m/20444c382e6cb5e21e93c94d679d0198b0dba4dd.camel@j-davis.com > > > > Should we refactor a bit and try to make EXPLAIN use the same code > > paths? > > I overlooked that CreateIntoRelDestReceiver() is used from EXPLAIN. I saw the > thread above and I agree that we should refactor it to make EXPLAIN consistent > CREATE MATERIALIZED VIEW, but I suppose this should be discussed the other thread. > > I attached a updated patch removed the intorel_startup() part from. I confirmed that this has been committed to the master branch. Thank you! I also noticed that the documentation of CREATE MATERIALIZED VIEW doesn't mention search_path while it also changes search_path since it uses the REFRESH logic. I attached a trivial patch to fix this. Regards, Yugo Nagata -- Yugo Nagata <nagata@sraoss.co.jp>
Commits
-
doc: Note that CREATE MATERIALIZED VIEW restricts search_path.
- d8ebcac547d7 18.0 landed
- 18cea252ac74 17.1 landed
-
Small refactoring around ExecCreateTableAs().
- 7926a9a80f6d 18.0 landed
-
Add is_create parameter to RefreshMatviewByOid().
- ca2eea3ac89a 18.0 landed
-
Remove unused ParamListInfo argument from ExecRefreshMatView.
- f683d3a4ca6d 18.0 landed
-
When creating materialized views, use REFRESH to load data.
- 4b74ebf726d4 18.0 landed
- b4da732fd64e 17.0 landed
-
Add missing RestrictSearchPath() calls.
- a15b0edb5dd9 17.0 landed
- 8e28778ce396 18.0 landed
-
Fix search_path to a safe value during maintenance operations.
- 2af07e2f749a 17.0 landed
-
Revert MAINTAIN privilege and pg_maintain predefined role.
- 151c22deee66 17.0 cited
-
Avoid repeated name lookups during table and index DDL.
- 5f173040e324 9.4.0 cited
-
Add a materialized view relations.
- 3bf3ab8c5636 9.3.0 cited