diff --git a/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/DeltaLakeMetadata.java b/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/DeltaLakeMetadata.java index 36d410c31d33..0c8b28ffd213 100644 --- a/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/DeltaLakeMetadata.java +++ b/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/DeltaLakeMetadata.java @@ -470,32 +470,36 @@ public ConnectorTableMetadata getTableMetadata(ConnectorSession session, Connect { DeltaLakeTableHandle tableHandle = checkValidTableHandle(table); String location = metastore.getTableLocation(tableHandle.getSchemaTableName()); - Map columnComments = getColumnComments(tableHandle.getMetadataEntry()); - Map columnsNullability = getColumnsNullability(tableHandle.getMetadataEntry()); - Map columnGenerations = getGeneratedColumnExpressions(tableHandle.getMetadataEntry()); + MetadataEntry metadataEntry = tableHandle.getMetadataEntry(); + Map columnComments = getColumnComments(metadataEntry); + Map columnsNullability = getColumnsNullability(metadataEntry); + Map columnGenerations = getGeneratedColumnExpressions(metadataEntry); List constraints = ImmutableList.builder() - .addAll(getCheckConstraints(tableHandle.getMetadataEntry()).values()) - .addAll(getColumnInvariants(tableHandle.getMetadataEntry()).values()) // The internal logic for column invariants in Delta Lake is same as check constraints + .addAll(getCheckConstraints(metadataEntry).values()) + .addAll(getColumnInvariants(metadataEntry).values()) // The internal logic for column invariants in Delta Lake is same as check constraints .build(); - List columns = getColumns(tableHandle.getMetadataEntry()).stream() + List columns = getColumns(metadataEntry).stream() .map(column -> getColumnMetadata(column, columnComments.get(column.getName()), columnsNullability.getOrDefault(column.getName(), true), columnGenerations.get(column.getName()))) .collect(toImmutableList()); ImmutableMap.Builder properties = ImmutableMap.builder() - .put(LOCATION_PROPERTY, location) - .put(PARTITIONED_BY_PROPERTY, tableHandle.getMetadataEntry().getCanonicalPartitionColumns()); + .put(LOCATION_PROPERTY, location); + List partitionColumnNames = metadataEntry.getCanonicalPartitionColumns(); + if (!partitionColumnNames.isEmpty()) { + properties.put(PARTITIONED_BY_PROPERTY, partitionColumnNames); + } - Optional checkpointInterval = tableHandle.getMetadataEntry().getCheckpointInterval(); + Optional checkpointInterval = metadataEntry.getCheckpointInterval(); checkpointInterval.ifPresent(value -> properties.put(CHECKPOINT_INTERVAL_PROPERTY, value)); - Optional changeDataFeedEnabled = tableHandle.getMetadataEntry().isChangeDataFeedEnabled(); + Optional changeDataFeedEnabled = metadataEntry.isChangeDataFeedEnabled(); changeDataFeedEnabled.ifPresent(value -> properties.put(CHANGE_DATA_FEED_ENABLED_PROPERTY, value)); return new ConnectorTableMetadata( tableHandle.getSchemaTableName(), columns, properties.buildOrThrow(), - Optional.ofNullable(tableHandle.getMetadataEntry().getDescription()), + Optional.ofNullable(metadataEntry.getDescription()), constraints.stream() .map(constraint -> { try { diff --git a/plugin/trino-delta-lake/src/test/java/io/trino/plugin/deltalake/BaseDeltaLakeConnectorSmokeTest.java b/plugin/trino-delta-lake/src/test/java/io/trino/plugin/deltalake/BaseDeltaLakeConnectorSmokeTest.java index 317572b28a91..ef46482caea8 100644 --- a/plugin/trino-delta-lake/src/test/java/io/trino/plugin/deltalake/BaseDeltaLakeConnectorSmokeTest.java +++ b/plugin/trino-delta-lake/src/test/java/io/trino/plugin/deltalake/BaseDeltaLakeConnectorSmokeTest.java @@ -1427,22 +1427,18 @@ private void testDeltaLakeTableLocationChanged(boolean fewerEntries, boolean fir } // Verify table schema gets reflected correctly + String qualifiedTableName = "%s.%s.%s".formatted(getSession().getCatalog().orElseThrow(), SCHEMA, tableName); assertThat(computeScalar("SHOW CREATE TABLE " + tableName)) - .isEqualTo(format("" + - "CREATE TABLE %s.%s.%s (\n" + - " a_number integer,\n" + - " a_string varchar,\n" + - " another_string varchar\n" + - ")\n" + - "WITH (\n" + - " location = '%s',\n" + - " partitioned_by = ARRAY[%s]\n" + - ")", - getSession().getCatalog().orElseThrow(), - SCHEMA, - tableName, - newLocation, - secondPartitioned ? "'a_number'" : "")); + .isEqualTo("" + + "CREATE TABLE " + qualifiedTableName + " (\n" + + " a_number integer,\n" + + " a_string varchar,\n" + + " another_string varchar\n" + + ")\n" + + "WITH (\n" + + " location = '" + newLocation + "'" + (secondPartitioned ? "," : "") + "\n" + + (secondPartitioned ? " partitioned_by = ARRAY['a_number']\n" : "") + + ")"); } /** diff --git a/plugin/trino-delta-lake/src/test/java/io/trino/plugin/deltalake/BaseDeltaLakeMinioConnectorTest.java b/plugin/trino-delta-lake/src/test/java/io/trino/plugin/deltalake/BaseDeltaLakeMinioConnectorTest.java index 2166964d6916..063977b0fe7a 100644 --- a/plugin/trino-delta-lake/src/test/java/io/trino/plugin/deltalake/BaseDeltaLakeMinioConnectorTest.java +++ b/plugin/trino-delta-lake/src/test/java/io/trino/plugin/deltalake/BaseDeltaLakeMinioConnectorTest.java @@ -242,8 +242,7 @@ public void testShowCreateTable() " comment varchar\n" + ")\n" + "WITH (\n" + - " location = \\E'.*/test_schema/orders',\n\\Q" + - " partitioned_by = ARRAY[]\n" + + " location = \\E'.*/test_schema/orders'\n\\Q" + ")"); }