1 package com.daffodilwoods.daffodildb.server.sql99.dql.plan.condition; 2 3 import com.daffodilwoods.daffodildb.server.datasystem.indexsystem.*; 4 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.*; 5 import com.daffodilwoods.daffodildb.server.serversystem.*; 6 import com.daffodilwoods.daffodildb.server.sql99.common.*; 7 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.table.*; 8 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*; 9 import com.daffodilwoods.database.resource.*; 10 import com.daffodilwoods.database.utility.P; 11 import java.util.ArrayList ; 12 13 24 public class SimpleRelation implements _JoinRelation { 25 28 public booleanvalueexpression joinCondition; 29 32 public String [] relationTables; 33 34 public SimpleRelation(TableDetails[] relationTables0, booleanvalueexpression joinCondition0) throws DException { 35 joinCondition = joinCondition0; 36 37 relationTables = new String [relationTables0.length]; 38 for (int i = 0; i < relationTables0.length; i++) { 39 relationTables[i] = relationTables0[i].getNameOfTable(); 40 } 41 42 } 43 48 public void setCondition(booleanvalueexpression condition) throws DException { 49 this.joinCondition = condition; 50 } 51 52 public booleanvalueexpression getCondition() throws DException { 53 return joinCondition; 54 } 55 56 public TableDetails[] getTableDetails() throws DException { 57 ArrayList aList = new ArrayList (5); 58 ColumnDetails columnDetails[] = joinCondition.getColumnDetails(); 59 return GeneralPurposeStaticClass.getTableDetailsOfRefernceType(columnDetails,aList); 60 } 61 62 public String toString() { 63 return joinCondition.toString(); 64 } 65 66 73 public boolean isIndexPossible(_ServerSession session) throws DException { 74 ColumnDetails[] cds = joinCondition.getColumnDetails(); 75 if (cds.length > 2) { 76 return false; 77 } 78 TableDetails[] td = getTableDetails(); 79 for (int i = 0; i < td.length; i++) { 80 if (td[i] == null) { 81 return false; 82 } 83 if (td[i].getTableType() == TypeConstants.VIEW) { 84 continue; 85 } 86 _IndexTable indexTable = session.getIndexTable(td[i].getQualifiedIdentifier()); 87 _IndexInformation[] indexInformations = indexTable.getIndexInformations(); 88 if (checkifIndexPossible(indexInformations, cds[i])) { 89 return true; 90 } 91 } 92 return false; 93 } 94 102 private boolean checkifIndexPossible(_IndexInformation[] indexInformations, ColumnDetails cd) throws DException { 103 String colName = cd.getColumn(); 104 for (int i = 0; i < indexInformations.length; i++) { 105 String [] colNames = indexInformations[i].getColumns(); 106 if (colName.equalsIgnoreCase(colNames[0])) { 107 return true; 108 } 109 } 110 return false; 111 } 112 } 113 | Popular Tags |