Re: [HACKERS] Backup database with entries > 8192 KBytes

Поиск
Список
Период
Сортировка
От G. Anthony Reina
Тема Re: [HACKERS] Backup database with entries > 8192 KBytes
Дата
Msg-id 37A8C16A.4EB8FF93@nsi.edu
обсуждение исходный текст
Ответ на Re: [HACKERS] Backup database with entries > 8192 KBytes  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Tom Lane wrote:

> "G. Anthony Reina" <reina@nsi.edu> writes:
> > I know that I can't insert a tuple into Postgres > 8192 KBytes long.
>
> Er, make that 8K.  If the limit were 8Meg, a lot fewer people would be
> complaining about it...
>

Right. My mistake. 8192 Bytes

>
> > need to store data in a variable length float array which can take up a
> > total length of greater than this amount. To get around the limit, we
> > simply insert a zeroed array (which takes up less character space)
>
> Huh?  I assume you're talking about an array of float4 (or float8).
> That's going to be 4 (or 8) bytes per value internally, zero or not.
>

float4 variable array

>
> Maybe you are thinking of the external textual representation of the
> array.
>

right. so the representation when I pass it into Postgres through a C
program:

e.g.
   sprintf(data_string, "INSERT INTO tablename VALUES '{%f'", array[0]);   for (i=1; i < length_of_array; i++) {
sprintf(temp_string,", %f", array[i]);       strcat(data_string, temp_string);   }   strcat(data_string, "}'");
 
   if (strlen(data_string) > 8192)) {       printf("String too long\n");       exit_nicely(conn);   }
   res = PQexec(conn, data_string);

>
> > Okay, long intro for a short question. When we do a pg_dump and then
> > restore the database should the COPY contained within the pg_dumped file
> > be able to handle these long arrays?
>
> Offhand I'm not sure.  I don't see any obvious restriction in copy.c,
> but there could be lurking problems elsewhere.  Have you tried it?

Yes. But some tables didn't go in when I restored the backup. It was probably
due to an error somewhere in the COPY command as far as I've been able to
surmise. I'm wondering if this could have been that problem (i.e. the array
was > 8K as so the COPY command crapped out when I tried to restore from a
pg_dump). When I get some time I'll try to make a small test database with
long arrays, pg_dump them, and then restore them.

Sorry to be so confusing. Trying to do 10 things at once. Must be the coffee
...     ;>)
Thanks for the help.
-Tony



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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [HACKERS] Backup database with entries > 8192 KBytes
Следующее
От: Tom Lane
Дата:
Сообщение: parse_coerce question