Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
211ed366
Commit
211ed366
authored
Nov 17, 1999
by
Jan Wieck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Some minor corrections to the LZ compression. In fact I wanted to
HAVE the required OID's first. Jan
parent
79c3b71c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
49 additions
and
13 deletions
+49
-13
src/backend/utils/adt/lztext.c
src/backend/utils/adt/lztext.c
+15
-10
src/backend/utils/adt/pg_lzcompress.c
src/backend/utils/adt/pg_lzcompress.c
+5
-1
src/include/utils/pg_lzcompress.h
src/include/utils/pg_lzcompress.h
+29
-2
No files found.
src/backend/utils/adt/lztext.c
View file @
211ed366
/* ----------
* 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
;
}
...
...
src/backend/utils/adt/pg_lzcompress.c
View file @
211ed366
/* ----------
* 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
...
...
src/include/utils/pg_lzcompress.h
View file @
211ed366
/* ----------
* 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 -
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment