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:10:04 UTC

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

    [ https://issues.apache.org/jira/browse/PHOENIX-2139?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14637887#comment-14637887 ] 

James Taylor edited comment on PHOENIX-2139 at 7/22/15 11:09 PM:
-----------------------------------------------------------------

[~samarthjain] - how about a quick review? Or [~mujtabachohan] - can you confirm too that this fixes the sqlline error we're seeing?


was (Author: jamestaylor):
[~samarthjain] - how about a quick review?

> 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
>            Assignee: James Taylor
>         Attachments: PHOENIX-2139.patch
>
>
> 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)