Skip to content

convert_to_rowstore()

Move a chunk from the columnstore to the rowstore

Since 2.18.0
Note

convert_to_rowstore() replaces decompress_chunk(), deprecated in 2.18.0.

Manually convert a specific chunk in the hypertable columnstore to the rowstore.

You don't need to do this to modify data. TimescaleDB supports INSERT, UPDATE, DELETE, and UPSERT directly on the columnstore, decompressing only the batches your statement touches, not the whole chunk.

If you still choose to convert a chunk back to the rowstore before making changes, best practice is to stop any jobs moving chunks to the columnstore, convert the chunk back to the rowstore, then modify the data. After the update, convert the chunk to the columnstore and restart the jobs.

To modify or add a lot of data to a chunk:

  1. Stop the jobs that are automatically adding chunks to the columnstore

    Retrieve the list of jobs from the timescaledb_information.jobs view to find the job you need to alter_job.

    SELECT alter_job(JOB_ID, scheduled => false);
  2. Convert a chunk to update back to the rowstore
    CALL convert_to_rowstore('_timescaledb_internal._hyper_2_2_chunk');
  3. Update the data in the chunk you added to the rowstore

    Best practice is to structure your INSERT statement to include appropriate partition key values, such as the timestamp. TimescaleDB adds the data to the correct chunk:

    INSERT INTO metrics (time, value)
    VALUES ('2025-01-01T00:00:00', 42);
  4. Convert the updated chunks back to the columnstore
    CALL convert_to_columnstore('_timescaledb_internal._hyper_1_2_chunk');
  5. Restart the jobs that are automatically converting chunks to the columnstore
    SELECT alter_job(JOB_ID, scheduled => true);

The syntax is:

CALL convert_to_rowstore(
chunk = '<chunk_name>',
if_columnstore = true | false
);
NameTypeDefaultRequiredDescription
chunkREGCLASS-Name of the chunk to be moved to the rowstore.
if_columnstoreBOOLEANtrueSet to false so this call fails with an error rather than a warning if chunk is not in the columnstore

This function returns void.