Materialize v0.30


  • Fix a bug that could cause updates in sinks to appear as two separate records, instead of consolidated into a single update record (#15748). Previously, updates for multiple keys that occurred at the same timestamp would either emit a deletion tombstone followed by a record with the new value (ENVELOPE UPSERT), or a {"before": "OLDVALUE", "after": null} record followed by a {"before": null, "after": "NEWVALUE"} record (ENVELOPE DEBEZIUM).

  • Improve error message for unsupported types in the PostgreSQL source, specifying the table and column containing an unsupported type:

    CREATE SOURCE pg_source
      FROM POSTGRES CONNECTION pg_connection (PUBLICATION 'mz_source')
      WITH (SIZE = '3xsmall');
      ERROR:  column "person.current_mood" uses unrecognized type
      DETAIL:  type with OID 211538 is unknown
      HINT:  You may be using an unsupported type in Materialize, such as an enum. Try excluding the table from the publication.

    Fine-grained control for casting unsupported types into valid Materialize types is a work in progress (#15716).

  • When using both signed and unsigned integers as inputs to a function, cast the inputs to a larger lossless type rather than double. For example, when determining equality between integer (32-bit signed integer) and uint4 (32-bit unsigned integer), both values are now cast to bigint (64-bit signed integer). Previously both values would be cast to double (64-bit floating point number).

  • Improve the performance of DDL statements, especially when many DDL statements are run within the same 24 hour period.

  • Add an xlarge size for sources and sinks.

Back to top ↑