diff options
author | Jan Wieck <JanWieck@Yahoo.com> | 2000-07-03 23:10:14 +0000 |
---|---|---|
committer | Jan Wieck <JanWieck@Yahoo.com> | 2000-07-03 23:10:14 +0000 |
commit | 57d8080a40f51e1ff9eedea602e96e2612161d77 (patch) | |
tree | 6dbed1f7333436cb08af6e7c0d9c55ac5e064750 /src/backend/utils/adt/pg_lzcompress.c | |
parent | ef5bea51e17d36ab06e7e67847a8b1e489d6d189 (diff) | |
download | postgresql-57d8080a40f51e1ff9eedea602e96e2612161d77.tar.gz postgresql-57d8080a40f51e1ff9eedea602e96e2612161d77.zip |
TOAST
WARNING: This is actually broken - we have self-deadlocks
due to concurrent changes in buffer management.
Vadim and me are working on it.
Jan
Diffstat (limited to 'src/backend/utils/adt/pg_lzcompress.c')
-rw-r--r-- | src/backend/utils/adt/pg_lzcompress.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/backend/utils/adt/pg_lzcompress.c b/src/backend/utils/adt/pg_lzcompress.c index f4e6ac5be37..493b4e64465 100644 --- a/src/backend/utils/adt/pg_lzcompress.c +++ b/src/backend/utils/adt/pg_lzcompress.c @@ -1,7 +1,7 @@ /* ---------- * pg_lzcompress.c - * - * $Header: /cvsroot/pgsql/src/backend/utils/adt/pg_lzcompress.c,v 1.5 2000/05/30 00:49:53 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/pg_lzcompress.c,v 1.6 2000/07/03 23:09:52 wieck Exp $ * * This is an implementation of LZ compression for PostgreSQL. * It uses a simple history table and generates 2-3 byte tags @@ -582,11 +582,15 @@ pglz_compress(char *source, int slen, PGLZ_Header *dest, PGLZ_Strategy *strategy * ---------- */ if (do_compress) - return (dest->varsize = result_size + sizeof(PGLZ_Header)); + { + dest->varsize = result_size + sizeof(PGLZ_Header); + return VARATT_SIZE(dest); + } else { memcpy(((char *) dest) + sizeof(PGLZ_Header), source, slen); - return (dest->varsize = slen + sizeof(PGLZ_Header)); + dest->varsize = slen + sizeof(PGLZ_Header); + return VARATT_SIZE(dest); } } @@ -609,10 +613,10 @@ pglz_decompress(PGLZ_Header *source, char *dest) int32 off; dp = ((unsigned char *) source) + sizeof(PGLZ_Header); - dend = ((unsigned char *) source) + source->varsize; + dend = ((unsigned char *) source) + VARATT_SIZE(source); bp = (unsigned char *) dest; - if (source->varsize == source->rawsize + sizeof(PGLZ_Header)) + if (VARATT_SIZE(source) == source->rawsize + sizeof(PGLZ_Header)) { memcpy(dest, dp, source->rawsize); return source->rawsize; |