1 package com.daffodilwoods.daffodildb.server.sql99.dql.queryexpression; 2 3 import java.util.*; 4 5 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*; 6 import com.daffodilwoods.daffodildb.server.serversystem.*; 7 import com.daffodilwoods.daffodildb.server.sql99.*; 8 import com.daffodilwoods.daffodildb.server.sql99.common.*; 9 import com.daffodilwoods.daffodildb.server.sql99.dql.execution.*; 10 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.*; 11 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.set.*; 12 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.set.SetOperatorAbstract.*; 13 import com.daffodilwoods.daffodildb.server.sql99.dql.queryexpression.queryspecification.*; 14 import com.daffodilwoods.daffodildb.server.sql99.dql.semanticchecker.*; 15 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*; 16 import com.daffodilwoods.daffodildb.server.sql99.token.*; 17 import com.daffodilwoods.daffodildb.server.sql99.utils.*; 18 import com.daffodilwoods.daffodildb.utils.comparator.*; 19 import com.daffodilwoods.database.resource.*; 20 import com.daffodilwoods.database.sqlinitiator.*; 21 import com.daffodilwoods.daffodildb.server.sql99.dql.queryexpression.orderbyclause.orderbyclause; 22 import com.daffodilwoods.daffodildb.server.sql99.dql.semanticchecker.SemanticChecker; 23 24 51 52 public class queryexpressionbodySRESERVEDWORD1206543922OptsetquantifierOptdummyrulequeryprimary extends SetOperatorAbstract implements com.daffodilwoods.daffodildb.utils.parser.StatementExecuter, non_joinqueryterm, Datatypes, BVEConstants, queryexpressionbody { 53 56 57 public queryprimary _queryprimary0; 58 public dummyrule _Optdummyrule1; 59 60 64 65 public setquantifier _Optsetquantifier2; 66 67 70 71 public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439223; 72 73 76 77 public queryexpressionbody _queryexpressionbody4; 78 79 92 93 94 private booleanvalueexpression getClonedBVE(booleanvalueexpression bve) throws DException { 95 booleanvalueexpression clonedBVE = null; 96 try { 97 if (bve != null) { 98 clonedBVE = (booleanvalueexpression) bve.clone(); 99 changeColumnDetails(clonedBVE.getColumnDetails(), _queryexpressionbody4.getColumnDetails(), _queryprimary0.getColumnDetails()); 100 } 101 } catch (CloneNotSupportedException ex) { 102 throw new DException("DSE3524", null); 103 } 104 return clonedBVE; 105 } 106 107 154 public _TablePlan getExecutionPlan(_ServerSession session, booleanvalueexpression bve, _DatedFramework datedFrameWork, _Order order, ColumnDetails[] cdsWithActualTableDetails, ConditionArray conditionArray) throws DException, DException { 155 booleanvalueexpression clonedBVE = getClonedBVE(bve); 156 if (clonedBVE != null) { 157 cdsWithActualTableDetails = GeneralPurposeStaticClass.getCombinedCDArray(cdsWithActualTableDetails, clonedBVE.getColumnDetails()); 158 } 159 ConditionArray clonedConditionArray = getClonedConditionArray(conditionArray, clonedBVE); 160 _DatedFramework clonedDatedFrameWork = getClonedDatedFrameWork(datedFrameWork); 161 int distinctOrAll = isDistinctOrAll(); 162 ComparatorAndOrder comparatorAndOrder = getAdjustedSelectOrder(order, session); 163 _Order[] ordersForBothQueries = comparatorAndOrder.order; 164 165 _TablePlan tPlan1 = _queryexpressionbody4.getExecutionPlan(session, bve, datedFrameWork, ordersForBothQueries[0], GeneralPurposeStaticClass.getCombinedCDArray(cdsWithActualTableDetails, GeneralPurposeStaticClass.getCombinedCDArray( clonedLeftColumnDetails, clonedLeftOrderColumnDetails)), conditionArray); 166 _TablePlan tPlan2 = _queryprimary0.getExecutionPlan(session, clonedBVE, clonedDatedFrameWork, ordersForBothQueries[1], GeneralPurposeStaticClass.getCombinedCDArray(cdsWithActualTableDetails, GeneralPurposeStaticClass.getCombinedCDArray(clonedRightColumnDetails,clonedRightOrderColumnDetails)), clonedConditionArray); 167 SetOperatorPlan sop = new SetOperatorPlan(tPlan1, tPlan2, distinctOrAll, SetOperatorConstants.INTERSECT, getReferences(getAllTableDetails()), comparatorAndOrder.comparator, _queryexpressionbody4.getSelectedColumns(), _queryprimary0.getSelectedColumns(), appropriateDataTypes, appropriateSizes, ordersForBothQueries[0].getKeyColumnDetails(), ordersForBothQueries[1].getKeyColumnDetails()); 168 sop.setOriginalColumnDetails(_queryexpressionbody4.getSelectedColumns(), _queryprimary0.getSelectedColumns(), ordersForBothQueries[0], ordersForBothQueries[1]); 169 return sop; 170 } 171 172 180 181 private _DatedFramework getClonedDatedFrameWork(_DatedFramework datedFrameWork) throws DException { 182 try { 183 if (datedFrameWork != null) { 184 return (_DatedFramework) datedFrameWork.clone(); 185 } 186 } catch (CloneNotSupportedException ex) { 187 throw new DException("DSE3524", null); 188 } 189 return datedFrameWork; 190 } 191 192 200 201 private ConditionArray getClonedConditionArray(ConditionArray conditionArray, booleanvalueexpression clonedBVE) throws DException { 202 ConditionArray clonedArray = new ConditionArray(); 203 if (clonedBVE != null) { 204 clonedArray.addCondition(clonedBVE); 205 } 206 return clonedArray; 207 } 208 209 214 215 private int isDistinctOrAll() throws DException { 216 int distinctOrAll = (_Optsetquantifier2 == null) ? SetOperatorConstants.DISTINCT 217 : ( (String ) _Optsetquantifier2.run(null)).equalsIgnoreCase("All") ? SetOperatorConstants.ALL : SetOperatorConstants.DISTINCT; 218 return distinctOrAll; 219 } 220 221 234 235 private ComparatorAndOrder getAdjustedSelectOrder(_Order order, _ServerSession serverSession) throws DException { 236 237 clonedLeftOrderColumnDetails=SemanticChecker.getClonedColumns(_queryexpressionbody4.getSelectedColumns()); 238 clonedRightOrderColumnDetails= SemanticChecker.getClonedColumns(_queryprimary0.getSelectedColumns()); 239 return getAdjustedSelectOrder(order, clonedLeftOrderColumnDetails,clonedRightOrderColumnDetails, serverSession); 240 } 241 242 261 public _Reference[] checkSemantic(_ServerSession session,_OrderByClause orderClause0,boolean checkUserRight,boolean checkSetOperatorPresent) throws DException { 262 _Reference[] references1 = _queryexpressionbody4.checkSemantic(session,null,checkUserRight,true); 263 _Reference[] references2 = _queryprimary0.checkSemantic(session,null,checkUserRight,true); _Reference[] references = GeneralPurposeStaticClass.getJointReferences(references1, references2); 265 ColumnDetails[] columnDetails1 = _queryexpressionbody4.getSelectedColumns(); 266 ColumnDetails[] columnDetails2 = _queryprimary0.getSelectedColumns(); 267 SemanticChecker.checkCardinalityAndDataTypeComptability(columnDetails1, columnDetails2 ); 268 269 270 274 275 clonedLeftColumnDetails = SemanticChecker.getClonedColumns(columnDetails1); 276 clonedRightColumnDetails = SemanticChecker.getClonedColumns(columnDetails2); 277 278 279 if(references==null){ 280 initializeAppropriateDataTypeAndSize(); 281 if (orderClause0 != null) { 282 ColumnDetails[] orderKeyColDetails = orderClause0.getKeyColumnDetails(); 283 SemanticChecker.checkingForOrder(orderKeyColDetails); 284 SemanticChecker.checkSemanticCheckingForOrderInSetOperators(columnDetails1, orderClause0.getKeyColumnDetails()); 285 } 286 } 287 return references; 288 } 289 290 291 298 299 private boolean deligateCall(int[] appropriateDataTypes0, int[] appropriateSizes0) throws DException { 300 boolean result = false; 301 if (_queryexpressionbody4 instanceof queryexpressionbodySRESERVEDWORD1206543922OptsetquantifierOptdummyrulequeryterm) { 302 result = ( (queryexpressionbodySRESERVEDWORD1206543922OptsetquantifierOptdummyrulequeryterm) _queryexpressionbody4).initializeDataTypeAndSize(appropriateDataTypes0, appropriateSizes0); 303 } else if (_queryexpressionbody4 instanceof queryexpressionbodySRESERVEDWORD1206543922OptsetquantifierOptdummyrulequeryprimary) { 304 result = ( (queryexpressionbodySRESERVEDWORD1206543922OptsetquantifierOptdummyrulequeryprimary) _queryexpressionbody4).initializeDataTypeAndSize(appropriateDataTypes0, appropriateSizes0); 305 } 306 if (_queryprimary0 instanceof queryexpressionbodySRESERVEDWORD1206543922OptsetquantifierOptdummyrulequeryterm) { 307 ( (queryexpressionbodySRESERVEDWORD1206543922OptsetquantifierOptdummyrulequeryterm) _queryprimary0).initializeDataTypeAndSize(appropriateDataTypes0, appropriateSizes0); 308 } else if (_queryprimary0 instanceof queryexpressionbodySRESERVEDWORD1206543922OptsetquantifierOptdummyrulequeryprimary) { 309 ( (queryexpressionbodySRESERVEDWORD1206543922OptsetquantifierOptdummyrulequeryprimary) _queryprimary0).initializeDataTypeAndSize(appropriateDataTypes0, appropriateSizes0); 310 } 311 return result; 312 } 313 314 328 public boolean initializeDataTypeAndSize(int[] appropriateDataTypes0, int[] appropriateSizes0) throws DException { 329 appropriateDataTypes = appropriateDataTypes0; 330 appropriateSizes = appropriateSizes0; 331 boolean b = deligateCall(appropriateDataTypes0, appropriateSizes0); 332 if (b) { 333 for (int i = 0; i < clonedLeftColumnDetails.length; i++) { 334 clonedLeftColumnDetails[i].setDatatype(appropriateDataTypes0[i]); 335 clonedRightColumnDetails[i].setDatatype(appropriateDataTypes0[i]); 336 clonedLeftColumnDetails[i].setSize(appropriateSizes0[i]); 337 clonedRightColumnDetails[i].setSize(appropriateSizes0[i]); 338 } 339 } 340 return b; 341 } 342 343 public String toString() { 344 StringBuffer sb = new StringBuffer (); 345 sb.append(" "); 346 sb.append(_queryexpressionbody4); 347 sb.append(" "); 348 sb.append(_SRESERVEDWORD12065439223); 349 sb.append(" "); 350 if (_Optsetquantifier2 != null) { 351 sb.append(_Optsetquantifier2); 352 } 353 sb.append(" "); 354 if (_Optdummyrule1 != null) { 355 sb.append(_Optdummyrule1); 356 } 357 sb.append(" "); 358 sb.append(_queryprimary0); 359 return sb.toString(); 360 } 361 362 public Object clone() throws CloneNotSupportedException { 363 queryexpressionbodySRESERVEDWORD1206543922OptsetquantifierOptdummyrulequeryprimary tempClass = new queryexpressionbodySRESERVEDWORD1206543922OptsetquantifierOptdummyrulequeryprimary(); 364 tempClass._queryprimary0 = (queryprimary) _queryprimary0.clone(); 365 if (_Optdummyrule1 != null) { 366 tempClass._Optdummyrule1 = (dummyrule) _Optdummyrule1.clone(); 367 } 368 if (_Optsetquantifier2 != null) { 369 tempClass._Optsetquantifier2 = (setquantifier) _Optsetquantifier2.clone(); 370 } 371 tempClass._SRESERVEDWORD12065439223 = (SRESERVEDWORD1206543922) _SRESERVEDWORD12065439223.clone(); 372 tempClass._queryexpressionbody4 = (queryexpressionbody) _queryexpressionbody4.clone(); 373 return tempClass; 374 } 375 376 388 public ComparatorAndOrder getComparatorAndOrderForNormalOrder(ColumnDetails[] columnDetailsLeft, ColumnDetails[] columnDetailsRight, _ServerSession serverSession, boolean[] columnOrder) throws DException { 389 SuperComparator appropriateLeftSuperComparator = getComparableComparator(columnDetailsLeft, columnDetailsRight, columnOrder, serverSession); 390 _Order leftQueryOrder = new SelectOrder(columnDetailsLeft, columnOrder, null); 391 SuperComparator appropriateRightSuperComparator = null; 392 _Order rightQueryOrder = new SelectOrder(columnDetailsRight, columnOrder, appropriateRightSuperComparator); 393 return new ComparatorAndOrder(appropriateLeftSuperComparator, new _Order[] {leftQueryOrder, rightQueryOrder}); 394 } 395 396 408 409 public ComparatorAndOrder getComparatorAndOrderForRearrangedOrder(ColumnDetails[] columnDetailsLeft, ColumnDetails[] columnDetailsRight, _ServerSession serverSession, boolean[] orderSpecifications) throws DException { 410 SuperComparator appropriateLeftSuperComparator = getComparableComparator(columnDetailsLeft, columnDetailsRight, orderSpecifications, serverSession); 411 _Order derivedOrderLeft = new SelectOrder(columnDetailsLeft, orderSpecifications, null, true); 412 _Order derivedOrderRight = new SelectOrder(columnDetailsRight, orderSpecifications, null, true); 413 return new ComparatorAndOrder(appropriateLeftSuperComparator, new _Order[] {derivedOrderLeft, derivedOrderRight}); 414 } 415 416 430 public ComparatorAndOrder getComparatorAndOrderForAlreadyAdjustedOrder(_Order order, ColumnDetails[] columnDetailsLeft, ColumnDetails[] columnDetailsRight, _ServerSession serverSession, boolean[] orderSpecifications) throws DException { 431 _Order derivedOrderRight = new SelectOrder(columnDetailsRight, orderSpecifications, null, true); 432 try { 433 return new ComparatorAndOrder(getComparableComparator(order.getKeyColumnDetails(), columnDetailsRight, orderSpecifications, serverSession), new _Order[] {order, derivedOrderRight}); 434 } catch (DException ex) { 435 throw ex; 436 } 437 } 438 464 465 470 471 public ColumnDetails[] getSelectedColumns() throws DException { 472 return clonedLeftColumnDetails; 473 } 474 475 481 482 public _Reference[] getReferences(TableDetails[] tableDetails) throws DException { 483 _Reference[] first = _queryexpressionbody4.getReferences(tableDetails); 484 _Reference[] second = _queryprimary0.getReferences(tableDetails); 485 return GeneralPurposeStaticClass.getJointReferences(first, second); 486 } 487 488 public ColumnDetails[] getColumnDetails() throws DException { 489 ColumnDetails firstlistOfColumns[] = _queryexpressionbody4.getColumnDetails(); 490 ColumnDetails secondlistOfColumns[] = _queryprimary0.getColumnDetails(); 491 return GeneralPurposeStaticClass.getCombinedCDArray(firstlistOfColumns, secondlistOfColumns); 492 } 493 494 public Object [] getParameters(Object object) throws DException { 495 Object [] first = _queryexpressionbody4.getParameters(object); 496 Object [] second = _queryprimary0.getParameters(object); 497 return GeneralPurposeStaticClass.getCombinedArray(first, second); 498 } 499 500 public void getColumnsIncluded(ArrayList aList) throws DException { 501 _queryexpressionbody4.getColumnsIncluded(aList); 502 _queryprimary0.getColumnsIncluded(aList); 503 } 504 505 public ParameterInfo[] getParameterInfo() throws DException { 506 ParameterInfo[] info1 = _queryexpressionbody4.getParameterInfo(); 507 ParameterInfo[] info2 = _queryprimary0.getParameterInfo(); 508 return GeneralPurposeStaticClass.getCombinedParameterInfoArray(info1, info2); 509 } 510 511 public void getTablesIncluded(ArrayList aList) throws DException { 512 _queryexpressionbody4.getTablesIncluded(aList); 513 _queryprimary0.getTablesIncluded(aList); 514 } 515 516 520 521 public void setDefaultValues(_VariableValueOperations variableValueOperation) throws DException { 522 _queryexpressionbody4.setDefaultValues(variableValueOperation); 523 } 524 525 public _ColumnCharacteristics getColumnCharacteristics(Object object) throws DException { 526 return _queryexpressionbody4.getColumnCharacteristics(object); 527 } 528 529 public TableDetails[] getAllTableDetails() throws com.daffodilwoods.database.resource.DException { 530 return GeneralPurposeStaticClass.getJointTableDetails(_queryexpressionbody4.getAllTableDetails(), _queryprimary0.getAllTableDetails()); 531 } 532 533 public boolean hasConstantSelectedColumn(booleanvalueexpression bve) throws DException { 534 return _queryexpressionbody4.hasConstantSelectedColumn(bve) || _queryprimary0.hasConstantSelectedColumn(bve); 535 } 536 537 public void initializeAppropriateDataTypeAndSizeWithOrderBy(orderbyclause orderClause0) throws DException { 538 initializeAppropriateDataTypeAndSize(); 539 if (orderClause0 != null) { 540 ColumnDetails[] orderKeyColDetails = orderClause0.getKeyColumnDetails(); 541 SemanticChecker.checkingForOrder(orderKeyColDetails); 542 SemanticChecker.checkSemanticCheckingForOrderInSetOperators(_queryexpressionbody4.getSelectedColumns(), orderClause0.getKeyColumnDetails()); 543 } 544 } 545 } 546 | Popular Tags |