[ 
https://issues.apache.org/jira/browse/PHOENIX-7616?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tanuj Khurana reassigned PHOENIX-7616:
--------------------------------------

    Assignee: Tanuj Khurana

> NPE when there are conditional expressions on indexed columns 
> --------------------------------------------------------------
>
>                 Key: PHOENIX-7616
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-7616
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 5.3
>            Reporter: Jacob Isaac
>            Assignee: Tanuj Khurana
>            Priority: Major
>
> To reproduce the following test can be included in ConditionalTTLExpressionIT
>  
> @Test
> public void testNulls3() throws Exception {
> if (tableLevelMaxLookback != 0) {
> return;
> }
> String ttlExpression = "VAL2 = 345";
> createTable(ttlExpression);
> List<String> indexedColumns = Lists.newArrayList("VAL2"); // indexed column 
> is null
> List<String> includedColumns = Lists.newArrayList("VAL4");
> String indexName = createIndex(indexedColumns, includedColumns, false);
> String tableName = schemaBuilder.getEntityTableName();
> injectEdge();
> int rowCount = 1;
> long actual;
> try (Connection conn = DriverManager.getConnection(getUrl())) {
> populateTable(conn, rowCount);
> actual = TestUtil.getRowCount(conn, tableName, true);
> assertEquals(rowCount, actual);
> // expire the row
> updateColumns(conn, 0,
> Lists.newArrayList("VAL2", "VAL4"), Lists.newArrayList(null, null));
> actual = TestUtil.getRowCount(conn, tableName, true);
> assertEquals(1, actual);
> actual = TestUtil.getRowCountFromIndex(conn, tableName, indexName);
> assertEquals(1, actual);
> // now do a partial update over the expired row,
> int newVal =123;
> updateColumn(conn, 0, "VAL2", newVal);
> try (ResultSet rs = readRow(conn, 0)) {
> assertTrue(rs.next());
> for (String col : COLUMNS) {
> if (!col.equals("VAL2") && !col.equals("VAL4") ) {
> assertNotNull(rs.getObject(col));
> } else if (col.equals("VAL4")) {
> assertNull(rs.getObject(col));
> } else {
> assertEquals(newVal, rs.getInt("VAL2"));
> }
> }
> }
> actual = TestUtil.getRowCount(conn, tableName, true);
> assertEquals(1, actual);
> actual = TestUtil.getRowCountFromIndex(conn, tableName, indexName);
> assertEquals(1, actual);
> verifyIndexTable(tableName, indexName, conn);
> }
> }



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to