Skip to content

Commit 2ae8d98

Browse files
committed
Add MemoryPagesStore test
1 parent 5552826 commit 2ae8d98

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

plugin/trino-memory/src/test/java/io/trino/plugin/memory/TestMemoryPagesStore.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
import io.trino.spi.Page;
2222
import io.trino.spi.TrinoException;
2323
import io.trino.spi.block.BlockBuilder;
24+
import io.trino.spi.block.ByteArrayBlock;
25+
import io.trino.spi.block.IntArrayBlock;
26+
import io.trino.spi.block.RunLengthEncodedBlock;
2427
import io.trino.spi.connector.ConnectorInsertTableHandle;
2528
import io.trino.spi.connector.ConnectorOutputTableHandle;
2629
import io.trino.spi.connector.ConnectorPageSink;
@@ -33,7 +36,9 @@
3336
import java.util.OptionalDouble;
3437
import java.util.OptionalLong;
3538

39+
import static io.trino.block.BlockAssertions.createLongSequenceBlock;
3640
import static io.trino.spi.type.BigintType.BIGINT;
41+
import static io.trino.spi.type.BooleanType.BOOLEAN;
3742
import static io.trino.spi.type.IntegerType.INTEGER;
3843
import static io.trino.testing.TestingConnectorSession.SESSION;
3944
import static io.trino.testing.TestingPageSinkId.TESTING_PAGE_SINK_ID;
@@ -99,6 +104,29 @@ public void testTryToReadFromEmptyTable()
99104
.hasMessageMatching("Expected to find.*");
100105
}
101106

107+
@Test
108+
public void testReadBackExtraColumns()
109+
{
110+
createTable(0L, 0L);
111+
int positions = 1024;
112+
// insert single BIGINT column page
113+
insertToTable(0L, new Page(createLongSequenceBlock(0, positions)), 0L);
114+
// Read back as BIGINT, INTEGER, BOOLEAN expecting the INTEGER and BOOLEAN columns to be RLE encoded
115+
List<Page> readBack = pagesStore.getPages(0L, 0, 1, new int[] {0, 1, 2}, List.of(BIGINT, INTEGER, BOOLEAN), positions, OptionalLong.empty(), OptionalDouble.empty());
116+
assertThat(readBack).hasSize(1);
117+
Page readPage = readBack.getFirst();
118+
assertThat(readPage.getChannelCount()).isEqualTo(3);
119+
assertThat(readPage.getPositionCount()).isEqualTo(positions);
120+
assertThat(readPage.getBlock(1))
121+
.isInstanceOf(RunLengthEncodedBlock.class);
122+
assertThat(readPage.getBlock(1).getUnderlyingValueBlock())
123+
.isInstanceOf(IntArrayBlock.class);
124+
assertThat(readPage.getBlock(2))
125+
.isInstanceOf(RunLengthEncodedBlock.class);
126+
assertThat(readPage.getBlock(2).getUnderlyingValueBlock())
127+
.isInstanceOf(ByteArrayBlock.class);
128+
}
129+
102130
@Test
103131
public void testCleanUp()
104132
{

0 commit comments

Comments
 (0)