Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit18b4714

Browse files
author
Nikita Glukhov
committed
Add contrib/lz
1 parentb005843 commit18b4714

File tree

7 files changed

+1127
-0
lines changed

7 files changed

+1127
-0
lines changed

‎contrib/lz/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Generated subdirectories
2+
/log/
3+
/results/
4+
/tmp_check/

‎contrib/lz/Makefile

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# contrib/lz/Makefile
2+
3+
MODULE_big = lz
4+
OBJS = lz.o$(WIN32RES)
5+
6+
EXTENSION = lz
7+
DATA = lz--1.0.sql
8+
PGFILEDESC = "LZ compression methods"
9+
10+
REGRESS = lz
11+
SHLIB_LINK += -lzstd -llz4 -lsnappy
12+
13+
ifdefUSE_PGXS
14+
PG_CONFIG = pg_config
15+
PGXS :=$(shell$(PG_CONFIG) --pgxs)
16+
include$(PGXS)
17+
else
18+
subdir = contrib/lz
19+
top_builddir = ../..
20+
include$(top_builddir)/src/Makefile.global
21+
include$(top_srcdir)/contrib/contrib-global.mk
22+
endif

‎contrib/lz/expected/lz.out

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
CREATE EXTENSION lz;
2+
-- Create tables
3+
CREATE TEMP TABLE invalid_datatype_for_lz_compression(i int compressed zstd);
4+
ERROR: lz compression method is only applicable to variable-length types
5+
---- zstd
6+
CREATE TEMP TABLE zstd_invalid_clevel(js json compressed zstd with (clevel 'abc'));
7+
ERROR: invalid input syntax for integer: "abc"
8+
CREATE TEMP TABLE zstd_invalid_option(js json compressed zstd with (invalid_option 'value'));
9+
ERROR: unrecognized compression level option 'invalid_option'
10+
CREATE TEMP TABLE t_zstd(t text compressed zstd);
11+
CREATE TEMP TABLE js_zstd(js json compressed zstd);
12+
CREATE TEMP TABLE jb_zstd(jb json compressed zstd);
13+
CREATE TEMP TABLE jb_zstd_10(js json compressed zstd with (clevel '10'));
14+
---- lz4
15+
CREATE TEMP TABLE lz4_invalid_clevel (js json compressed lz4 with (clevel 'aaa'));
16+
ERROR: invalid input syntax for integer: "aaa"
17+
CREATE TEMP TABLE lz4_invalid_option (js json compressed lz4 with (invalid_option 'value'));
18+
ERROR: unrecognized compression level option 'invalid_option'
19+
CREATE TEMP TABLE lz4hc_invalid_clevel(js json compressed lz4hc with (clevel 'aaa'));
20+
ERROR: invalid input syntax for integer: "aaa"
21+
CREATE TEMP TABLE lz4hc_invalid_option(js json compressed lz4hc with (invalid_option 'value'));
22+
ERROR: unrecognized compression level option 'invalid_option'
23+
CREATE TEMP TABLE lz4d_invalid_clevel (js json compressed lz4 with (clevel 'aaa'));
24+
ERROR: invalid input syntax for integer: "aaa"
25+
CREATE TEMP TABLE lz4d_invalid_dict (js json compressed lz4 with (dict 'aaa'));
26+
ERROR: unrecognized compression level option 'dict'
27+
CREATE TEMP TABLE lz4d_invalid_option (js json compressed lz4 with (invalid_option 'value'));
28+
ERROR: unrecognized compression level option 'invalid_option'
29+
CREATE TEMP TABLE jb_lz4 (jb json compressed lz4);
30+
CREATE TEMP TABLE jb_lz4_5 (jb json compressed lz4 with (clevel '5'));
31+
CREATE TEMP TABLE jb_lz4hc (jb json compressed lz4hc);
32+
CREATE TEMP TABLE jb_lz4hc_16(jb json compressed lz4hc with (clevel '16'));
33+
CREATE TEMP TABLE jb_lz4d_no_dict(jb json compressed lz4d);
34+
ERROR: lz4d compression method: option 'dict' is required
35+
SELECT NULL FROM lz4_dictionary_create('test_json_dict');
36+
?column?
37+
----------
38+
39+
(1 row)
40+
41+
SELECT NULL FROM lz4_dictionary_create('test_jsonb_dict');
42+
?column?
43+
----------
44+
45+
(1 row)
46+
47+
CREATE TEMP TABLE jb_lz4d(jb json compressed lz4d with (dict 'test_jsonb_dict'));
48+
CREATE TEMP TABLE jb_lz4d_5(jb json compressed lz4d with (dict 'test_jsonb_dict', clevel '5'));
49+
---- snappy
50+
CREATE TEMP TABLE snappy_invalid_clevel(js json compressed snappy with (clevel '1'));
51+
ERROR: snappy compression method has no options
52+
CREATE TEMP TABLE snappy_invalid_option(js json compressed snappy with (invalid_option 'value'));
53+
ERROR: snappy compression method has no options
54+
CREATE TEMP TABLE js_snappy(js json compressed snappy);
55+
CREATE TEMP TABLE jb_snappy(jb jsonb compressed snappy);
56+
-- Insert data
57+
CREATE TEMP TABLE lz_data(js text);
58+
INSERT INTO lz_data
59+
SELECT
60+
'{
61+
"id": ' || i || ',
62+
"string": "value' || i || '",
63+
"array": [' || i ||
64+
repeat(', 12345, ' || i || ', "str 12345 abcdef aaaaaaaaaa '|| i || '"', 20) ||
65+
'],
66+
"object": { "key": "value' || i || '" }
67+
}'
68+
FROM generate_series(1, 10000) i;
69+
SELECT lz4_dictionary_add_sample('test_jsonb_dict', js) FROM lz_data LIMIT 1;
70+
lz4_dictionary_add_sample
71+
---------------------------
72+
73+
(1 row)
74+
75+
DO
76+
$$
77+
DECLARE
78+
tab text[];
79+
tabs text[][] := array[
80+
array['t_zstd', 'text'],
81+
array['js_zstd', 'json'],
82+
array['jb_zstd', 'jsonb'],
83+
array['jb_zstd_10', 'jsonb'],
84+
array['jb_lz4', 'jsonb'],
85+
array['jb_lz4_5', 'jsonb'],
86+
array['jb_lz4hc', 'jsonb'],
87+
array['jb_lz4hc_16', 'jsonb'],
88+
array['jb_lz4d', 'jsonb'],
89+
array['jb_lz4d_5', 'jsonb'],
90+
array['js_snappy', 'json'],
91+
array['jb_snappy', 'jsonb']
92+
];
93+
tab_size bigint;
94+
BEGIN
95+
FOREACH tab SLICE 1 IN ARRAY tabs
96+
LOOP
97+
EXECUTE 'INSERT INTO ' || tab[1] ||
98+
' SELECT js::' || tab[2] ||
99+
' FROM lz_data';
100+
SELECT INTO tab_size pg_relation_size(tab[1]);
101+
RAISE NOTICE '%: %', tab[1], pg_size_pretty(tab_size);
102+
END LOOP;
103+
END
104+
$$;
105+
NOTICE: t_zstd: 1704 kB
106+
NOTICE: js_zstd: 1704 kB
107+
NOTICE: jb_zstd: 1536 kB
108+
NOTICE: jb_zstd_10: 1536 kB
109+
NOTICE: jb_lz4: 1456 kB
110+
NOTICE: jb_lz4_5: 2120 kB
111+
NOTICE: jb_lz4hc: 1456 kB
112+
NOTICE: jb_lz4hc_16: 1456 kB
113+
NOTICE: jb_lz4d: 1128 kB
114+
NOTICE: jb_lz4d_5: 1288 kB
115+
NOTICE: js_snappy: 2008 kB
116+
NOTICE: jb_snappy: 2672 kB

‎contrib/lz/lz--1.0.sql

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
/* contrib/lz/lz-1.0.sql*/
2+
3+
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
4+
\echo Use"CREATE EXTENSION lz" to load this file. \quit
5+
6+
-- Compression handlers
7+
8+
CREATEFUNCTIONzstd_handler(internal)
9+
RETURNS compression_handler
10+
AS'MODULE_PATHNAME'
11+
LANGUAGE C;
12+
13+
CREATEFUNCTIONlz4_handler(internal)
14+
RETURNS compression_handler
15+
AS'MODULE_PATHNAME'
16+
LANGUAGE C;
17+
18+
CREATEFUNCTIONlz4hc_handler(internal)
19+
RETURNS compression_handler
20+
AS'MODULE_PATHNAME'
21+
LANGUAGE C;
22+
23+
CREATEFUNCTIONlz4d_handler(internal)
24+
RETURNS compression_handler
25+
AS'MODULE_PATHNAME'
26+
LANGUAGE C;
27+
28+
CREATEFUNCTIONsnappy_handler(internal)
29+
RETURNS compression_handler
30+
AS'MODULE_PATHNAME'
31+
LANGUAGE C;
32+
33+
-- Compression methods
34+
35+
CREATE COMPRESSION METHOD zstd FOR"any" HANDLER zstd_handler;
36+
COMMENTON COMPRESSION METHOD zstd IS'zstandard compression method';
37+
38+
CREATE COMPRESSION METHOD lz4 FOR"any" HANDLER lz4_handler;
39+
COMMENTON COMPRESSION METHOD lz4 IS'LZ4 Fast compression method';
40+
41+
CREATE COMPRESSION METHOD lz4hc FOR"any" HANDLER lz4hc_handler;
42+
COMMENTON COMPRESSION METHOD lz4hc IS'LZ4 High Compression method';
43+
44+
CREATE COMPRESSION METHOD lz4d FOR"any" HANDLER lz4d_handler;
45+
COMMENTON COMPRESSION METHOD lz4d IS'LZ4 Dictionary Compression method';
46+
47+
CREATE COMPRESSION METHOD snappy FOR"any" HANDLER snappy_handler;
48+
COMMENTON COMPRESSION METHOD snappy IS'snappy compression method';
49+
50+
-- LZ4 Dictionary
51+
52+
CREATETABLElz4_dictionary
53+
(
54+
dict_name namePRIMARY KEY,
55+
dict_databytea
56+
) WITH oids;
57+
58+
CREATEINDEXlz4_dictionary_oid_idxON lz4_dictionary(oid);
59+
CREATEINDEXlz4_dictionary_name_idxON lz4_dictionary(dict_name);
60+
61+
CREATEFUNCTIONlz4_dictionary_create(dict_name name)
62+
RETURNSoid
63+
AS
64+
$$
65+
INSERT INTO lz4_dictionary (dict_name, dict_data)
66+
VALUES (dict_name,'')
67+
RETURNINGoid
68+
$$
69+
LANGUAGE SQL STRICT;
70+
71+
CREATEFUNCTIONlz4_dictionary_add_sample(dict_idoid, sample"any")
72+
RETURNS void
73+
AS'MODULE_PATHNAME'
74+
LANGUAGE C STRICT;
75+
76+
CREATEFUNCTIONlz4_dictionary_add_sample(dict_name name, sample"any")
77+
RETURNS void
78+
AS'MODULE_PATHNAME'
79+
LANGUAGE C STRICT;
80+

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp