Daniel Wong created PHOENIX-5924: ------------------------------------ Summary: RVC Offset does not handle variable length fields exclusive scan boundary correctly Key: PHOENIX-5924 URL: https://issues.apache.org/jira/browse/PHOENIX-5924 Project: Phoenix Issue Type: Bug Reporter: Daniel Wong Assignee: Daniel Wong
The way exclusive boundary was handled by incrementing the key for variable length fields is incorrect in the scan boundary. In the following case we incrementing incorrectly from 0x490049 -> 0x490050 ('1','1' -> '1','2') We should increment from 0x490049 -> 0x49004900 ('1','1' -> '1','1'\x00) @Test public void testScenario() throws Exception \{ String TEST_DDL = "CREATE TABLE IF NOT EXISTS TEST_SCHEMA (\n" + " ORGANIZATION_ID VARCHAR(15), \n" + " TEST_ID VARCHAR(15), \n" + " CREATED_DATE DATE, \n" + " LAST_UPDATE DATE\n" + " CONSTRAINT TEST_SCHEMA_PK PRIMARY KEY (ORGANIZATION_ID, TEST_ID) \n" + ")"; try (Statement statement = conn.createStatement()) { statement.execute(TEST_DDL); } //setup List<String> upserts = new ArrayList<>(); upserts.add("UPSERT INTO TEST_SCHEMA(ORGANIZATION_ID,TEST_ID) VALUES ('1','1')"); upserts.add("UPSERT INTO TEST_SCHEMA(ORGANIZATION_ID,TEST_ID) VALUES ('1','10')"); upserts.add("UPSERT INTO TEST_SCHEMA(ORGANIZATION_ID,TEST_ID) VALUES ('2','2')"); for(String sql : upserts) \{ try (Statement statement = conn.createStatement()) { statement.execute(sql); } } conn.commit(); String query1 = "SELECT * FROM TEST_SCHEMA"; String query2 = "SELECT * FROM TEST_SCHEMA OFFSET (ORGANIZATION_ID,TEST_ID) = ('1','1')"; try (Statement statement = conn.createStatement() ; ResultSet rs1 = statement.executeQuery(query1) ) \{ TestUtil.printResultSet(rs1); } try (Statement statement = conn.createStatement() ; ResultSet rs2 = statement.executeQuery(query2) ) \{ TestUtil.printResultSet(rs2); } } -- This message was sent by Atlassian Jira (v8.3.4#803005)