> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify-poc.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# add_policies()

> Add refresh, compression, and data retention policies on a continuous aggregate

export const CHUNK = 'chunk';

export const HYPERTABLE = 'hypertable';

export const CAGG = 'continuous aggregate';

<Icon icon="flask" /> Early access <Icon icon="tag" iconType="duotone" /> Since [2.10.0][tsdb-2.10.0]

Add refresh, compression, and data retention policies to a {CAGG}
in one step. The added compression and retention policies apply to the
{CAGG}, *not* to the original {HYPERTABLE}.

```sql theme={"dark"}
timescaledb_experimental.add_policies(
     relation REGCLASS,
     if_not_exists BOOL = false,
     refresh_start_offset "any" = NULL,
     refresh_end_offset "any" = NULL,
     compress_after "any" = NULL,
     drop_after "any" = NULL)
) RETURNS BOOL
```

<Note>
  `add_policies()` does not allow the `schedule_interval` for the {CAGG} to be set, instead using a default value of 1
  hour.

  If you would like to set this add your policies manually (see
  [`add_continuous_aggregate_policy`][add_continuous_aggregate_policy]).
</Note>

## Samples

Given a {CAGG} named `example_continuous_aggregate`, add three
policies to it:

1. Regularly refresh the {CAGG} to materialize data between 1 day
   and 2 days old.
2. Compress data in the {CAGG} after 20 days.
3. Drop data in the {CAGG} after 1 year.

```sql theme={"dark"}
SELECT timescaledb_experimental.add_policies(
    'example_continuous_aggregate',
    refresh_start_offset => '1 day'::interval,
    refresh_end_offset => '2 day'::interval,
    compress_after => '20 days'::interval,
    drop_after => '1 year'::interval
);
```

## Arguments

The syntax is:

```sql theme={"dark"}
SELECT timescaledb_experimental.add_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 {CAGG} that the policies should be applied to                                                                                   |
| `if_not_exists`        | `BOOL`                  | false   | -        | When true, prints a warning instead of erroring if the {CAGG} doesn't exist.                                                        |
| `refresh_start_offset` | `INTERVAL` or `INTEGER` | -       | -        | The start of the {CAGG} refresh window, expressed as an offset from the policy run time.                                            |
| `refresh_end_offset`   | `INTERVAL` or `INTEGER` | -       | -        | The end of the {CAGG} refresh window, expressed as an offset from the policy run time. Must be greater than `refresh_start_offset`. |
| `compress_after`       | `INTERVAL` or `INTEGER` | -       | -        | {CAGG} {CHUNK}s are compressed if they exclusively contain data older than this interval.                                           |
| `drop_after`           | `INTERVAL` or `INTEGER` | -       | -        | {CAGG} {CHUNK}s 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.

[add_continuous_aggregate_policy]: /api-reference/timescaledb/continuous-aggregates/add_continuous_aggregate_policy

[tsdb-2.10.0]: https://github.com/timescale/timescaledb/releases/tag/2.10.0
