use of org.teiid.query.sql.symbol.Constant in project teiid by teiid.
the class TestRuleChooseDependent method testCardinalityWithKeyComplexCrit.
/**
* Tests that join side with larger cardinality will still have a lower
* cost computed because it has a criteria including a primary key
*/
@Test
public void testCardinalityWithKeyComplexCrit() throws Exception {
// override default metadata
this.metadata = RealMetadataFactory.example4();
GroupSymbol group1 = getPhysicalGroup(1, 2);
ElementSymbol g1e2 = getElementSymbol(1, 2, 2);
GroupSymbol group2 = getPhysicalGroup(3, 3);
ElementSymbol g2e1 = getElementSymbol(3, 3, 1);
ElementSymbol g2e2 = getElementSymbol(3, 3, 2);
// Join criteria
ArrayList crits = new ArrayList(1);
crits.add(new CompareCriteria(g1e2, CompareCriteria.EQ, g2e2));
Criteria atomicCrit1 = null;
Criteria crit1 = new CompareCriteria(g2e1, CompareCriteria.EQ, new Constant(new Integer(5)));
Criteria crit2 = new CompareCriteria(g2e1, CompareCriteria.EQ, new Constant(new Integer(7)));
CompoundCriteria atomicCrit2 = new CompoundCriteria(CompoundCriteria.AND, crit1, crit2);
// $NON-NLS-1$
Criteria crit3 = new MatchCriteria(g2e1, new Constant(new String("ab")));
atomicCrit2 = new CompoundCriteria(CompoundCriteria.OR, atomicCrit2, crit3);
int expected = LEFT_SIDE;
helpTestChooseSiblingAndMarkDependent(group1, atomicCrit1, group2, atomicCrit2, crits, expected);
expected = RIGHT_SIDE;
helpTestChooseSiblingAndMarkDependent(group2, atomicCrit2, group1, atomicCrit1, crits, expected);
}
use of org.teiid.query.sql.symbol.Constant in project teiid by teiid.
the class TestRuleChooseDependent method testCardinalityWithKeyNotCrit.
/**
* Tests NotCriteria in the atomic criteria
*/
@Test
public void testCardinalityWithKeyNotCrit() throws Exception {
// override default metadata
this.metadata = RealMetadataFactory.example4();
GroupSymbol group1 = getPhysicalGroup(1, 2);
ElementSymbol g1e2 = getElementSymbol(1, 2, 2);
GroupSymbol group2 = getPhysicalGroup(3, 3);
ElementSymbol g2e1 = getElementSymbol(3, 3, 1);
ElementSymbol g2e2 = getElementSymbol(3, 3, 2);
// Join criteria
ArrayList crits = new ArrayList(1);
CompareCriteria crit2 = new CompareCriteria(g1e2, CompareCriteria.EQ, g2e2);
crits.add(crit2);
Criteria atomicCrit1 = null;
Criteria atomicCrit2 = new CompareCriteria(g2e1, CompareCriteria.EQ, new Constant(new Integer(5)));
atomicCrit2 = new NotCriteria(atomicCrit2);
int expected = RIGHT_SIDE;
helpTestChooseSiblingAndMarkDependent(group1, atomicCrit1, group2, atomicCrit2, crits, expected);
expected = LEFT_SIDE;
helpTestChooseSiblingAndMarkDependent(group2, atomicCrit2, group1, atomicCrit1, crits, expected);
}
use of org.teiid.query.sql.symbol.Constant in project teiid by teiid.
the class TestRuleChooseDependent method testCardinalityWithNonKeyCrit.
/**
* Tests that join side with larger cardinality and non-key criteria
* will be made dependent
*/
@Test
public void testCardinalityWithNonKeyCrit() throws Exception {
// override default metadata
this.metadata = RealMetadataFactory.example4();
GroupSymbol group1 = getPhysicalGroup(1, 2);
ElementSymbol g1e1 = getElementSymbol(1, 2, 1);
// ElementSymbol g1e2 = getElementSymbol(1,2,2);
GroupSymbol group2 = getPhysicalGroup(3, 3);
ElementSymbol g2e1 = getElementSymbol(3, 3, 1);
ElementSymbol g2e2 = getElementSymbol(3, 3, 2);
// Join criteria
ArrayList crits = new ArrayList(1);
CompareCriteria crit2 = new CompareCriteria(g1e1, CompareCriteria.EQ, g2e1);
crits.add(crit2);
Criteria atomicCrit1 = null;
Criteria atomicCrit2 = new CompareCriteria(g2e2, CompareCriteria.EQ, new Constant(new Integer(5)));
int expected = RIGHT_SIDE;
helpTestChooseSiblingAndMarkDependent(group1, atomicCrit1, group2, atomicCrit2, crits, expected);
expected = LEFT_SIDE;
helpTestChooseSiblingAndMarkDependent(group2, atomicCrit2, group1, atomicCrit1, crits, expected);
}
use of org.teiid.query.sql.symbol.Constant in project teiid by teiid.
the class TestRuleChooseDependent method testCardinalityWithKeyComplexCrit3.
@Test
public void testCardinalityWithKeyComplexCrit3() throws Exception {
// override default metadata
this.metadata = RealMetadataFactory.example4();
GroupSymbol group1 = getPhysicalGroup(1, 2);
ElementSymbol g1e2 = getElementSymbol(1, 2, 2);
GroupSymbol group2 = getPhysicalGroup(3, 3);
ElementSymbol g2e1 = getElementSymbol(3, 3, 1);
ElementSymbol g2e2 = getElementSymbol(3, 3, 2);
// Join criteria
ArrayList crits = new ArrayList(1);
crits.add(new CompareCriteria(g1e2, CompareCriteria.EQ, g2e2));
Criteria atomicCrit1 = null;
Criteria crit1 = new CompareCriteria(g2e1, CompareCriteria.GE, new Constant(new Integer(5)));
Criteria crit2 = new CompareCriteria(g2e1, CompareCriteria.NE, new Constant(new Integer(7)));
Criteria atomicCrit2 = new CompoundCriteria(CompoundCriteria.OR, crit1, crit2);
atomicCrit2 = new NotCriteria(atomicCrit2);
Criteria crit3 = new CompareCriteria(g2e1, CompareCriteria.LE, new Constant(new Integer(25)));
atomicCrit2 = new CompoundCriteria(CompoundCriteria.AND, atomicCrit2, crit3);
int expected = LEFT_SIDE;
helpTestChooseSiblingAndMarkDependent(group1, atomicCrit1, group2, atomicCrit2, crits, expected);
expected = RIGHT_SIDE;
helpTestChooseSiblingAndMarkDependent(group2, atomicCrit2, group1, atomicCrit1, crits, expected);
}
use of org.teiid.query.sql.symbol.Constant in project teiid by teiid.
the class TestRuleChooseDependent method testCardinalityWithCriteriaAndJoin.
/**
* Tests that join side with larger cardinality will still have a lower
* cost computed because it has a criteria including a primary key
*/
@Test
public void testCardinalityWithCriteriaAndJoin() throws Exception {
// override default metadata
this.metadata = RealMetadataFactory.example4();
// no key
GroupSymbol group1 = getPhysicalGroup(2, 2);
GroupSymbol group1a = null;
// has key
GroupSymbol group2 = getPhysicalGroup(3, 3);
// has key
GroupSymbol group2a = getPhysicalGroup(3, 1);
ElementSymbol group1e1 = getElementSymbol(2, 2, 1);
ElementSymbol group2e1 = getElementSymbol(3, 3, 1);
ElementSymbol group2e2 = getElementSymbol(3, 3, 2);
ElementSymbol group2ae1 = getElementSymbol(3, 1, 1);
ElementSymbol group2ae2 = getElementSymbol(3, 1, 2);
// Outer Join criteria
CompareCriteria crit = new CompareCriteria(group2e1, CompareCriteria.EQ, group1e1);
ArrayList crits = new ArrayList(1);
crits.add(crit);
// atomic select criteria
Criteria atomicCrit1 = null;
Criteria atomicCrit1a = null;
Criteria atomicCrit2 = new CompareCriteria(group2e1, CompareCriteria.EQ, new Constant(new Integer(5)));
Criteria atomicCrit2a = new CompareCriteria(group2ae1, CompareCriteria.EQ, new Constant(new Integer(5)));
// atomic Join criteria 1
Collection atomicJoinCrits1 = null;
// atomic Join criteria 2
CompareCriteria atomicJoinCrit2 = new CompareCriteria(group2ae2, CompareCriteria.EQ, group2e2);
ArrayList atomicJoinCrits2 = new ArrayList(1);
atomicJoinCrits2.add(atomicJoinCrit2);
int expected = LEFT_SIDE;
helpTestChooseSiblingAndMarkDependent(group1, atomicCrit1, group1a, atomicCrit1a, atomicJoinCrits1, group2, atomicCrit2, group2a, atomicCrit2a, atomicJoinCrits2, crits, expected, 1000, 1);
}
Aggregations