Support of partial decompression for datums
От | Ildus Kurbangaliev |
---|---|
Тема | Support of partial decompression for datums |
Дата | |
Msg-id | 20151204154718.48024130@lp обсуждение исходный текст |
Ответы |
Re: Support of partial decompression for datums
Re: Support of partial decompression for datums |
Список | pgsql-hackers |
Attached patch adds support of partial decompression for datums. It will be useful in many cases when extracting part of data is enough for big varlena structures. It is especially useful for expanded datums, because it provides storage for partial results. I have another patch, which removes the 1 Mb limit on tsvector using this feature. Usage: Assert(VARATT_IS_COMPRESSED(attr)); evh->data = (struct varlena *) palloc(TOAST_COMPRESS_RAWSIZE(attr) + VARHDRSZ); SET_VARSIZE(evh->data, TOAST_COMPRESS_RAWSIZE(attr) + VARHDRSZ); /* Extract size of tsvector */ res = toast_decompress_datum_partial(attr, evh->data, evh->dcState, sizeof(int32)); if (res == -1) elog(ERROR, "compressed tsvector is corrupted"); evh->count = TS_COUNT((TSVector) evh->data); /* Extract entries of tsvector */ res = toast_decompress_datum_partial(attr, evh->data, evh->dcState, sizeof(int32) + sizeof(WordEntry) * evh->count); if (res == -1) elog(ERROR, "compressed tsvector is corrupted"); -- Ildus Kurbangaliev Postgres Professional: http://www.postgrespro.com Russian Postgres Company
Вложения
В списке pgsql-hackers по дате отправления: