[
https://issues.apache.org/jira/browse/PHOENIX-2278?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
James Taylor updated PHOENIX-2278:
----------------------------------
Labels: verify (was: )
> Query using row value constructor on all pk columns not working correctly for
> fixed width pk column
> ---------------------------------------------------------------------------------------------------
>
> Key: PHOENIX-2278
> URL: https://issues.apache.org/jira/browse/PHOENIX-2278
> Project: Phoenix
> Issue Type: Bug
> Reporter: Samarth Jain
> Labels: verify
> Fix For: 4.8.0
>
>
> This likely has to do with the padding of the fixed width PK column. If I
> change the value of tenant_id column from "tenant1" to "tenant1tenant12" (15
> characters), query passes.
> {code}
> @Test
> public void testRowValueConstructorWithFixedWidthTrailingPK() throws
> Exception {
> String baseTable = "testIndexesOnTenantViews".toUpperCase();
> long ts = nextTimestamp();
> try (Connection conn = getConnection(ts)) {
> conn.createStatement().execute("CREATE TABLE " + baseTable + "
> (PK2 DATE NOT NULL, PK3 INTEGER NOT NULL, TENANT_ID CHAR(15) NOT NULL, KV1
> VARCHAR, KV2 VARCHAR, KV3 VARCHAR CONSTRAINT PK PRIMARY KEY(PK2, PK3,
> TENANT_ID))");
> }
> Date upsertedDate = new Date(5);
> String tenantId = "tenant1";
> try (Connection conn = getConnection(nextTimestamp())) {
> PreparedStatement stmt = conn.prepareStatement("UPSERT INTO " +
> baseTable + " (TENANT_ID, PK2, PK3, KV1, KV2, KV3) VALUES (?, ?, ?, ?, ?,
> ?)");
> stmt.setString(1, tenantId);
> stmt.setDate(2, upsertedDate);
> stmt.setInt(3, 33);
> stmt.setString(4, "KV1");
> stmt.setString(5, "KV2");
> stmt.setString(6, "KV33");
> stmt.executeUpdate();
> conn.commit();
> conn.prepareStatement("UPSERT INTO " + baseTable + " (TENANT_ID,
> PK2, PK3, KV1, KV2, KV3) VALUES (?, ?, ?, ?, ?, ?)");
> stmt.setString(1, tenantId);
> stmt.setDate(2, upsertedDate);
> stmt.setInt(3, 44);
> stmt.setString(4, "KV11");
> stmt.setString(5, "KV22");
> stmt.setString(6, "KV44");
> stmt.executeUpdate();
> conn.commit();
> }
>
> // Verify that data can be queried using tenant view and tenant view
> index
> try (Connection conn = getConnection(nextTimestamp())) {
> // Query the tenant view
> PreparedStatement stmt = conn.prepareStatement("SELECT * FROM "
> + baseTable + " WHERE (PK2, KV3, TENANT_ID) IN ((?, ?, ?), (?, ?, ?))");
> stmt.setDate(1, upsertedDate);
> stmt.setString(2, "KV33");
> stmt.setString(3, tenantId);
> stmt.setDate(4, upsertedDate);
> stmt.setString(5, "KV44");
> stmt.setString(6, tenantId);
> ResultSet rs = stmt.executeQuery();
> assertTrue(rs.next());
> assertTrue(rs.next());
> assertFalse(rs.next());
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)