Repository: risingwavelabs/risingwave
File: src/frontend/src/catalog/table_catalog.rs (Rust)

Code before:
            definition: tb.definition,
            conflict_behavior,
            version_column_indices,
            read_prefix_len_hint: tb.read_prefix_len_hint as usize,
            version: tb.version.map(TableVersion::from_prost),
            watermark_columns,
            dist_key_in_pk: tb.dist_key_in_pk.iter().map(|x| *x as _).collect(),
            cardinality: tb
                .cardinality
                .map(|c| Cardinality::from_protobuf(&c))
                .unwrap_or_else(Cardinality::unknown),
            created_at_epoch: tb.created_at_epoch.map(Epoch::from),
            initialized_at_epoch: tb.initialized_at_epoch.map(Epoch::from),
            cleaned_by_watermark: tb.cleaned_by_watermark,
            create_type: CreateType::from_proto(create_type),
            stream_job_status: StreamJobStatus::from_proto(stream_job_status),
            description: tb.description,
            created_at_cluster_version: tb.created_at_cluster_version.clone(),
            initialized_at_cluster_version: tb.initialized_at_cluster_version.clone(),
            retention_seconds: tb.retention_seconds,
            cdc_table_id: tb.cdc_table_id,
            vnode_count,
            webhook_info: tb.webhook_info,
            job_id: tb.job_id,
            engine,
            #[allow(deprecated)]
            clean_watermark_index_in_pk: tb.clean_watermark_index_in_pk.map(|x| x as usize),
            clean_watermark_indices: tb
                .clean_watermark_indices
                .iter()
                .map(|&x| x as usize)
                .collect(),

            refreshable: tb.refreshable,
            vector_index_info: tb.vector_index_info,
            cdc_table_type: tb
                .cdc_table_type
                .and_then(|t| PbCdcTableType::try_from(t).ok())
                .map(ExternalCdcTableType::from),
        }
    }
}

impl From<&PbTable> for TableCatalog {
    fn from(tb: &PbTable) -> Self {
        tb.clone().into()
    }
}

impl OwnedByUserCatalog for TableCatalog {
    fn owner(&self) -> UserId {

Review comment (suggestion):
Inconsistent use of `#[allow(deprecated)]` vs `#[expect(deprecated)]`. All other usages in this PR use `#[expect(deprecated)]` which is preferred as it will warn if the deprecated attribute is removed. Please change this to `#[expect(deprecated)]` for consistency.
```suggestion
            #[expect(deprecated)]
```

Code after:
            definition: tb.definition,
            conflict_behavior,
            version_column_indices,
            read_prefix_len_hint: tb.read_prefix_len_hint as usize,
            version: tb.version.map(TableVersion::from_prost),
            watermark_columns,
            dist_key_in_pk: tb.dist_key_in_pk.iter().map(|x| *x as _).collect(),
            cardinality: tb
                .cardinality
                .map(|c| Cardinality::from_protobuf(&c))
                .unwrap_or_else(Cardinality::unknown),
            created_at_epoch: tb.created_at_epoch.map(Epoch::from),
            initialized_at_epoch: tb.initialized_at_epoch.map(Epoch::from),
            cleaned_by_watermark: tb.cleaned_by_watermark,
            create_type: CreateType::from_proto(create_type),
            stream_job_status: StreamJobStatus::from_proto(stream_job_status),
            description: tb.description,
            created_at_cluster_version: tb.created_at_cluster_version.clone(),
            initialized_at_cluster_version: tb.initialized_at_cluster_version.clone(),
            retention_seconds: tb.retention_seconds,
            cdc_table_id: tb.cdc_table_id,
            vnode_count,
            webhook_info: tb.webhook_info,
            job_id: tb.job_id,
            engine,
            #[expect(deprecated)]
            clean_watermark_index_in_pk: tb.clean_watermark_index_in_pk.map(|x| x as usize),
            clean_watermark_indices: tb
                .clean_watermark_indices
                .iter()
                .map(|&x| x as usize)
                .collect(),

            refreshable: tb.refreshable,
            vector_index_info: tb.vector_index_info,
            cdc_table_type: tb
                .cdc_table_type
                .and_then(|t| PbCdcTableType::try_from(t).ok())
                .map(ExternalCdcTableType::from),
        }
    }
}

impl From<&PbTable> for TableCatalog {
    fn from(tb: &PbTable) -> Self {
        tb.clone().into()
    }
}

impl OwnedByUserCatalog for TableCatalog {
    fn owner(&self) -> UserId {