mirror of https://github.com/apache/cassandra
Avoid permission checks for masked columns when the table doesn't have any
patch by Francisco Guerrero; reviewed by Shailaja Koppu, Caleb Rackliffe, Dmitry Konstantinov for CASSANDRA-21299
This commit is contained in:
parent
4134d72a5a
commit
7c3dea92cf
|
|
@ -1,4 +1,5 @@
|
|||
6.0-alpha2
|
||||
* Avoid permission checks for masked columns when the table doesn't have any (CASSANDRA-21299)
|
||||
* Reduce allocations and array copies due to buffer resizing in LocalDataResponse during row serialization (CASSANDRA-21285)
|
||||
* Implement a guardrail for client driver versions (CASSANDRA-21146)
|
||||
* Enable IAuthenticator to declare supported and alterable role options (CASSANDRA-20834)
|
||||
|
|
|
|||
|
|
@ -321,7 +321,8 @@ public class SelectStatement implements CQLStatement.SingleKeyspaceCqlStatement,
|
|||
for (Function function : getFunctions())
|
||||
state.ensurePermission(Permission.EXECUTE, function);
|
||||
|
||||
if (!state.hasTablePermission(table, Permission.UNMASK) &&
|
||||
if (table.hasMaskedColumns() &&
|
||||
!state.hasTablePermission(table, Permission.UNMASK) &&
|
||||
!state.hasTablePermission(table, Permission.SELECT_MASKED))
|
||||
{
|
||||
List<ColumnMetadata> queriedMaskedColumns = table.columns()
|
||||
|
|
|
|||
|
|
@ -223,6 +223,9 @@ public class TableMetadata implements SchemaElement
|
|||
public final List<ColumnMetadata> columnsWithConstraints;
|
||||
public final List<ColumnMetadata> notNullColumns;
|
||||
|
||||
// remember whether there are masked columns or not
|
||||
private final boolean hasMaskedColumns;
|
||||
|
||||
protected TableMetadata(Builder builder)
|
||||
{
|
||||
flags = Sets.immutableEnumSet(builder.flags);
|
||||
|
|
@ -285,6 +288,7 @@ public class TableMetadata implements SchemaElement
|
|||
|
||||
List<ColumnMetadata> columnsWithConstraints = new ArrayList<>();
|
||||
List<ColumnMetadata> notNullColumns = new ArrayList<>();
|
||||
boolean hasMaskedColumns = false;
|
||||
|
||||
for (ColumnMetadata column : this.columns())
|
||||
{
|
||||
|
|
@ -295,7 +299,10 @@ public class TableMetadata implements SchemaElement
|
|||
notNullColumns.add(column);
|
||||
|
||||
}
|
||||
if (column.isMasked())
|
||||
hasMaskedColumns = true;
|
||||
}
|
||||
this.hasMaskedColumns = hasMaskedColumns;
|
||||
this.columnsWithConstraints = columnsWithConstraints;
|
||||
this.notNullColumns = notNullColumns;
|
||||
}
|
||||
|
|
@ -584,12 +591,7 @@ public class TableMetadata implements SchemaElement
|
|||
*/
|
||||
public boolean hasMaskedColumns()
|
||||
{
|
||||
for (ColumnMetadata column : columns.values())
|
||||
{
|
||||
if (column.isMasked())
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return hasMaskedColumns;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue