Skip to content

Commit 9015414

Browse files
committed
Cleanup InformationSchemaPageSource projection
Avoids unnecessary Integer boxing and Block[] allocations in InformationSchemaPageSource by using Page#getColumns.
1 parent 465f48a commit 9015414

File tree

1 file changed

+4
-11
lines changed

1 file changed

+4
-11
lines changed

core/trino-main/src/main/java/io/trino/connector/informationschema/InformationSchemaPageSource.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import io.trino.security.AccessControl;
2323
import io.trino.spi.Page;
2424
import io.trino.spi.PageBuilder;
25-
import io.trino.spi.block.Block;
2625
import io.trino.spi.connector.ColumnHandle;
2726
import io.trino.spi.connector.ColumnMetadata;
2827
import io.trino.spi.connector.ConnectorPageSource;
@@ -141,18 +140,12 @@ public InformationSchemaPageSource(
141140
.boxed()
142141
.collect(toImmutableMap(i -> columnMetadata.get(i).getName(), Function.identity()));
143142

144-
List<Integer> channels = columns.stream()
143+
int[] channels = columns.stream()
145144
.map(columnHandle -> (InformationSchemaColumnHandle) columnHandle)
146-
.map(columnHandle -> columnNameToChannel.get(columnHandle.columnName()))
147-
.collect(toImmutableList());
145+
.mapToInt(columnHandle -> columnNameToChannel.get(columnHandle.columnName()))
146+
.toArray();
148147

149-
projection = page -> {
150-
Block[] blocks = new Block[channels.size()];
151-
for (int i = 0; i < blocks.length; i++) {
152-
blocks[i] = page.getBlock(channels.get(i));
153-
}
154-
return new Page(page.getPositionCount(), blocks);
155-
};
148+
projection = page -> page.getColumns(channels);
156149
}
157150

158151
@Override

0 commit comments

Comments
 (0)