|
| 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 |