You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "James Taylor (JIRA)" <ji...@apache.org> on 2015/07/23 01:08:04 UTC

[jira] [Created] (PHOENIX-2139) LIKE '%' is not filtering out null columns

James Taylor created PHOENIX-2139:
-------------------------------------

             Summary: LIKE '%' is not filtering out null columns
                 Key: PHOENIX-2139
                 URL: https://issues.apache.org/jira/browse/PHOENIX-2139
             Project: Phoenix
          Issue Type: Bug
            Reporter: James Taylor


Found based on PhoenixDatabaseMetaData.getColumns() not filtering when column name is null.

This test should pass:
{code}
    @Test
    public void testLikeEverythingExpression() throws Exception {
        Connection conn = DriverManager.getConnection(getUrl());
        String ddl = "CREATE TABLE t (k1 VARCHAR, k2 VARCHAR, CONSTRAINT pk PRIMARY KEY (k1,k2))";
        conn.createStatement().execute(ddl);
        conn.createStatement().execute("UPSERT INTO t VALUES('aa','bb')");
        conn.createStatement().execute("UPSERT INTO t VALUES('ab','bc')");
        conn.createStatement().execute("UPSERT INTO t VALUES(null,'cc')");
        conn.createStatement().execute("UPSERT INTO t VALUES('dd',null)");
        conn.commit();
        
        ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM t WHERE k1 LIKE '%'");
        assertTrue(rs.next());
        assertEquals("aa", rs.getString(1));
        assertEquals("bb", rs.getString(2));
        assertTrue(rs.next());
        assertEquals("ab", rs.getString(1));
        assertEquals("bc", rs.getString(2));
        assertTrue(rs.next());
        assertEquals("dd", rs.getString(1));
        assertEquals(null, rs.getString(2));
        assertFalse(rs.next());
        
        rs = conn.createStatement().executeQuery("SELECT * FROM t WHERE k2 LIKE '%'");
        assertTrue(rs.next());
        assertEquals(null, rs.getString(1));
        assertEquals("cc", rs.getString(2));
        assertTrue(rs.next());
        assertEquals("aa", rs.getString(1));
        assertEquals("bb", rs.getString(2));
        assertTrue(rs.next());
        assertEquals("ab", rs.getString(1));
        assertEquals("bc", rs.getString(2));
        assertFalse(rs.next());
        
        conn.close();
    }
{code}



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