1 package com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression; 2 3 import java.util.*; 4 5 import com.daffodilwoods.daffodildb.server.sql99.common.*; 6 import com.daffodilwoods.daffodildb.server.sql99.dql.execution.*; 7 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.condition.*; 8 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.table.*; 9 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.predicates.*; 10 import com.daffodilwoods.daffodildb.server.sql99.expression.rowvalueexpression.*; 11 import com.daffodilwoods.daffodildb.server.sql99.token.*; 12 import com.daffodilwoods.daffodildb.server.sql99.utils.*; 13 import com.daffodilwoods.database.resource.*; 14 import com.daffodilwoods.database.sqlinitiator.*; 15 import com.daffodilwoods.daffodildb.server.sql99.dql.execution._SingleTableCondition; 16 17 31 32 public class booleanvalueexpressionSRESERVEDWORD1206543922booleanterm extends AbstractBooleanValueExpression implements booleanvalueexpression, TypeConstants, booleanterm, ExecutionPlanConstants, JoinConditionTableGetter, _SingleTableCondition { 33 34 public booleanterm _booleanterm0; 35 public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439221; 36 public booleanvalueexpression _booleanvalueexpression2; 37 38 public booleanvalueexpressionSRESERVEDWORD1206543922booleanterm() { 39 } 40 41 public booleanvalueexpressionSRESERVEDWORD1206543922booleanterm(booleanvalueexpression bve, booleanterm bt) throws DException { 42 this._booleanvalueexpression2 = bve; 43 this._booleanterm0 = bt; 44 } 45 46 public booleanvalueexpressionSRESERVEDWORD1206543922booleanterm(booleanvalueexpression bve, booleanterm bt, SRESERVEDWORD1206543922 reservedWord) throws DException { 47 this._booleanvalueexpression2 = bve; 48 this._booleanterm0 = bt; 49 _SRESERVEDWORD12065439221 = reservedWord; 50 } 51 52 59 60 public double getCost(long rowCount, boolean index) throws DException { 61 long rowsReduced = _booleanvalueexpression2.getEstimatedRows(rowCount); 62 long rowReduced1 = _booleanterm0.getEstimatedRows(rowCount); 63 rowsReduced = rowsReduced > rowReduced1 ? rowsReduced : rowReduced1; 64 return rowsReduced; 65 } 66 67 80 81 public _QualifiedBVE getQualifiedBVE(TableDetails[] tableDetails0) throws DException { 82 _BVESingleTablePlan[] bveSingleTablePlan1 = _booleanvalueexpression2.getQualifiedBVE(tableDetails0).getBVESingleTablePlans(); 83 _BVESingleTablePlan[] bveSingleTablePlan2 = _booleanterm0.getQualifiedBVE(tableDetails0).getBVESingleTablePlans(); 84 if (bveSingleTablePlan1 == null || bveSingleTablePlan2 == null) { 85 return new QualifiedBVE(null, this); 86 } 87 int length1 = bveSingleTablePlan1.length; 88 int length2 = bveSingleTablePlan2.length; 89 int count = length1 < length2 ? length1 : length2; 90 ArrayList aList = new ArrayList(count); 91 for (int i = 0; i < length2; i++) { 92 _BVESingleTablePlan stp = bveSingleTablePlan2[i]; 93 TableDetails tableDetails = bveSingleTablePlan2[i].getTableDetails()[0]; 94 for (int j = 0; j < length1; j++) { 95 if (tableDetails == bveSingleTablePlan1[j].getTableDetails()[0]) { 96 stp.setCondition(BVEPlanMerger.addOrConditions(stp.getCondition(), bveSingleTablePlan1[j].getCondition())); 97 aList.add(stp); 98 break; 99 } 100 } 101 } 102 QualifiedBVE qBve = new QualifiedBVE( (BVESingleTablePlan[]) aList.toArray(new BVESingleTablePlan[0]), this); 103 return qBve; 104 } 105 106 112 113 public int canUseForSeek() throws DException { 114 return TypeConstants.NOSEEK; 115 } 116 117 128 129 public _IndexPredicateInterface getCost(_Order order, String [] queryColumns, Object session, TableDetails tableDetail, ColumnDetails[] aggregateColumns) throws DException { 130 AllColumnPredicates allColumnPredicates = new AllColumnPredicates(); 131 allColumnPredicates.setNonIndexedCondition(this); 132 IndexPredicate indexPredicate = new IndexPredicate(null, allColumnPredicates); 133 indexPredicate.setTableDetails(tableDetail); 134 indexPredicate.setOrder(order); 135 double costLeft = _booleanvalueexpression2.getCost(order, queryColumns, session, tableDetail, aggregateColumns).getCost(); 136 double costRight = _booleanterm0.getCost(order, queryColumns, session, tableDetail, aggregateColumns).getCost(); 137 double cost = costLeft < costRight ? costLeft : costRight; 138 indexPredicate.setCost(cost); 139 return indexPredicate; 140 } 141 142 151 152 public void setColumnPredicates(_AllColumnPredicates allColumnPredicates) throws DException { 153 allColumnPredicates.addToNonIndex(this); 154 } 155 156 public int getConditionType() throws DException { 157 return BVEORBT; 158 } 159 160 172 173 public _BVEPlan getExecutionPlan() throws DException { 174 _BVEPlan tablePlan1 = _booleanvalueexpression2.getExecutionPlan(); 175 _BVEPlan tablePlan2 = _booleanterm0.getExecutionPlan(); 176 _BVEPlan resultantPlan = BVEPlanMerger.mergeTablePlansWithOr(tablePlan1, tablePlan2, this); 177 return resultantPlan; 178 } 179 180 196 197 public Object run(Object object) throws DException { 198 Object result1 = _booleanvalueexpression2.run(object); 199 if (result1.hashCode() == 0) { 200 return result1; 201 } 202 Object result2 = _booleanterm0.run(object); 203 204 if (result1.hashCode() == -2 || result1.hashCode() == 2) { 205 return (result2.hashCode() == -1 || result2.hashCode() == 1) ? result1 : result2; 206 } 207 return result2; 208 } 209 210 217 218 public ParameterInfo[] getParameterInfo() throws DException { 219 ParameterInfo[] parameterInfo1 = _booleanvalueexpression2.getParameterInfo(); 220 ParameterInfo[] parameterInfo2 = _booleanterm0.getParameterInfo(); 221 return GeneralPurposeStaticClass.getCombinedParameterInfoArray(parameterInfo1, parameterInfo2); 222 } 223 224 231 232 public TableDetails[] getCorrespondingTablesInvolved(TableDetails[] td) throws com.daffodilwoods.database.resource.DException { 233 ArrayList toRet = new ArrayList(); 234 boolean found = false; 235 TableDetails[] td1 = null, td2 = null; 236 if (_booleanterm0 instanceof JoinConditionTableGetter) { 237 td1 = ( (JoinConditionTableGetter) _booleanterm0).getCorrespondingTablesInvolved(td); 238 if (td1 != null) { 239 toRet.addAll(Arrays.asList(td1)); 240 found = true; 241 } 242 } 243 if (_booleanvalueexpression2 instanceof JoinConditionTableGetter) { 244 td2 = ( (JoinConditionTableGetter) _booleanvalueexpression2).getCorrespondingTablesInvolved(td); 245 if (td2 != null) { 246 toRet.addAll(Arrays.asList(td2)); 247 found = true; 248 } 249 } 250 if (found) { 251 return (TableDetails[]) toRet.toArray(new TableDetails[0]); 252 } 253 return null; 254 } 255 256 261 262 public void verifyValues(_VariableValueOperations vv) throws DException { 263 if (_booleanterm0 instanceof JoinConditionTableGetter) { 264 ( (JoinConditionTableGetter) _booleanterm0).verifyValues(vv); 265 } 266 if (_booleanvalueexpression2 instanceof JoinConditionTableGetter) { 267 ( (JoinConditionTableGetter) _booleanvalueexpression2).verifyValues(vv); 268 } 269 } 270 271 276 277 public AbstractRowValueExpression[] getChilds() { 278 AbstractRowValueExpression[] childs = new AbstractRowValueExpression[] { (AbstractRowValueExpression) (_booleanvalueexpression2), (AbstractRowValueExpression) (_booleanterm0)}; 279 return childs; 280 } 281 282 291 292 public boolean isNullPredicate() throws DException { 293 return _booleanvalueexpression2.isNullPredicate() || _booleanterm0.isNullPredicate(); 294 } 295 296 303 304 public long getEstimatedRows(long noOfRows) throws DException { 305 return (_booleanvalueexpression2.getEstimatedRows(noOfRows)) + (_booleanterm0.getEstimatedRows(noOfRows)); 306 } 307 308 public String toString() { 309 StringBuffer sb = new StringBuffer (); 310 sb.append(" "); 311 sb.append(_booleanvalueexpression2); 312 sb.append(" "); 313 sb.append(_SRESERVEDWORD12065439221); 314 sb.append(" "); 315 sb.append(_booleanterm0); 316 return sb.toString(); 317 } 318 319 public Object clone() throws CloneNotSupportedException { 320 booleanvalueexpressionSRESERVEDWORD1206543922booleanterm tempClass = new booleanvalueexpressionSRESERVEDWORD1206543922booleanterm(); 321 tempClass._booleanterm0 = (booleanterm) _booleanterm0.clone(); 322 tempClass._SRESERVEDWORD12065439221 = (SRESERVEDWORD1206543922) _SRESERVEDWORD12065439221.clone(); 323 tempClass._booleanvalueexpression2 = (booleanvalueexpression) _booleanvalueexpression2.clone(); 324 try { 325 tempClass.getColumnDetails(); 326 } catch (DException ex) { 327 throw new RuntimeException (ex.getMessage()); 328 } 329 return tempClass; 330 } 331 332 public booleanvalueexpression getSingleTableCondition() throws DException { 333 return this; 334 } 335 } 336 | Popular Tags |