You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Daniel Wong (Jira)" <ji...@apache.org> on 2020/05/27 21:24:00 UTC
[jira] [Created] (PHOENIX-5924) RVC Offset does not handle variable
length fields exclusive scan boundary correctly
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)