Re: Largeobject Access Controls (r2460)

Поиск
Список
Период
Сортировка
От KaiGai Kohei
Тема Re: Largeobject Access Controls (r2460)
Дата
Msg-id 4B71528E.5080301@kaigai.gr.jp
обсуждение исходный текст
Ответ на Re: Largeobject Access Controls (r2460)  (Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp>)
Ответы Re: Largeobject Access Controls (r2460)  (KaiGai Kohei <kaigai@ak.jp.nec.com>)
Список pgsql-hackers
(2010/02/09 20:16), Takahiro Itagaki wrote:
>
> KaiGai Kohei<kaigai@ak.jp.nec.com>  wrote:
>
>>> I don't think this is necessarily a good idea.  We might decide to treat
>>> both things separately in the future and it having them represented
>>> separately in the dump would prove useful.
>>
>> I agree. From design perspective, the single section approach is more
>> simple than dual section, but its change set is larger than the dual.
>
> OK.
>
>
> When I tested a custom dump with pg_restore, --clean&  --single-transaction
> will fail with the new dump format because it always call lo_unlink()
> even if the large object doesn't exist. It comes from dumpBlobItem:
>
> ! dumpBlobItem(Archive *AH, BlobInfo *binfo)
> !     appendPQExpBuffer(dquery, "SELECT lo_unlink(%s);\n", binfo->dobj.name);
>
> The query in DropBlobIfExists() could avoid errors -- should we use it here?
> | SELECT lo_unlink(oid) FROM pg_largeobject_metadata WHERE oid = %s;

Yes, we can use this query to handle --clean option.
I'll fix it soon.

> BTW, --clean option is ambiguous if combined with --data-only. Restoring
> large objects fails for the above reason if previous objects don't exist,
> but table data are restored *without* truncation of existing data. Will
> normal users expect TRUNCATE-before-load for --clean&  --data-only cases?
>
>      Present behaviors are;
>          Table data    - Appended. (--clean is ignored)
>          Large objects - End with an error if object doesn't exist.
>      IMO, ideal behaviors are:
>          Table data    - Truncate existing data and load new ones.
>          Large objects - Work like as MERGE (or REPLACE, UPSERT).
>
> Comments?

In the existing "BLOBS" section, it creates and restores large objects 
in same time. And, it also unlink existing large object (if exists)
just before restoring them, when --clean is given.

In my opinion, when --clean is given, it also should truncate the table
before restoring, even if --data-only is co-given.

Thanks,
-- 
KaiGai Kohei <kaigai@kaigai.gr.jp>


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Jeroen Vermeulen
Дата:
Сообщение: Avoiding bad prepared-statement plans.
Следующее
От: Michael Meskes
Дата:
Сообщение: Re: buildfarm breakage