Re: Only owners can ANALYZE tables...seems overly restrictive - Mailing list pgsql-general

From David G. Johnston
Subject Re: Only owners can ANALYZE tables...seems overly restrictive
Date
Msg-id CAKFQuwafN63Nyo9=SzDC0GOndFi6yY_V9XXbXz=VogbvL0meUQ@mail.gmail.com
Whole thread Raw
In response to Re: Only owners can ANALYZE tables...seems overly restrictive  (Adrian Klaver <adrian.klaver@aklaver.com>)
List pgsql-general
On Mon, Feb 29, 2016 at 10:36 AM, Adrian Klaver <adrian.klaver@aklaver.com> wrote:
​So the typical user doesn't know or even care that what they just did
needs to be analyzed.  The situation is no worse than it is today.  But
as someone who writes many scripts and applications to perform bulk
writing and data analysis I'd like those scripts to use restricted
authorization credentials while still being able to run ANALYZE between
performing the bulk DML and the running the SELECT statements needed to
get the newly generated data out of the database.​

Maybe?:

CREATE OR REPLACE FUNCTION public.analyze_test(tbl_name character varying)
 RETURNS void
 LANGUAGE plpgsql
 SECURITY DEFINER
AS $function$
BEGIN
    EXECUTE 'ANALYZE ' || quote_ident(tbl_name);
END;
$function$


​Yes, a security definer function - and setting execute permissions appropriately - would work.  But it is a hack to work around a restriction that, in theory, need not exist.  I understand that our implementation - namely the presence of a publically visible GUC and uninhibitied SET usage​
 
​- may make reality more complicated than this.

I guess I don't see why anyone other than the database owner and superuser (if that, it probably could be made to be fixed at startup) should be allowed to SET default_statistics_target.  If a table owner wants to play with different levels they can always just ALTER TABLE SET - which has the benefit (though maybe this is undesirable in some instances...) of making the alteration effective during auto-vacuum runs.​

ANALYZE is something that needs to happen frequently and commonly on a running system for proper operation.  In comparison the statistic targets are basically frozen values aside from periods of experimentation.  We have our priorities backwards if SET is preventing more user-friendly usage of ANALYZE.

David J.

pgsql-general by date:

Previous
From: Peter Devoy
Date:
Subject: Re: bloated postgres data folder, clean up
Next
From: "David G. Johnston"
Date:
Subject: Re: Only owners can ANALYZE tables...seems overly restrictive