103 lines
3.3 KiB
SQL
103 lines
3.3 KiB
SQL
/* contrib/gms_compress/gms_compress--1.0.sql */
|
|
|
|
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
|
\echo Use "CREATE EXTENSION gms_compress" to load this file. \quit
|
|
|
|
CREATE SCHEMA gms_compress;
|
|
GRANT USAGE ON SCHEMA gms_compress TO PUBLIC;
|
|
|
|
set behavior_compat_options='proc_outparam_override';
|
|
--These functions and procedures compress data using Lempel-Ziv compression algorithm.
|
|
CREATE OR REPLACE FUNCTION gms_compress.lz_compress(src IN raw, quality IN integer := 6)
|
|
RETURNS raw PACKAGE
|
|
AS 'MODULE_PATHNAME','gms_lz_compress'
|
|
LANGUAGE C;
|
|
|
|
CREATE OR REPLACE FUNCTION gms_compress.lz_compress(src IN blob, quality IN integer := 6)
|
|
RETURNS blob PACKAGE
|
|
AS 'MODULE_PATHNAME','gms_lz_compress'
|
|
LANGUAGE C;
|
|
|
|
CREATE OR REPLACE PROCEDURE gms_compress.lz_compress(src IN blob, dst INOUT blob, quality IN integer := 6) PACKAGE as
|
|
begin
|
|
dst := gms_compress.lz_compress(src, quality);
|
|
end;
|
|
|
|
CREATE OR REPLACE FUNCTION gms_compress.lz_compress_open(src INOUT blob, quality IN integer := 6)
|
|
RETURNS integer
|
|
AS 'MODULE_PATHNAME','gms_lz_compress_open'
|
|
LANGUAGE C;
|
|
|
|
CREATE OR REPLACE FUNCTION gms_compress.lz_compress_close(handle IN integer)
|
|
RETURNS blob PACKAGE
|
|
AS '$libdir/gms_compress', 'gms_lz_compress_close'
|
|
LANGUAGE C;
|
|
|
|
CREATE OR REPLACE PROCEDURE gms_compress.lz_compress_close(handle IN integer, dst INOUT blob) PACKAGE AS
|
|
begin
|
|
dst := gms_compress.lz_compress_close(handle);
|
|
end;
|
|
|
|
CREATE OR REPLACE FUNCTION gms_compress.lz_uncompress_open(src IN blob)
|
|
RETURNS integer
|
|
AS 'MODULE_PATHNAME','gms_lz_uncompress_open'
|
|
LANGUAGE C;
|
|
|
|
CREATE OR REPLACE FUNCTION gms_compress.uncompress_close(handle IN integer)
|
|
RETURNS void
|
|
AS '$libdir/gms_compress', 'gms_lz_uncompress_close'
|
|
LANGUAGE C;
|
|
|
|
CREATE OR REPLACE PROCEDURE gms_compress.lz_uncompress_close(handle IN integer) AS
|
|
begin
|
|
gms_compress.uncompress_close(handle);
|
|
end;
|
|
|
|
CREATE OR REPLACE FUNCTION gms_compress.compress_add(handle IN integer, src IN raw)
|
|
RETURNS void PACKAGE
|
|
AS '$libdir/gms_compress', 'gms_lz_compress_add'
|
|
LANGUAGE C;
|
|
|
|
CREATE OR REPLACE PROCEDURE gms_compress.lz_compress_add(handle IN integer, dst INOUT blob, src IN raw) PACKAGE AS
|
|
begin
|
|
IF src IS NULL THEN
|
|
RAISE EXCEPTION 'parameter cannot be NULL';
|
|
END IF;
|
|
gms_compress.compress_add(handle, src);
|
|
end;
|
|
|
|
CREATE OR REPLACE FUNCTION gms_compress.uncompress_extract(handle IN integer)
|
|
RETURNS raw PACKAGE
|
|
AS '$libdir/gms_compress', 'gms_lz_uncompress_extract'
|
|
LANGUAGE C;
|
|
|
|
CREATE OR REPLACE PROCEDURE gms_compress.lz_uncompress_extract(handle IN integer, dst INOUT raw) PACKAGE AS
|
|
begin
|
|
dst := gms_compress.uncompress_extract(handle);
|
|
end;
|
|
|
|
CREATE OR REPLACE FUNCTION gms_compress.isopen(handle IN integer)
|
|
RETURNS boolean
|
|
AS '$libdir/gms_compress', 'gms_isopen'
|
|
LANGUAGE C;
|
|
|
|
----These functions and procedures decompress data using the Lempel-Ziv decompression algorithm.
|
|
|
|
CREATE OR REPLACE FUNCTION gms_compress.lz_uncompress(src IN raw)
|
|
RETURNS raw PACKAGE
|
|
AS 'MODULE_PATHNAME','gms_lz_uncompress'
|
|
LANGUAGE C;
|
|
|
|
CREATE OR REPLACE FUNCTION gms_compress.lz_uncompress(src IN blob)
|
|
RETURNS blob PACKAGE
|
|
AS 'MODULE_PATHNAME','gms_lz_uncompress'
|
|
LANGUAGE C;
|
|
|
|
CREATE OR REPLACE PROCEDURE gms_compress.lz_uncompress(src IN blob, dst INOUT blob) PACKAGE as
|
|
begin
|
|
IF src IS NULL OR dst IS NULL THEN
|
|
RAISE EXCEPTION 'parameter cannot be NULL';
|
|
END IF;
|
|
dst := gms_compress.lz_uncompress(src);
|
|
end;
|