diff --git a/presto-delta/src/main/java/com/facebook/presto/delta/DeltaMetadata.java b/presto-delta/src/main/java/com/facebook/presto/delta/DeltaMetadata.java index 22e67e9d47f6e..8cdfde27b4f2f 100644 --- a/presto-delta/src/main/java/com/facebook/presto/delta/DeltaMetadata.java +++ b/presto-delta/src/main/java/com/facebook/presto/delta/DeltaMetadata.java @@ -46,6 +46,7 @@ import jakarta.inject.Inject; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; @@ -331,11 +332,19 @@ private ConnectorTableMetadata getTableMetadata(ConnectorSession session, Schema return null; } - List columnMetadata = tableHandle.getDeltaTable().getColumns().stream() + DeltaTable deltaTable = tableHandle.getDeltaTable(); + + // External location property + Map properties = new HashMap<>(1); + if (deltaTable.getTableLocation() != null) { + properties.put(DeltaTableProperties.EXTERNAL_LOCATION_PROPERTY, deltaTable.getTableLocation()); + } + + List columnMetadata = deltaTable.getColumns().stream() .map(column -> getColumnMetadata(session, column)) .collect(Collectors.toList()); - return new ConnectorTableMetadata(tableName, columnMetadata); + return new ConnectorTableMetadata(tableName, columnMetadata, properties); } @Override diff --git a/presto-delta/src/test/java/com/facebook/presto/delta/TestDeltaIntegration.java b/presto-delta/src/test/java/com/facebook/presto/delta/TestDeltaIntegration.java index da535ca4177b0..4c016e734126d 100644 --- a/presto-delta/src/test/java/com/facebook/presto/delta/TestDeltaIntegration.java +++ b/presto-delta/src/test/java/com/facebook/presto/delta/TestDeltaIntegration.java @@ -338,4 +338,33 @@ private static void setCommitFileModificationTime(String tableLocation, long com Paths.get(URI.create(tableLocation)).resolve("_delta_log/").resolve(format("%020d.json", commitId)), FileTime.from(commitTimeMillis, TimeUnit.MILLISECONDS)); } + + @Test(dataProvider = "deltaReaderVersions") + public void testShowCreateTable(String deltaVersion) + { + String tableName = deltaVersion + "/data-reader-primitives"; + String fullTableName = format("%s.%s.\"%s\"", DELTA_CATALOG, DELTA_SCHEMA.toLowerCase(), tableName); + + String createTableQueryTemplate = "CREATE TABLE %s (\n" + + " \"as_int\" integer,\n" + + " \"as_long\" bigint,\n" + + " \"as_byte\" tinyint,\n" + + " \"as_short\" smallint,\n" + + " \"as_boolean\" boolean,\n" + + " \"as_float\" real,\n" + + " \"as_double\" double,\n" + + " \"as_string\" varchar,\n" + + " \"as_binary\" varbinary,\n" + + " \"as_big_decimal\" decimal(1,0)\n" + + ")\n" + + "WITH (\n" + + " external_location = '%s'\n" + + ")"; + + String expectedSqlCommand = format(createTableQueryTemplate, fullTableName, goldenTablePath(tableName)); + + String showCreateTableCommandResult = (String) computeActual("SHOW CREATE TABLE " + fullTableName).getOnlyValue(); + + assertEquals(showCreateTableCommandResult, expectedSqlCommand); + } }