asolimando commented on code in PR #3264:
URL: https://github.com/apache/calcite/pull/3264#discussion_r1230002190


##########
core/src/test/java/org/apache/calcite/test/RelMetadataTest.java:
##########
@@ -273,6 +273,104 @@ final RelMetadataFixture sql(String sql) {
                 / (DEPT_SIZE + EMP_SIZE)));
   }
 
+  // ----------------------------------------------------------------------
+  // Tests for getForeignKeys
+  // ----------------------------------------------------------------------
+
+  @Test void testForeignKeysAggregateCallEmpty() {
+    sql("select hiredate, sum(sal) from emp group by hiredate")
+        .assertForeignKeysAreEmpty();
+  }
+
+  @Test void testForeignKeysAggregateKeyEmpty() {
+    sql("select hiredate, sum(sal) from emp group by hiredate")
+        .assertForeignKeysAreEmpty();
+  }
+
+  @Test void testForeignKeysAggregateKey() {
+    sql("select count(sal), deptno from emp group by deptno")
+        .assertForeignKeys(equalTo(bitSetOf(1)));
+  }
+
+  @Test void testForeignKeysTableOnly() {
+    sql("select deptno, ename from emp")
+        .assertForeignKeys(equalTo(bitSetOf(0)));
+  }
+
+  @Test void testForeignKeysTableOnlyEmpty() {
+    sql("select ename, job from emp")
+        .assertForeignKeysAreEmpty();
+  }
+
+  @Test void testForeignKeysExpressionEmpty() {
+    sql("select deptno + 1, ename from emp")
+        .assertForeignKeysAreEmpty();
+  }
+
+  @Test void testForeignKeysFilter() {
+    sql("select deptno, ename from emp where ename = 'lucy'")
+        .assertForeignKeys(equalTo(bitSetOf(0)));
+  }
+
+  @Test void testForeignKeysInnerJoinLeft() {
+    sql("select emp.deptno, dept.name, emp.deptno from emp, dept")
+        .assertForeignKeys(equalTo(bitSetOf(0, 2)));
+  }
+
+  @Test void testForeignKeysInnerJoinRight() {
+    sql("select dept.name, emp.deptno, emp.deptno from dept, emp")
+        .assertForeignKeys(equalTo(bitSetOf(1, 2)));
+  }
+
+  @Test void testForeignKeysJoinLeftOuter() {
+    sql("select name as dname, emp.deptno, dept.name from emp left outer join 
dept"
+        + " on emp.deptno = dept.deptno")
+        .assertForeignKeys(equalTo(bitSetOf(1)));
+  }
+
+  @Test void testForeignKeysJoinRightOuter() {
+    sql("select name as dname, emp.deptno, dept.name, emp.deptno from dept 
right outer join emp"
+        + " on emp.deptno = dept.deptno")
+        .assertForeignKeys(equalTo(bitSetOf(1, 3)));
+  }
+
+  @Test void testForeignKeysJoinOuterEmpty() {
+    sql("select name as dname, emp.deptno, dept.name from dept left outer join 
emp"
+        + " on emp.deptno = dept.deptno")
+        .assertForeignKeysAreEmpty();
+  }
+
+  @Test void testForeignKeysJoinFullOuterEmpty() {
+    sql("select name as dname, emp.deptno from emp full outer join dept"
+        + " on emp.deptno = dept.deptno")
+        .assertForeignKeysAreEmpty();
+  }
+
+  @Test void testForeignKeysJoinAggregateFilter() {
+    sql("select dept.name, emp_agg.deptno, emp_agg.ename "
+        + "from dept "
+        + "right join "
+        + "(select count(sal), deptno, ename from emp group by deptno, ename) 
emp_agg "
+        + "on dept.deptno = emp_agg.deptno "
+        + "where emp_agg.ename = 'job'")
+        .assertForeignKeys(equalTo(bitSetOf(1)));
+  }
+
+  @Test void testForeignKeysValuesEmpty() {
+    sql("values(1,2,3)")
+        .assertForeignKeysAreEmpty();
+  }
+
+  @Test void testForeignKeysUnion() {

Review Comment:
   Can we have tests for `intersect` and `minus` here?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to