Samarth Jain created PHOENIX-1354:
-------------------------------------

             Summary: Upsert select not inserting all the rows when using row 
value constructors
                 Key: PHOENIX-1354
                 URL: https://issues.apache.org/jira/browse/PHOENIX-1354
             Project: Phoenix
          Issue Type: Bug
    Affects Versions: 5.0.0, 4.2
            Reporter: Samarth Jain
            Assignee: James Taylor
            Priority: Critical


{code}
@Test
    public void testUpsertSelectRVC() throws Exception {
        String cursorTableDDL = "CREATE TABLE IF NOT EXISTS " + 
                "CURSOR_STORAGE" +  " (\n" +  
                "TENANT_ID VARCHAR(15) NOT NULL\n," +  
                "QUERY_ID VARCHAR(15) NOT NULL,\n" +
                "CURSOR_ORDER BIGINT NOT NULL,\n" + 
                "CURSORID VARBINARY " + 
                "CONSTRAINT CURSOR_TABLE_PK PRIMARY KEY (TENANT_ID, QUERY_ID, 
CURSOR_ORDER)) "+
                "SALT_BUCKETS = 4, TTL=86400";
        String baseDataTableDDL = "CREATE TABLE IF NOT EXISTS " +
                "HISTORY_TABLE" + " (\n" + 
                "TENANT_ID CHAR(15) NOT NULL,\n" +
                "PARENT_ID CHAR(15) NOT NULL,\n" + 
                "CREATED_DATE DATE NOT NULL,\n" + 
                "ENTITY_HISTORY_ID CHAR(15) NOT NULL,\n" + 
                "DATA_TYPE VARCHAR,\n" + 
                "OLDVAL_STRING VARCHAR,\n" + 
                "NEWVAL_STRING VARCHAR\n" + 
                "CONSTRAINT PK PRIMARY KEY(TENANT_ID, PARENT_ID, CREATED_DATE 
DESC, ENTITY_HISTORY_ID)) " + 
                "VERSIONS = 1";
        Properties props = new Properties();
        Connection conn = DriverManager.getConnection(getUrl(), props);
        conn.createStatement().execute(cursorTableDDL);
        conn.createStatement().execute(baseDataTableDDL);
        
        String tenantId = "00DxxxxxxxxxABC";
        String dml = "UPSERT INTO HISTORY_TABLE VALUES (?, ?, ?, ?, ?, ?, ?)";
        PreparedStatement stmt = conn.prepareStatement(dml);
        for (int i = 1; i <=5; i++) {
            stmt.setString(1, tenantId);
            stmt.setString(2, "00Pxxxxxxxxxxx" + i);
            stmt.setDate(3, new Date(i));
            stmt.setString(4, "eidXXXXXXXXXXX" + i);
            stmt.setString(5, "datatype");
            stmt.setString(6, "oldv");
            stmt.setString(7, "newv");
            stmt.executeUpdate();
        }
        conn.commit();
        
        String sequenceName = "SEQU";
        conn.createStatement().execute("CREATE SEQUENCE " + sequenceName + " 
CACHE " + Long.MAX_VALUE);
        conn.setAutoCommit(true);
        String upsertSelect = "UPSERT INTO CURSOR_STORAGE (tenant_id, query_id, 
cursor_order, cursorId) SELECT ?, ?, NEXT VALUE FOR " + sequenceName + ", 
(TENANT_ID, PARENT_ID, CREATED_DATE, ENTITY_HISTORY_ID) FROM HISTORY_TABLE";
        stmt = conn.prepareStatement(upsertSelect);
        stmt.setString(1, tenantId);
        stmt.setString(2, "cursorqueryid");
        stmt.executeUpdate();
        
        stmt = conn.prepareStatement("select cursorid from cursor_storage");
        ResultSet rs = stmt.executeQuery();
        while(rs.next()) {
            System.out.println(Base64.encodeBytes(rs.getBytes(1)));
        }
    }
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to