Re: Largeobject Access Controls and pg_migrator
| От | KaiGai Kohei |
|---|---|
| Тема | Re: Largeobject Access Controls and pg_migrator |
| Дата | |
| Msg-id | 4B244991.7040203@kaigai.gr.jp обсуждение исходный текст |
| Ответ на | Largeobject Access Controls and pg_migrator (Bruce Momjian <bruce@momjian.us>) |
| Ответы |
Re: Largeobject Access Controls and pg_migrator
|
| Список | pgsql-hackers |
(2009/12/13 10:39), Bruce Momjian wrote:
> Bruce Momjian wrote:
>> KaiGai Kohei wrote:
>>>> What happens when
>>>> there is no entry in pg_largeobject_metadata for a specific row?
>>>
>>> In this case, these rows become orphan.
>>> So, I think we need to create an empty large object with same LOID on
>>> pg_migrator. It makes an entry on pg_largeobject_metadata without
>>> writing anything to the pg_largeobject.
>>> I guess rest of migrations are not difference. Correct?
>>
>> Agreed. I have modified pg_migrator with the attached patch which
>> creates a script that adds default permissions for all large object
>> tables.
>
> Oops, seem like I have a problem in getting pg_migrator to populate
> pg_largeobject_metadata:
>
> test=> select lo_import('/etc/profile');
> lo_import
> -----------
> 16385
> (1 row)
>
> test=> select lo_import('/etc/profile.env');
> lo_import
> -----------
> 16386
> (1 row)
>
> test=> select oid,* from pg_largeobject_metadata;
> oid | lomowner | lomacl
> -------+----------+--------
> 16385 | 10 |
> 16386 | 10 |
> (2 rows)
lo_import() has an another prototype which takes second argument to
specify LOID. Isn't it available to restore a large object with
correct LOID? For example, lo_import('/etc/profile', 1234)
Or, if you intend to restore metadata in the second lo_import(),
ALTER LAEGE OBJECT and GRANT LARGE OBJECT enable to set up metadata
of a certain large object.
Or, am I missing the problem?
> You might remember that INSERT cannot set the oid of a row, so I don't
> see how pg_migrator can migrate this? Is there a reason we used 'oid'
> in pg_largeobject_metadata but 'lobj' in pg_largeobject? Why did't we
> add the lomowner and lomacl columns to pg_largeobject?
A large object consists of multiple tuples within pg_largeobject.
If we added lomowner and lomacl into pg_largeobject, we have to manage
all the pages in a large object to keep consistent state.
--
KaiGai Kohei <kaigai@kaigai.gr.jp>
В списке pgsql-hackers по дате отправления: