--- title: "Materialize v0.48" date: 2023-03-29 released: true patch: 4 --- ## v0.48.0 #### SQL * Introduce **object owners**, who can manage privileges for other roles on each object in the system by adding or revoking grants. In this release, object owners have limited functionality and are assigned as follows: * All objects that exist at the time of a new Materialize deployment (including all system objects) are owned by the `mz_system` role. * All objects that predate the release are owned by the new `default_owner` role. * Any new object is owned by the user who created it. This is part of the work to enable **Role-based access control** (RBAC) in a future release {{% gh 11579 %}}. * Support specifying multiple roles in the [`GRANT ROLE`](/sql/grant-role) and [`REVOKE ROLE`](/sql/revoke-role) commands. ```mzsql -- Grant role GRANT data_scientist TO joe, mike; -- Revoke role REVOKE data_scientist FROM joe, mike; ``` This is part of the work to enable **Role-based access control** (RBAC) in a future release {{% gh 11579 %}}. * Add [`mz_internal.mz_sessions`](/sql/system-catalog/mz_internal/#mz_sessions) to the system catalog. This table describes all active sessions in the system. #### Bug fixes and other improvements * Fix a bug where subsources were created in the `public` schema instead of being correctly created in the same schema as the source {{% gh 17868 %}}. This resulted in confusing name resolution for users of the PostgreSQL and load generator sources. [//]: # "NOTE(morsapaes) The `details` column was introduced in v0.47, but we missed the release note then and it now fits a little cosier with the change shipping in v0.48 -— so mentioning it here." * Improve the error messages reported in `mz_internal.mz_{source|sink}_status_history` and `mz_internal.mz_{source|sink}_statuses` with more helpful pointers to troubleshoot Kafka sources and sinks {{% gh 17805 %}}. From this release, the `error` column reports the full error message, and other helpful suggestions are added under `details`. * Stop silently ignoring `NULL` keys in sources using `ENVELOPE UPSERT` {{% gh 6350 %}}. The new behavior is to throw an error when trying to query the source. To recover an errored source, you must produce a record with a `NULL` value and a `NULL` key to the topic, to force a retraction. As an example, you can use [`kcat`](https://docs.confluent.io/platform/current/clients/kafkacat-usage.html) to produce an empty message: ```bash echo ":" | kcat -b $BROKER -t $TOPIC -Z -K: \ -X security.protocol=SASL_SSL \ -X sasl.mechanisms=SCRAM-SHA-256 \ -X sasl.username=$KAFKA_USERNAME \ -X sasl.password=$KAFKA_PASSWORD ``` * Fix a bug that prevented the correct parsing of connection settings specified using the [`-c` option](https://www.postgresql.org/docs/current/app-psql.html) {{% gh 18239 %}}. * Respect session settings even in the case where the first statement executed errors {{% gh 18317 %}}. Previously, such errors led to these settings being ignored.