Index: oak-jcr/pom.xml
===================================================================
--- oak-jcr/pom.xml	(revision 1413522)
+++ oak-jcr/pom.xml	(working copy)
@@ -209,8 +209,6 @@
       org.apache.jackrabbit.test.api.query.SQLJoinTest#testJoinSNS
       org.apache.jackrabbit.test.api.query.qom.ColumnTest#testExpandColumnsForNodeType
       org.apache.jackrabbit.test.api.query.qom.SelectorTest#testUnknownNodeType
-      org.apache.jackrabbit.test.api.query.qom.NodeNameTest#testReferenceLiteral
-      org.apache.jackrabbit.test.api.query.qom.NodeNameTest#testWeakReferenceLiteral
       org.apache.jackrabbit.test.api.query.qom.SameNodeJoinConditionTest#testInnerJoin
       org.apache.jackrabbit.test.api.query.qom.SameNodeJoinConditionTest#testRightOuterJoin
       org.apache.jackrabbit.test.api.query.qom.SameNodeJoinConditionTest#testLeftOuterJoin
Index: oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java
===================================================================
--- oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java	(revision 1413531)
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java	(working copy)
@@ -13,6 +13,10 @@
  */
 package org.apache.jackrabbit.oak.query.ast;
 
+import java.text.ParseException;
+
+import javax.jcr.PropertyType;
+
 import org.apache.jackrabbit.oak.api.PropertyValue;
 
 /**
@@ -45,8 +49,28 @@
         return new ColumnImpl(selectorName, propertyName, columnName);
     }
 
-    public ComparisonImpl comparison(DynamicOperandImpl operand1, Operator operator, StaticOperandImpl operand2) {
-        return new ComparisonImpl((DynamicOperandImpl) operand1, operator, (StaticOperandImpl) operand2);
+    public ComparisonImpl comparison(DynamicOperandImpl operand1,
+            Operator operator, StaticOperandImpl operand2)
+            throws ParseException {
+        verifyComparisonOperandType(operand1, operator, operand2);
+        return new ComparisonImpl(operand1, operator, operand2);
+    }
+
+    private void verifyComparisonOperandType(DynamicOperandImpl operand1,
+            Operator operator, StaticOperandImpl operand2)
+            throws ParseException {
+        if (operand1 instanceof NodeNameImpl) {
+            switch (operand2.currentValue().getType().tag()) {
+            case PropertyType.DOUBLE:
+            case PropertyType.DECIMAL:
+            case PropertyType.LONG:
+            case PropertyType.BOOLEAN:
+            case PropertyType.REFERENCE:
+            case PropertyType.WEAKREFERENCE:
+                throw new ParseException("Invalid name value type: "
+                        + operand2.currentValue().getType().tag(), 0);
+            }
+        }
     }
 
     public DescendantNodeImpl descendantNode(String selectorName, String path) {
