in src/main/java/org/apache/paimon/trino/TrinoMetadata.java [221:239]
public ColumnHandle getMergeRowIdColumnHandle(
ConnectorSession session, ConnectorTableHandle tableHandle) {
TrinoTableHandle trinoTableHandle = (TrinoTableHandle) tableHandle;
Table table = trinoTableHandle.table(catalog);
if (!(table instanceof FileStoreTable)) {
throw new IllegalArgumentException(table.getClass() + " is not supported");
}
FileStoreTable storeTable = (FileStoreTable) table;
BucketMode bucketMode = storeTable.bucketMode();
if (bucketMode != BucketMode.HASH_FIXED) {
throw new IllegalArgumentException("Unsupported table bucket mode: " + bucketMode);
}
Set<String> pkSet = new HashSet<>(table.primaryKeys());
DataField[] row =
table.rowType().getFields().stream()
.filter(dataField -> pkSet.contains(dataField.name()))
.toArray(DataField[]::new);
return TrinoColumnHandle.of(TRINO_ROW_ID_NAME, DataTypes.ROW(row));
}