From 4b6adf4c8688629c0d22a9c2448c0bed8a902f90 Mon Sep 17 00:00:00 2001 From: "Mateusz \"Serafin\" Gajewski" Date: Wed, 19 Feb 2025 14:45:04 +0100 Subject: [PATCH] Map blocks by source page channel once per page --- .../java/io/trino/server/protocol/JsonEncodingUtils.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/trino-main/src/main/java/io/trino/server/protocol/JsonEncodingUtils.java b/core/trino-main/src/main/java/io/trino/server/protocol/JsonEncodingUtils.java index 57c671267ed5..8cc8ee65bdc3 100644 --- a/core/trino-main/src/main/java/io/trino/server/protocol/JsonEncodingUtils.java +++ b/core/trino-main/src/main/java/io/trino/server/protocol/JsonEncodingUtils.java @@ -124,10 +124,14 @@ public static void writePagesToJsonGenerator(ConnectorSession connectorSession, generator.writeStartArray(); for (Page page : pages) { + Block[] blocks = new Block[sourcePageChannels.length]; + for (int i = 0; i < sourcePageChannels.length; i++) { + blocks[i] = page.getBlock(sourcePageChannels[i]); + } for (int position = 0; position < page.getPositionCount(); position++) { generator.writeStartArray(); for (int column = 0; column < typeEncoders.length; column++) { - typeEncoders[column].encode(generator, connectorSession, page.getBlock(sourcePageChannels[column]), position); + typeEncoders[column].encode(generator, connectorSession, blocks[column], position); } generator.writeEndArray(); }