Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public ListenableFuture<Void> execute(
{
Session session = stateMachine.getSession();
QualifiedObjectName tableName = createQualifiedObjectName(session, statement, statement.getName());
Optional<TableHandle> tableHandle = plannerContext.getMetadata().getTableHandle(session, tableName);
Optional<TableHandle> tableHandle = plannerContext.getMetadata().getRedirectionAwareTableHandle(session, tableName).getTableHandle();
if (tableHandle.isEmpty()) {
if (!statement.isTableExists()) {
throw semanticException(TABLE_NOT_FOUND, statement, "Table '%s' does not exist", tableName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public ListenableFuture<Void> execute(

if (statement.getType() == Comment.Type.TABLE) {
QualifiedObjectName tableName = createQualifiedObjectName(session, statement, statement.getName());
Optional<TableHandle> tableHandle = metadata.getTableHandle(session, tableName);
Optional<TableHandle> tableHandle = metadata.getRedirectionAwareTableHandle(session, tableName).getTableHandle();
if (tableHandle.isEmpty()) {
throw semanticException(TABLE_NOT_FOUND, statement, "Table does not exist: %s", tableName);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public ListenableFuture<Void> execute(
return immediateVoidFuture();
}

Optional<TableHandle> tableHandle = metadata.getTableHandle(session, tableName);
Optional<TableHandle> tableHandle = metadata.getRedirectionAwareTableHandle(session, tableName).getTableHandle();
if (tableHandle.isEmpty()) {
if (!statement.isExists()) {
throw semanticException(TABLE_NOT_FOUND, statement, "Table '%s' does not exist", tableName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import io.trino.execution.warnings.WarningCollector;
import io.trino.metadata.Metadata;
import io.trino.metadata.QualifiedObjectName;
import io.trino.metadata.RedirectionAwareTableHandle;
import io.trino.metadata.TableHandle;
import io.trino.security.AccessControl;
import io.trino.sql.tree.Expression;
Expand Down Expand Up @@ -86,7 +87,8 @@ public ListenableFuture<Void> execute(
return immediateVoidFuture();
}

Optional<TableHandle> tableHandle = metadata.getTableHandle(session, tableName);
RedirectionAwareTableHandle redirectionAwareTableHandle = metadata.getRedirectionAwareTableHandle(session, tableName);
Optional<TableHandle> tableHandle = redirectionAwareTableHandle.getTableHandle();
if (tableHandle.isEmpty()) {
if (!statement.isExists()) {
throw semanticException(TABLE_NOT_FOUND, statement, "Table '%s' does not exist", tableName);
Expand All @@ -95,13 +97,16 @@ public ListenableFuture<Void> execute(
}

QualifiedObjectName target = createQualifiedObjectName(session, statement, statement.getTarget());
if (redirectionAwareTableHandle.getRedirectedTableName().isPresent()) {
target = new QualifiedObjectName(tableHandle.get().getCatalogName().getCatalogName(), target.getSchemaName(), target.getObjectName());
}
if (metadata.getCatalogHandle(session, target.getCatalogName()).isEmpty()) {
throw semanticException(CATALOG_NOT_FOUND, statement, "Target catalog '%s' does not exist", target.getCatalogName());
}
if (metadata.getTableHandle(session, target).isPresent()) {
throw semanticException(TABLE_ALREADY_EXISTS, statement, "Target table '%s' already exists", target);
}
if (!tableName.getCatalogName().equals(target.getCatalogName())) {
if (!tableHandle.get().getCatalogName().getCatalogName().equals(target.getCatalogName())) {
throw semanticException(NOT_SUPPORTED, statement, "Table rename across catalogs is not supported");
}
accessControl.checkCanRenameTable(session.toSecurityContext(), tableName, target);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -330,13 +330,12 @@ public void testAlterTableAddColumn()

onTrino().executeQuery("ALTER TABLE " + hiveTableName + " ADD COLUMN some_new_column double");

// TODO: ALTER TABLE succeeded, but new column was not added
Assertions.assertThat(onTrino().executeQuery("DESCRIBE " + icebergTableName).column(1))
.containsOnly("nationkey", "name", "regionkey", "comment");
.containsOnly("nationkey", "name", "regionkey", "comment", "some_new_column");

assertResultsEqual(
onTrino().executeQuery("TABLE " + icebergTableName),
onTrino().executeQuery("SELECT * /*, NULL*/ FROM tpch.tiny.nation"));
onTrino().executeQuery("SELECT * , NULL FROM tpch.tiny.nation"));

onTrino().executeQuery("DROP TABLE " + icebergTableName);
}
Expand All @@ -353,11 +352,11 @@ public void testCommentTable()
assertTableComment("hive", "default", tableName).isNull();
assertTableComment("iceberg", "default", tableName).isNull();

onTrino().executeQuery("COMMENT ON TABLE " + hiveTableName + " IS 'This is my table, there are many like it but this one is mine'");
String tableComment = "This is my table, there are many like it but this one is mine";
onTrino().executeQuery(format("COMMENT ON TABLE " + hiveTableName + " IS '%s'", tableComment));

// TODO: COMMENT ON TABLE succeeded, but comment was not preserved
assertTableComment("hive", "default", tableName).isNull();
assertTableComment("iceberg", "default", tableName).isNull();
assertTableComment("hive", "default", tableName).isEqualTo(tableComment);
assertTableComment("iceberg", "default", tableName).isEqualTo(tableComment);

onTrino().executeQuery("DROP TABLE " + icebergTableName);
}
Expand Down