Some minor corrections to the LZ compression. In fact I wanted to
HAVE the required OID's first. Jan
This commit is contained in:
parent
79c3b71c1b
commit
211ed36635
@ -1,10 +1,13 @@
|
||||
/* ----------
|
||||
* lztext.c -
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/lztext.c,v 1.1 1999/11/17 21:21:50 wieck Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/lztext.c,v 1.2 1999/11/17 22:18:45 wieck Exp $
|
||||
*
|
||||
* Text type with internal LZ compressed representation. Uses the
|
||||
* standard PostgreSQL compression method.
|
||||
*
|
||||
* This code requires that the LZ compressor found in pg_lzcompress
|
||||
* codes a usable VARSIZE word at the beginning of the output buffer.
|
||||
* ----------
|
||||
*/
|
||||
|
||||
@ -42,7 +45,7 @@ lztextin(char *str)
|
||||
return NULL;
|
||||
|
||||
/* ----------
|
||||
* Determine input size and eventually tuple size
|
||||
* Determine input size and maximum output Datum size
|
||||
* ----------
|
||||
*/
|
||||
rawsize = strlen(str);
|
||||
@ -56,8 +59,9 @@ lztextin(char *str)
|
||||
pglz_compress(str, rawsize, tmp, NULL);
|
||||
|
||||
/* ----------
|
||||
* If we miss less than x% bytes at the end of the temp value,
|
||||
* so be it. Therefore we save a memcpy().
|
||||
* If we miss less than 25% bytes at the end of the temp value,
|
||||
* so be it. Therefore we save a palloc()/memcpy()/pfree()
|
||||
* sequence.
|
||||
* ----------
|
||||
*/
|
||||
if (tmp_size - tmp->varsize < 256 ||
|
||||
@ -141,7 +145,7 @@ lztextlen(lztext *lz)
|
||||
* without multibyte support, it's the remembered rawsize
|
||||
* ----------
|
||||
*/
|
||||
return lz->rawsize;
|
||||
return PGLZ_RAW_SIZE(lz);
|
||||
}
|
||||
|
||||
|
||||
@ -166,7 +170,7 @@ lztextoctetlen(lztext *lz)
|
||||
* Return the varsize minus the VARSIZE field itself.
|
||||
* ----------
|
||||
*/
|
||||
return lz->varsize - sizeof(int32);
|
||||
return VARSIZE(lz) - VARHDRSZ;
|
||||
}
|
||||
|
||||
|
||||
@ -208,8 +212,9 @@ text_lztext(text *txt)
|
||||
pglz_compress(str, rawsize, tmp, NULL);
|
||||
|
||||
/* ----------
|
||||
* If we miss less than x% bytes at the end of the temp value,
|
||||
* so be it. Therefore we save a memcpy().
|
||||
* If we miss less than 25% bytes at the end of the temp value,
|
||||
* so be it. Therefore we save a palloc()/memcpy()/pfree()
|
||||
* sequence.
|
||||
* ----------
|
||||
*/
|
||||
if (tmp_size - tmp->varsize < 256 ||
|
||||
@ -250,15 +255,15 @@ lztext_text(lztext *lz)
|
||||
* Allocate and initialize the text result
|
||||
* ----------
|
||||
*/
|
||||
result = (text *) palloc(lz->rawsize + VARHDRSZ + 1);
|
||||
result = (text *) palloc(PGLZ_RAW_SIZE(lz) + VARHDRSZ + 1);
|
||||
VARSIZE(result) = lz->rawsize + VARHDRSZ;
|
||||
|
||||
/* ----------
|
||||
* Decompress directly into the text data area.
|
||||
* ----------
|
||||
*/
|
||||
pglz_decompress(lz, VARDATA(result));
|
||||
VARDATA(result)[lz->rawsize] = 0;
|
||||
pglz_decompress(lz, VARDATA(result));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* ----------
|
||||
* pg_lzcompress.c -
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/pg_lzcompress.c,v 1.1 1999/11/17 21:21:50 wieck Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/pg_lzcompress.c,v 1.2 1999/11/17 22:18:45 wieck Exp $
|
||||
*
|
||||
* This is an implementation of LZ compression for PostgreSQL.
|
||||
* It uses a simple history table and generates 2-3 byte tags
|
||||
@ -385,6 +385,8 @@ pglz_find_match (PGLZ_HistEntry **hstart, char *input, char *end,
|
||||
|
||||
/* ----------
|
||||
* pglz_compress -
|
||||
*
|
||||
* Compresses source into dest using strategy.
|
||||
* ----------
|
||||
*/
|
||||
int
|
||||
@ -580,6 +582,8 @@ pglz_compress (char *source, int slen, PGLZ_Header *dest, PGLZ_Strategy *strateg
|
||||
|
||||
/* ----------
|
||||
* pglz_decompress -
|
||||
*
|
||||
* Decompresses source into dest.
|
||||
* ----------
|
||||
*/
|
||||
int
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* ----------
|
||||
* pg_lzcompress.h -
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/include/utils/pg_lzcompress.h,v 1.1 1999/11/17 21:21:51 wieck Exp $
|
||||
* $Header: /cvsroot/pgsql/src/include/utils/pg_lzcompress.h,v 1.2 1999/11/17 22:18:46 wieck Exp $
|
||||
*
|
||||
* Definitions for the builtin LZ compressor
|
||||
* ----------
|
||||
@ -37,9 +37,36 @@ typedef struct PGLZ_Header {
|
||||
*/
|
||||
#define PGLZ_MAX_OUTPUT(_dlen) ((_dlen) + (((_dlen) | 0x07) >> 3) \
|
||||
+ sizeof(PGLZ_Header))
|
||||
|
||||
/* ----------
|
||||
* PGLZ_RAW_SIZE -
|
||||
*
|
||||
* Macro to determine the uncompressed data size contained
|
||||
* in the entry.
|
||||
* ----------
|
||||
*/
|
||||
#define PGLZ_RAW_SIZE(_lzdata) (_lzdata->rawsize)
|
||||
|
||||
/* ----------
|
||||
* PGLZ_IS_COMPRESSED -
|
||||
*
|
||||
* Macro to determine if the data itself is stored as raw
|
||||
* uncompressed data.
|
||||
* ----------
|
||||
*/
|
||||
#define PGLZ_IS_COMPRESSED(_lzdata) (_lzdata->varsize != \
|
||||
_lzdata->rawsize + sizeof(PGLZ_Header))
|
||||
_lzdata->rawsize + \
|
||||
sizeof(PGLZ_Header))
|
||||
|
||||
/* ----------
|
||||
* PGLZ_RAW_DATA -
|
||||
*
|
||||
* Macro to get access to the plain compressed or uncompressed
|
||||
* data. Useful if PGLZ_IS_COMPRESSED returns false.
|
||||
* ----------
|
||||
*/
|
||||
#define PGLZ_RAW_DATA(_lzdata) (((char *)(_lzdata)) + \
|
||||
sizeof(PGLZ_Header))
|
||||
|
||||
/* ----------
|
||||
* PGLZ_Strategy -
|
||||
|
Loading…
x
Reference in New Issue
Block a user