private void checkJoinEstimateCosts(JoinOptimizer jo, LogicalJoinNode equalsJoinNode) { int card1s[] = new int[20]; int card2s[] = new int[card1s.length]; double cost1s[] = new double[card1s.length]; double cost2s[] = new double[card1s.length]; Object[] ret; // card1s linear others constant for (int i = 0; i < card1s.length; ++i) { card1s[i] = 3 * i + 1; card2s[i] = 5; cost1s[i] = cost2s[i] = 5.0; } double stats[] = getRandomJoinCosts(jo, equalsJoinNode, card1s, card2s, cost1s, cost2s); ret = SystemTestUtil.checkLinear(stats); Assert.assertEquals(Boolean.TRUE, ret[0]); // card2s linear others constant for (int i = 0; i < card1s.length; ++i) { card1s[i] = 4; card2s[i] = 3 * i + 1; cost1s[i] = cost2s[i] = 5.0; } stats = getRandomJoinCosts(jo, equalsJoinNode, card1s, card2s, cost1s, cost2s); ret = SystemTestUtil.checkLinear(stats); Assert.assertEquals(Boolean.TRUE, ret[0]); // cost1s linear others constant for (int i = 0; i < card1s.length; ++i) { card1s[i] = card2s[i] = 7; cost1s[i] = 5.0 * (i + 1); cost2s[i] = 3.0; } stats = getRandomJoinCosts(jo, equalsJoinNode, card1s, card2s, cost1s, cost2s); ret = SystemTestUtil.checkLinear(stats); Assert.assertEquals(Boolean.TRUE, ret[0]); // cost2s linear others constant for (int i = 0; i < card1s.length; ++i) { card1s[i] = card2s[i] = 9; cost1s[i] = 5.0; cost2s[i] = 3.0 * (i + 1); } stats = getRandomJoinCosts(jo, equalsJoinNode, card1s, card2s, cost1s, cost2s); ret = SystemTestUtil.checkLinear(stats); Assert.assertEquals(Boolean.TRUE, ret[0]); // everything linear for (int i = 0; i < card1s.length; ++i) { card1s[i] = 2 * (i + 1); card2s[i] = 9 * i + 1; cost1s[i] = 5.0 * i + 2; cost2s[i] = 3.0 * i + 1; } stats = getRandomJoinCosts(jo, equalsJoinNode, card1s, card2s, cost1s, cost2s); ret = SystemTestUtil.checkQuadratic(stats); Assert.assertEquals(Boolean.TRUE, ret[0]); }