Old API since v2.18.0. Superseded by convert_to_columnstore().
However, compression APIs are still supported, you do not need to migrate to the hypercore APIs.
Recompresses a compressed that had more data inserted after compression.
recompress_chunk(
chunk REGCLASS,
if_not_compressed BOOLEAN = false
)
You can also recompress s by running the job associated with your compression policy.
recompress_chunk gives you more fine-grained control by allowing you to target a specific .
recompress_chunk is deprecated since v2.14 and will be removed in the future. The procedure is now a
wrapper which calls compress_chunk instead of it.
recompress_chunk is implemented as an SQL procedure and not a function. Call the procedure with CALL. Don’t use a
SELECT statement.
recompress_chunk only works on s that have previously been compressed. To compress a for the first
time, use compress_chunk.
Samples
Recompress the timescaledb_internal._hyper_1_2_chunk:
CALL recompress_chunk('_timescaledb_internal._hyper_1_2_chunk');
Arguments
The syntax is:
CALL recompress_chunk(
chunk = '<chunk_name>',
if_not_compressed = true | false
);
| Name | Type | Default | Required | Description |
|---|
chunk | REGCLASS | - | ✔ | The to be recompressed. Must include the schema, for example _timescaledb_internal, if it is not in the search path. |
if_not_compressed | BOOLEAN | false | - | If true, prints a notice instead of erroring if the is already compressed. |
Troubleshoot
In TimescaleDB 2.6.0 and above, recompress_chunk is implemented as a procedure. Previously, it was implemented as a
function. If you are upgrading to TimescaleDB 2.6.0 or above, therecompress_chunk function could cause an error. For
example, trying to run SELECT recompress_chunk(i.show_chunks, true) FROM... gives the following error:
ERROR: recompress_chunk(regclass, boolean) is a procedure
To fix the error, use CALL instead of SELECT. You might also need to write a procedure to replace the full
functionality in your SELECT statement. For example:
DO $$
DECLARE chunk regclass;
BEGIN
FOR chunk IN SELECT format('%I.%I', chunk_schema, chunk_name)::regclass
FROM timescaledb_information.chunks
WHERE is_compressed = true
LOOP
RAISE NOTICE 'Recompressing %', chunk::text;
CALL recompress_chunk(chunk, true);
END LOOP;
END
$$;