Swaroopa Kadam created PHOENIX-5750: ---------------------------------------
Summary: Upsert on immutable table fails with AccessDeniedException Key: PHOENIX-5750 URL: https://issues.apache.org/jira/browse/PHOENIX-5750 Project: Phoenix Issue Type: Bug Affects Versions: 4.14.3, 4.15.0 Reporter: Swaroopa Kadam Assignee: Swaroopa Kadam Fix For: 5.1.0, 4.15.1 {code:java} // code placeholder In TableDDLPermissionsIT @Test public void testUpsertIntoImmutableTable() throws Throwable { startNewMiniCluster(); final String schema = "TEST_INDEX_VIEW"; final String tableName = "TABLE_DDL_PERMISSION_IT"; final String phoenixTableName = schema + "." + tableName; grantSystemTableAccess(); try { superUser1.runAs(new PrivilegedExceptionAction<Void>() { @Override public Void run() throws Exception { try { verifyAllowed(createSchema(schema), superUser1); verifyAllowed(onlyCreateTable(phoenixTableName), superUser1); } catch (Throwable e) { if (e instanceof Exception) { throw (Exception)e; } else { throw new Exception(e); } } return null; } }); if (isNamespaceMapped) { grantPermissions(unprivilegedUser.getShortName(), schema, Action.WRITE, Action.READ,Action.EXEC); } // we should be able to read the data from another index as well to which we have not given any access to // this user verifyAllowed(upsertRowsIntoTable(phoenixTableName), unprivilegedUser); } finally { revokeAll(); } } in BasePermissionsIT: AccessTestAction onlyCreateTable(final String tableName) throws SQLException { return new AccessTestAction() { @Override public Object run() throws Exception { try (Connection conn = getConnection(); Statement stmt = conn.createStatement()) { assertFalse(stmt.execute("CREATE IMMUTABLE TABLE " + tableName + "(pk INTEGER not null primary key, data VARCHAR, val integer)")); } return null; } }; } AccessTestAction upsertRowsIntoTable(final String tableName) throws SQLException { return new AccessTestAction() { @Override public Object run() throws Exception { try (Connection conn = getConnection()) { try (PreparedStatement pstmt = conn.prepareStatement( "UPSERT INTO " + tableName + " values(?, ?, ?)")) { for (int i = 0; i < NUM_RECORDS; i++) { pstmt.setInt(1, i); pstmt.setString(2, Integer.toString(i)); pstmt.setInt(3, i); assertEquals(1, pstmt.executeUpdate()); } } conn.commit(); } return null; } }; }{code} -- This message was sent by Atlassian Jira (v8.3.4#803005)