mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Move pg_lzcompress.c to src/common.
Exposing compression and decompression APIs of pglz makes possible its use by extensions and contrib modules. pglz_decompress contained a call to elog to emit an error message in case of corrupted data. This function is changed to return a status code to let its callers return an error instead. This commit is required for upcoming WAL compression feature so that the WAL reader facility can decompress the WAL data by using pglz_decompress. Michael Paquier
This commit is contained in:
@ -37,7 +37,7 @@
|
||||
#include "catalog/catalog.h"
|
||||
#include "miscadmin.h"
|
||||
#include "utils/fmgroids.h"
|
||||
#include "utils/pg_lzcompress.h"
|
||||
#include "common/pg_lzcompress.h"
|
||||
#include "utils/rel.h"
|
||||
#include "utils/typcache.h"
|
||||
#include "utils/tqual.h"
|
||||
@ -142,7 +142,8 @@ heap_tuple_untoast_attr(struct varlena * attr)
|
||||
|
||||
attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ);
|
||||
SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ);
|
||||
pglz_decompress(tmp, VARDATA(attr));
|
||||
if (!pglz_decompress(tmp, VARDATA(attr)))
|
||||
elog(ERROR, "compressed data is corrupted");
|
||||
pfree(tmp);
|
||||
}
|
||||
}
|
||||
@ -167,7 +168,8 @@ heap_tuple_untoast_attr(struct varlena * attr)
|
||||
|
||||
attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ);
|
||||
SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ);
|
||||
pglz_decompress(tmp, VARDATA(attr));
|
||||
if (!pglz_decompress(tmp, VARDATA(attr)))
|
||||
elog(ERROR, "compressed data is corrupted");
|
||||
}
|
||||
else if (VARATT_IS_SHORT(attr))
|
||||
{
|
||||
@ -239,7 +241,8 @@ heap_tuple_untoast_attr_slice(struct varlena * attr,
|
||||
|
||||
preslice = (struct varlena *) palloc(size);
|
||||
SET_VARSIZE(preslice, size);
|
||||
pglz_decompress(tmp, VARDATA(preslice));
|
||||
if (!pglz_decompress(tmp, VARDATA(preslice)))
|
||||
elog(ERROR, "compressed data is corrupted");
|
||||
|
||||
if (tmp != (PGLZ_Header *) attr)
|
||||
pfree(tmp);
|
||||
|
Reference in New Issue
Block a user