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:09:04 UTC
[jira] [Updated] (PHOENIX-2139) LIKE '%' is not filtering out null
columns
[ https://issues.apache.org/jira/browse/PHOENIX-2139?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
James Taylor updated PHOENIX-2139:
----------------------------------
Attachment: PHOENIX-2139.patch
[~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)