---
title: alter_policies() | Tiger Data Docs
description: Alter refresh, compression, or data retention policies on a continuous aggregate
---

Early access [2.10.0](https://github.com/timescale/timescaledb/releases/tag/2.10.0)

Alter refresh, columnstore, or data retention policies on a continuous aggregate. The altered columnstore and retention policies apply to the continuous aggregate, *not* to the original hypertable.

```
timescaledb_experimental.alter_policies(
     relation REGCLASS,
     if_exists BOOL = false,
     refresh_start_offset "any" = NULL,
     refresh_end_offset "any" = NULL,
     compress_after "any" = NULL,
     drop_after "any" = NULL
) RETURNS BOOL
```

## Samples

Given a continuous aggregate named `example_continuous_aggregate` with an existing columnstore policy, alter the columnstore policy to compress data older than 16 days:

```
SELECT timescaledb_experimental.alter_policies(
    'continuous_agg_max_mat_date',
    compress_after => '16 days'::interval
);
```

## Arguments

The syntax is:

```
SELECT timescaledb_experimental.alter_policies(
    relation = '<view_name>',
    refresh_start_offset = <interval>,
    refresh_end_offset = <interval>,
    compress_after = <interval>,
    drop_after = <interval>
);
```

| Name                   | Type                    | Default | Required | Description                                                                                                                                       |
| ---------------------- | ----------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `relation`             | `REGCLASS`              | -       | ✔        | The continuous aggregate that you want to alter policies for                                                                                      |
| `if_exists`            | `BOOL`                  | false   | -        | When true, prints a warning instead of erroring if the policy doesn’t exist.                                                                      |
| `refresh_start_offset` | `INTERVAL` or `INTEGER` | -       | -        | The start of the continuous aggregate refresh window, expressed as an offset from the policy run time.                                            |
| `refresh_end_offset`   | `INTERVAL` or `INTEGER` | -       | -        | The end of the continuous aggregate refresh window, expressed as an offset from the policy run time. Must be greater than `refresh_start_offset`. |
| `compress_after`       | `INTERVAL` or `INTEGER` | -       | -        | continuous aggregate chunks are compressed into the columnstore if they exclusively contain data older than this interval.                        |
| `drop_after`           | `INTERVAL` or `INTEGER` | -       | -        | continuous aggregate chunks are dropped if they exclusively contain data older than this interval.                                                |

For arguments that could be either an `INTERVAL` or an `INTEGER`, use an `INTERVAL` if your time bucket is based on timestamps. Use an `INTEGER` if your time bucket is based on integers.

## Returns

Returns `true` if successful.
