Index: src/test/java/org/apache/jackrabbit/jcr2spi/query/QueryTest.java
===================================================================
--- src/test/java/org/apache/jackrabbit/jcr2spi/query/QueryTest.java	(revision 1235692)
+++ src/test/java/org/apache/jackrabbit/jcr2spi/query/QueryTest.java	(working copy)
@@ -15,17 +15,22 @@
  */
 package org.apache.jackrabbit.jcr2spi.query;
 
-import org.apache.jackrabbit.test.NotExecutableException;
-import org.apache.jackrabbit.test.api.query.AbstractQueryTest;
+import java.util.ArrayList;
+import java.util.List;
 
-import javax.jcr.RepositoryException;
-import javax.jcr.NodeIterator;
-import javax.jcr.Node;
 import javax.jcr.NamespaceRegistry;
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.RepositoryException;
 import javax.jcr.query.Query;
 import javax.jcr.query.QueryResult;
-import java.util.List;
-import java.util.ArrayList;
+import javax.jcr.query.Row;
+import javax.jcr.query.RowIterator;
+
+import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.commons.JcrUtils;
+import org.apache.jackrabbit.test.NotExecutableException;
+import org.apache.jackrabbit.test.api.query.AbstractQueryTest;
 
 /**
  * <code>QueryTest</code> performs various query tests.
@@ -103,4 +108,44 @@
                         Query.JCR_SQL2);
         assertNotNull(q.execute());
     }
+
+    /**
+     * https://issues.apache.org/jira/browse/JCR-3219
+     */
+    public void testSQL2SelfJoin() throws Exception {
+        String token = "testSQL2SelfJoin-";
+        String name = token + System.currentTimeMillis();
+
+        Node n1 = superuser.getRootNode().addNode(name + "-1",
+                JcrConstants.NT_UNSTRUCTURED);
+        n1.setProperty("jcr:mimeType", "mime");
+        n1.setProperty("zeronumber", 0);
+
+        Node n2 = superuser.getRootNode().addNode(name + "-2",
+                JcrConstants.NT_UNSTRUCTURED);
+        n2.setProperty("jcr:mimeType", "mime");
+        superuser.save();
+
+        try {
+            Query q = qm
+                    .createQuery(
+                            "SELECT data.zeronumber FROM [nt:unstructured] AS data INNER JOIN [nt:unstructured] AS second ON data.[jcr:mimeType] = second.[jcr:mimeType] WHERE data.zeronumber = 0",
+                            Query.JCR_SQL2);
+            QueryResult r = q.execute();
+            RowIterator i = r.getRows();
+            while (i.hasNext()) {
+                Row n = i.nextRow();
+                System.out.println("data: " + n.getPath("data") + " second "
+                        + n.getPath("second"));
+            }
+
+        } finally {
+            for (Node del : JcrUtils.getChildNodes(superuser.getRootNode(),
+                    token + "*")) {
+                System.out.println("deleting " + del.getPath());
+                superuser.removeItem(del.getPath());
+            }
+            superuser.save();
+        }
+    }
 }
