# Materialize v0.99
## v0.99

#### Sources and sinks

* **Private preview.** Support exporting objects and query results to Amazon s3
    using the [`COPY TO`](/sql/copy-to/) command and [`AWS connections`](/sql/create-connection/#aws).
    Both CSV and Parquet are supported as file formats.

  **Syntax**

  ```mzsql
  CREATE CONNECTION s3_conn
   TO AWS (ASSUME ROLE ARN = 'arn:aws:iam::000000000000:role/Materializes3Exporter');

  COPY mv TO 's3://mz-to-s3/'
  WITH (
    AWS CONNECTION = aws_role_assumption,
    FORMAT = 'parquet'
  );
  ```

  It's important to note that this command isn't supported in the SQL Shell yet,
  but will be in the next release ([#27114](https://github.com/MaterializeInc/materialize/issues/27114)).

* Support ingesting datetime columns as text via the `TEXT COLUMNS` option in
  the [MySQL source](/sql/create-source/mysql/) to work around MySQL's _zero_
  value for datetime types (`0000-00-00`, `0000-00-00 00:00:00`), as well as
  other differences in the range of supported values between MySQL and
  PostgreSQL.

#### SQL

* **Private preview.** Support setting a history retention period for sources,
    tables, materialized views, and indexes via the new [`RETAIN HISTORY`](/transform-data/patterns/durable-subscriptions/#history-retention-period)
    option. This is useful to implement [durable subscriptions](/transform-data/patterns/durable-subscriptions/).

  **Syntax**

  ```mzsql
  ALTER MATERIALIZED VIEW winning_bids SET (RETAIN HISTORY FOR '2hr');
  ```

  ```mzsql
  ALTER MATERIALIZED VIEW winning_bids RESET (RETAIN HISTORY);
  ```

* Add [`mz_internal.mz_history_retention_strategies`](https://materialize.com/docs/reference/system-catalog/mz_internal/#mz_history_retention_strategies)
  to the system catalog. This table describes the history retention strategies
  for tables, sources, indexes, and materialized views that are configured with
  a history retention period.

* Add [`mz_internal.mz_materialized_view_refreshes`](https://materialize.com/docs/reference/system-catalog/mz_internal/#mz_materialized_view_refreshes)
  to the system catalog. This table shows the time of the last successfully
  completed refresh and the time of the next scheduled refresh for each
  materialized view with a refresh strategy other than `on-commit`.

#### Bug fixes and other improvements

* Allow `interval` types to be cast to `mz_timestamp` ([#26970](https://github.com/MaterializeInc/materialize/issues/26970)).

* Move the `mz_cluster_replica_sizes` system catalog table from the `mz_internal
  schema` to `mz_catalog`, making the table definition stable. Any queries
  referencing the `mz_internal.mz_cluster_replica_sizes` catalog table must be
  adjusted to use `mz_catalog.mz_cluster_replica_sizes` instead.
