diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java
index d6ea457..2c430b1 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java
@@ -613,14 +613,14 @@
                 if (selectivityAnnotation != null) {
                     sel = selectivityAnnotation.getSelectivity();
                 } else {
-                    if (leafInput.getOperatorTag().equals(LogicalOperatorTag.SELECT)) {
-                        selOp = (SelectOperator) joinEnum.getStatsHandle().findSelectOpWithExpr(leafInput, afce);
-                        if (selOp == null) {
+                    selOp = (SelectOperator) joinEnum.getStatsHandle().findSelectOpWithExpr(leafInput, afce);
+                    if (selOp == null) {
+                        if (leafInput.getOperatorTag().equals(LogicalOperatorTag.SELECT)) {
                             selOp = (SelectOperator) leafInput;
+                        } else {
+                            selOp = new SelectOperator(new MutableObject<>(afce));
+                            selOp.getInputs().add(new MutableObject<>(leafInput));
                         }
-                    } else {
-                        selOp = new SelectOperator(new MutableObject<>(afce));
-                        selOp.getInputs().add(new MutableObject<>(leafInput));
                     }
                     sel = joinEnum.getStatsHandle().findSelectivityForThisPredicate(selOp, afce,
                             chosenIndex.getIndexType().equals(DatasetConfig.IndexType.ARRAY)
diff --git a/asterixdb/asterix-app/src/test/resources/cc-analyze.conf b/asterixdb/asterix-app/src/test/resources/cc-analyze.conf
index 16fa0ae..93a4d15 100644
--- a/asterixdb/asterix-app/src/test/resources/cc-analyze.conf
+++ b/asterixdb/asterix-app/src/test/resources/cc-analyze.conf
@@ -54,3 +54,4 @@
 log.level = INFO
 compiler.groupmemory=64MB
 storage.buffercache.pagesize=32KB
+compiler.internal.sanitycheck=true
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_add/object_add.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_add/object_add.7.query.sqlpp
index 71f6974..c593461 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_add/object_add.7.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_add/object_add.7.query.sqlpp
@@ -18,7 +18,10 @@
  */
 
 // For OBJECT_ADD.
+// ASTERIXDB-3522 disable parallel sort. enable when fixed
+
 USE     TestDataverse;
+set `compiler.sort.parallel` "false";
 LET     openUValues = (
           FROM    UsersOpen U2
           WHERE   U2._id = 4
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_put/object_put.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_put/object_put.7.query.sqlpp
index 52943a0..8525e24 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_put/object_put.7.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/object_put/object_put.7.query.sqlpp
@@ -18,7 +18,10 @@
  */
 
 // For OBJECT_PUT.
+// ASTERIXDB-3522 disable parallel sort. enable when fixed
+
 USE     TestDataverse;
+set `compiler.sort.parallel` "false";
 LET     openUValues = (
           FROM    UsersOpen U2
           WHERE   U2._id = 4
