[ https://issues.apache.org/jira/browse/PHOENIX-5750?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Xinyi Yan updated PHOENIX-5750: ------------------------------- Fix Version/s: 4.16.0 > 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.15.0, 4.14.3 > Reporter: Swaroopa Kadam > Assignee: Swaroopa Kadam > Priority: Major > Fix For: 5.1.0, 4.15.1, 4.16.0 > > Attachments: PHOENIX-5750.4.x-HBase-1.3.v1.patch, > PHOENIX-5750.4.x-HBase-1.3.v2.patch > > Time Spent: 0.5h > Remaining Estimate: 0h > > {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)