[ https://issues.apache.org/jira/browse/IGNITE-19176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17708511#comment-17708511 ]
Pavel Pereslegin commented on IGNITE-19176: ------------------------------------------- The problem seems to be related only to the SCAN inside the RW transaction (we create an implicit RO transaction for the SELECT and it works fine). In IGNITE-17859 a condition (resolvedReadResult.hasValue()) was added to PartitionReplicaListener#processScanRetrieveBatchAction {code:java} if (resolvedReadResult != null && resolvedReadResult.hasValue()) { batchRows.add(resolvedReadResult); } {code} If you remove it, then the above test passes. > Sql. Unexpected DML results with explicit TX and single column table. > --------------------------------------------------------------------- > > Key: IGNITE-19176 > URL: https://issues.apache.org/jira/browse/IGNITE-19176 > Project: Ignite > Issue Type: Bug > Components: sql > Reporter: Pavel Pereslegin > Priority: Minor > Labels: ignite-3 > > When we try to insert values into a single column table using explicit > transaction, those values are not visible in the same transaction. > Example > {code:java} > create table test(id int primary key) // single column table > {code} > {code:java} > // case 1 > start explicit tx > insert into test values (0), (1) > select count(*) from test // returns 0 instead of 2 > finish tx{code} > {code:java} > // case 2 > start explicit tx > insert into test values (0), (1) > commit tx > start explicit tx > select count(*) from test // returns 0 instead of 2 > finish tx{code} > If we do this using implicit transaction - all works fine. > If we add a column to the table, everything will work fine. > Reproducer > {code:java} > @Test > public void test() { > sql("CREATE TABLE myTbl (id INT PRIMARY KEY) WITH REPLICAS=2, > PARTITIONS=10"); > Ignite ignite = CLUSTER_NODES.get(0); > ignite.transactions().runInTransaction(tx -> { > sql(tx, "INSERT INTO myTbl VALUES (0), (1)"); > List<List<Object>> rows = sql(tx, "SELECT count(*) from myTbl"); > assertEquals(2L, rows.get(0).get(0)); > }); > } {code} > -- This message was sent by Atlassian Jira (v8.20.10#820010)