1 package com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.condition; 2 3 import com.daffodilwoods.database.resource.DException; 4 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._Iterator; 5 import com.daffodilwoods.database.sqlinitiator._Order; 6 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.set.IntersectAllIterator; 7 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.set.IntersectDistinctIterator; 8 import com.daffodilwoods.daffodildb.utils.GetByteComparator; 9 import com.daffodilwoods.daffodildb.server.sql99.utils._Reference; 10 import com.daffodilwoods.daffodildb.server.sql99.common.GeneralPurposeStaticClass; 11 import com.daffodilwoods.daffodildb.server.sql99.common.Datatypes; 12 import com.daffodilwoods.daffodildb.utils.comparator.SuperComparator; 13 import com.daffodilwoods.daffodildb.utils.comparator.CKpjoDpnqbsbups; 14 15 29 30 public class AndFullTextPredicate implements _FullTextPredicate { 31 34 _FullTextPredicate leftPredicate ; 35 38 _FullTextPredicate rightPredicate ; 39 42 String columnName; 43 _Order order; 44 45 public AndFullTextPredicate(_FullTextPredicate leftPredicate,_FullTextPredicate rightPredicate) { 46 this.leftPredicate = leftPredicate; 47 this.rightPredicate = rightPredicate; 48 } 49 55 public int getType() throws DException{ 56 return PredicateConstant.andFullTextPredicate; 57 } 58 64 public String getColumn() throws DException{ 65 columnName = leftPredicate.getColumn(); 66 return columnName; 67 } 68 74 public void setColumn(String colName) throws DException{ 75 leftPredicate.setColumn(colName); 76 rightPredicate.setColumn(colName); 77 } 78 public double getCost() throws DException { 79 return 0.0; 80 } 81 public double getCost(Object session) throws DException { 82 return 0.0; 83 } 84 92 public _Iterator execute(Object session) throws DException { 93 _Iterator leftIterator = leftPredicate.executeForSortedResult(session); 94 _Iterator rightIterator = rightPredicate.executeForSortedResult(session); 95 return getIntersectDistinctIterator(leftIterator,rightIterator); 96 } 97 98 106 private _Iterator getIntersectDistinctIterator(_Iterator leftIterator,_Iterator rightIterator) throws DException{ 107 _Reference[] leftReferences = new _Reference[]{GeneralPurposeStaticClass.getColumnDetails("documentId")}; 108 _Reference[] rightReferences = new _Reference[]{GeneralPurposeStaticClass.getColumnDetails("documentId")}; 109 SuperComparator comparator = GetByteComparator.getComparator(Datatypes.LONG,true,null); 110 CKpjoDpnqbsbups joinComparator = new CKpjoDpnqbsbups(new SuperComparator[]{comparator}); 111 _Reference[] orderLeftColumnDetails = new _Reference[]{GeneralPurposeStaticClass.getColumnDetails("documentId")}; 112 _Reference[] orderRightColumnDetails = new _Reference[]{GeneralPurposeStaticClass.getColumnDetails("documentId")}; 113 return new IntersectDistinctIterator(leftIterator,rightIterator,leftReferences,rightReferences,joinComparator,orderLeftColumnDetails,orderRightColumnDetails); 114 } 115 116 public double getEstimatedRow() throws DException { 117 return 1; 118 } 119 public void setOrder(_Order order) throws DException { 120 this.order = order; 121 } 122 public _Order getOrder() throws DException { 123 return order; 124 } 125 126 134 public _Iterator executeForSortedResult(Object indexTable) throws DException{ 135 return execute(indexTable); 136 } 137 138 } 139 | Popular Tags |