Skip to content

Commit 3848661

Browse files
vlad-lyutenkoebyhr
authored andcommitted
Fix failure when commenting on non-lowercased view columns
1 parent 43e72b4 commit 3848661

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

core/trino-main/src/main/java/io/trino/execution/CommentTask.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ private ViewColumn findAndCheckViewColumn(Comment statement, Session session, Vi
175175
{
176176
String columnName = statement.getName().getSuffix();
177177
ViewColumn viewColumn = viewDefinition.getColumns().stream()
178-
.filter(column -> column.name().equals(columnName))
178+
// TODO (https://github.com/trinodb/trino/issues/17) change to equals()
179+
.filter(column -> column.name().equalsIgnoreCase(columnName))
179180
.findAny()
180181
.orElseThrow(() -> semanticException(COLUMN_NOT_FOUND, statement, "Column does not exist: %s", columnName));
181182
accessControl.checkCanSetColumnComment(session.toSecurityContext(), originalObjectName);

core/trino-main/src/test/java/io/trino/execution/TestCommentTask.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.trino.execution.warnings.WarningCollector;
2020
import io.trino.metadata.QualifiedObjectName;
2121
import io.trino.metadata.TableHandle;
22+
import io.trino.metadata.ViewColumn;
2223
import io.trino.security.AllowAllAccessControl;
2324
import io.trino.spi.connector.ConnectorTableMetadata;
2425
import io.trino.sql.tree.Comment;
@@ -33,6 +34,7 @@
3334
import static io.trino.spi.StandardErrorCode.COLUMN_NOT_FOUND;
3435
import static io.trino.spi.StandardErrorCode.TABLE_NOT_FOUND;
3536
import static io.trino.spi.connector.SaveMode.FAIL;
37+
import static io.trino.spi.type.BigintType.BIGINT;
3638
import static io.trino.sql.tree.Comment.Type.COLUMN;
3739
import static io.trino.sql.tree.Comment.Type.TABLE;
3840
import static io.trino.sql.tree.Comment.Type.VIEW;
@@ -143,6 +145,24 @@ public void testCommentViewColumn()
143145
.hasMessageContaining("Column does not exist: %s", missingColumnName.getSuffix());
144146
}
145147

148+
@Test
149+
public void testCommentOnMixedCaseViewColumn()
150+
{
151+
QualifiedObjectName viewName = qualifiedObjectName("existing_view");
152+
metadata.createView(testSession, viewName, viewDefinition("SELECT 1", ImmutableList.of(new ViewColumn("Mixed", BIGINT.getTypeId(), Optional.empty()))), ImmutableMap.of(), false);
153+
assertThat(metadata.isView(testSession, viewName)).isTrue();
154+
155+
QualifiedName columnNameLowerCase = qualifiedColumnName("existing_view", "mixed");
156+
getFutureValue(setComment(COLUMN, columnNameLowerCase, Optional.of("new mixed column comment")));
157+
assertThat(metadata.getView(testSession, viewName).get().getColumns().stream().filter(column -> "Mixed".equals(column.name())).collect(onlyElement()).comment())
158+
.isEqualTo(Optional.of("new mixed column comment"));
159+
160+
QualifiedName columnNameMixedCase = qualifiedColumnName("existing_view", "Mixed");
161+
getFutureValue(setComment(COLUMN, columnNameMixedCase, Optional.of("new Mixed column comment")));
162+
assertThat(metadata.getView(testSession, viewName).get().getColumns().stream().filter(column -> "Mixed".equals(column.name())).collect(onlyElement()).comment())
163+
.isEqualTo(Optional.of("new Mixed column comment"));
164+
}
165+
146166
@Test
147167
public void testCommentMaterializedViewColumn()
148168
{

0 commit comments

Comments
 (0)