You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Kadir Ozdemir (Jira)" <ji...@apache.org> on 2022/02/03 23:42:00 UTC

[jira] [Created] (PHOENIX-6644) Column name based Result Set getter issue with view indexes

Kadir Ozdemir created PHOENIX-6644:
--------------------------------------

             Summary: Column name based Result Set getter issue with view indexes
                 Key: PHOENIX-6644
                 URL: https://issues.apache.org/jira/browse/PHOENIX-6644
             Project: Phoenix
          Issue Type: Improvement
    Affects Versions: 5.1.2
            Reporter: Kadir Ozdemir


If a column used to define the view is also a projected column in a select clause, a view index is chosen by the Phoenix query optimizer for the select statement, and the value of the projected column is retrieved using the column name based ResultSet getter, Phoenix returns ColumnNotFoundException.

For example, the last assertEquals fails with
{quote}org.apache.phoenix.schema.ColumnNotFoundException: ERROR 504 (42703): Undefined column. columnName=V1
{quote}
in the following integration test:
{code:java}
@Test
public void test() throws Exception {
    try (Connection conn = DriverManager.getConnection(getUrl())) {
        conn.createStatement().execute("create table T "+
                " (id INTEGER not null primary key, v1 varchar, v2 varchar, v3 varchar)");
        conn.createStatement().execute("CREATE VIEW V AS SELECT * FROM T WHERE v1 = 'a'");
        conn.createStatement().execute("CREATE INDEX I ON V (v2) INCLUDE (v3)");
        conn.createStatement().execute("upsert into V values (1, 'a', 'ab', 'abc')");
        conn.commit();
        ResultSet rs = conn.createStatement().executeQuery("SELECT v1, v3 from V WHERE v2  = 'ab'");
        assertTrue(rs.next());
        assertEquals("a", rs.getString(1));
        assertEquals("a", rs.getString("v1"));
    }
} {code}
Without the view index, the above test passes.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)