Tom Lane wrote:
> KaiGai Kohei <kaigai@ak.jp.nec.com> writes:
>> The attached patch provides access control features on largeobject.
>> This patch adds the ownership and two permissions (SELECT and UPDATE) on
>> largeobjects. The two permissions controls reader and writer accesses to
>> the largeobejcts.
>
> What about DELETE permissions? Should we track that separately from
> UPDATE?
PostgreSQL checks ownership of the database object when user tries to
drop it. This patch also add pg_largeobject_ownercheck() on lo_unlink().
>> The CREATE USER/ROLE statement got a new option: LARGEOBJECT/NOLARGEOBJECT.
>> It enables to controls whether the user can create a largeobject, or not.
>
> I don't think this is necessary or appropriate.
What should control privilege to create a new largeobject?
Or, it implicitly allows everyone to create a new one?
>> The pg_largeobject system catalog is reworked to manage its metadata.
>> Actual data chunks are stored in the toast relation of pg_largeobject,
>
> This seems like a very confusing design, and one that (a) breaks
> existing code to no purpose, (b) will greatly complicate in-place
> upgrade. Instead of abusing a toast relation to do something
> nonstandard, keep pg_largeobject as it is now and add a new, separate
> catalog that carries ownership and permissions info for each LO OID.
It was the original design just before the first commit fest. :-)
I don't have any reason to oppose to it.
Thanks,
--
KaiGai Kohei <kaigai@kaigai.gr.jp>