From d0fbf9eebda32513b0c7e6d5fbb98feb4073b760 Mon Sep 17 00:00:00 2001 From: Tglman Date: Fri, 16 Aug 2024 17:03:18 +0100 Subject: [PATCH] fix: corrected ORestricted case for count operations in new query engine --- .../core/sql/executor/OSelectExecutionPlanner.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/com/orientechnologies/orient/core/sql/executor/OSelectExecutionPlanner.java b/core/src/main/java/com/orientechnologies/orient/core/sql/executor/OSelectExecutionPlanner.java index 9c41dc8317e..dcddbc8fb5e 100755 --- a/core/src/main/java/com/orientechnologies/orient/core/sql/executor/OSelectExecutionPlanner.java +++ b/core/src/main/java/com/orientechnologies/orient/core/sql/executor/OSelectExecutionPlanner.java @@ -17,6 +17,7 @@ import com.orientechnologies.orient.core.index.OIndexDefinition; import com.orientechnologies.orient.core.metadata.OMetadataInternal; import com.orientechnologies.orient.core.metadata.schema.OClass; +import com.orientechnologies.orient.core.metadata.schema.OImmutableClass; import com.orientechnologies.orient.core.metadata.schema.OProperty; import com.orientechnologies.orient.core.metadata.schema.OSchema; import com.orientechnologies.orient.core.metadata.schema.OType; @@ -653,13 +654,17 @@ private boolean handleHardwiredCountOnClass( private boolean securityPoliciesExistForClass(OIdentifier targetClass, OCommandContext ctx) { ODatabaseDocumentInternal db = (ODatabaseDocumentInternal) ctx.getDatabase(); OSecurityInternal security = db.getSharedContext().getSecurity(); - OClass clazz = - db.getMetadata() - .getImmutableSchemaSnapshot() - .getClass(targetClass.getStringValue()); // normalize class name case + OImmutableClass clazz = + (OImmutableClass) + db.getMetadata() + .getImmutableSchemaSnapshot() + .getClass(targetClass.getStringValue()); // normalize class name case if (clazz == null) { return false; } + if (clazz.isRestricted()) { + return true; + } return security.isReadRestrictedBySecurityPolicy( (ODatabaseSession) db, "database.class." + clazz.getName()); }