[ https://issues.apache.org/jira/browse/IGNITE-19693?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kirill Tkalenko reassigned IGNITE-19693: ---------------------------------------- Assignee: Kirill Tkalenko > getAll does not preserve order and does not return nulls for missing keys > ------------------------------------------------------------------------- > > Key: IGNITE-19693 > URL: https://issues.apache.org/jira/browse/IGNITE-19693 > Project: Ignite > Issue Type: Bug > Components: cache > Affects Versions: 3.0.0-beta1 > Reporter: Pavel Tupitsyn > Assignee: Kirill Tkalenko > Priority: Blocker > Labels: ignite-3 > Fix For: 3.0.0-beta2 > > > * getAll does not preserve element order. > * getAll does not return nulls for non-existent records. > This is specified in Javadoc in > [RecordView|https://github.com/apache/ignite-3/blob/0c68cbe3f016e508bd9d53ce5320c88acba1acff/modules/api/src/main/java/org/apache/ignite/table/RecordView.java#L56-L60]: > {code} > Records with all columns filled from the table. The order of collection > elements is guaranteed to be the same as the order of {@code keyRecs}. If a > record does not exist, the element at the corresponding index of the > resulting collection is null. > {code} > Without those properties, *getAll* is not very useful: it is hard to > correspond the results with the original collection. > h2. Reproducer > Add the following code to *ItTableApiContractTest*: > {code:java} > @Test > public void testGetAll() { > RecordView<Tuple> tbl = > ignite.tables().table(TABLE_NAME).recordView(); > // recordView.insert(tx, Tuple.create().set("name", > "k1").set("balance", 1)); > var recs = IntStream.range(1, 50) > .mapToObj(i -> Tuple.create().set("name", "id_" + i * > 2).set("balance", i * 2)) > .collect(Collectors.toList()); > tbl.upsertAll(null, recs); > var keys = IntStream.range(1, 100) > .mapToObj(i -> Tuple.create().set("name", "id_" + i)) > .collect(Collectors.toList()); > List<Tuple> res = (List<Tuple>) tbl.getAll(null, keys); > assertNull(res.get(0)); > assertEquals(2L, res.get(1).longValue(0)); > assertEquals(100, res.size()); > } > {code} > Tuples are returned in random order, and only 50 of them, not 100 -- This message was sent by Atlassian Jira (v8.20.10#820010)