You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Pavel Pereslegin (Jira)" <ji...@apache.org> on 2023/03/31 07:57:00 UTC

[jira] [Created] (IGNITE-19176) Sql. Unexpected DML results with explicit TX and single column table.

Pavel Pereslegin created IGNITE-19176:
-----------------------------------------

             Summary: 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


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)