Files
openGauss-server/contrib/gms_compress/gms_compress--1.0.sql
2024-11-07 16:27:17 +08:00

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;