| 1 package com.daffodilwoods.daffodildb.server.sql99.dql.queryexpression. 2 queryspecification; 3 4 import java.util.*; 5 6 import com.daffodilwoods.daffodildb.server.serversystem.*; 7 import com.daffodilwoods.daffodildb.server.sql99.common.*; import com.daffodilwoods.daffodildb.server.sql99.dql.common.*; 9 import com.daffodilwoods.daffodildb.server.sql99.dql.execution.*; 10 import com.daffodilwoods.daffodildb.server.sql99.expression.*; 11 import com.daffodilwoods.daffodildb.server.sql99.expression.expressionprimary.*; 12 import com.daffodilwoods.daffodildb.server.sql99.utils.*; 13 import com.daffodilwoods.database.resource.*; 14 import com.daffodilwoods.database.utility.P; 15 16 26 public class derivedcolumn 27 implements com.daffodilwoods.daffodildb.utils.parser.StatementExecuter, 28 selectsublist, Datatypes, _derivedcolumn { 29 33 public asclause _Optasclause0; 34 37 public valueexpression _valueexpression1; 38 41 public ColumnDetails[] columnDetails; 42 49 public _Reference[] getReferences(TableDetails[] tableDetails) throws 50 DException { 51 return _valueexpression1.getReferences(tableDetails); 52 } 53 54 60 61 public Object run(Object object) throws com.daffodilwoods.database.resource. 62 DException { 63 64 return _valueexpression1.run(object); 65 } 66 67 76 public _Reference[] checkSemantic(_ServerSession parent) throws DException { 77 _Reference[] ref = _valueexpression1.checkSemantic(parent); 78 if (_valueexpression1.getCardinality() > 1) { 79 80 throw new DException("DSE0", 81 new Object [] {"Multi Column Predicate is not Supported in Select List."}); 82 } 83 84 85 return ref; 86 } 87 88 95 96 public ColumnDetails[] getDerivedColumnDetails() throws DException { 97 98 ColumnDetails[] cdt = getColumnDetails(); 99 100 if(_valueexpression1.checkForSubQuery()){ 101 ColumnDetails columnDetail = new ColumnDetails(); 102 String str = _valueexpression1.toString(); 103 columnDetail.setColumn(new String [] {str}); 104 columnDetail.setType(SCALARSUBQUERY); 105 columnDetail.setObject(this); 106 columnDetail.setExpression(str); 107 if (_Optasclause0 != null) { 108 columnDetail.setAliasName( (String ) _Optasclause0.run(null)); 109 } 110 return new ColumnDetails[] { columnDetail }; 111 } 112 113 114 if (columnDetails.length == 1) { 116 117 ColumnDetails columnDetail = getClonedCD(columnDetails[0]); 118 119 int type = columnDetail.getType(); 120 if (type == SCALARFUNCTION || type == CONSTANT) { 121 columnDetail.setObject(this); 122 123 } 124 if (columnDetail.checkNegativeValueFlag()) { 125 if (type == REFERENCE || type == CONSTANT) { 126 columnDetail.setType(FUNCTIONAL); 127 } 128 columnDetail.setObject(this); 129 } 130 if (_Optasclause0 != null) { 131 columnDetail.setAliasName( (String ) _Optasclause0.run(null)); 132 } 133 columnDetail.setExpression(_valueexpression1.toString()); 134 return new ColumnDetails[] { 135 columnDetail}; 136 } 137 138 ColumnDetails columnDetail = new ColumnDetails(); 139 String str = _valueexpression1.toString(); 140 columnDetail.setColumn(new String [] {str}); 141 columnDetail.setType(FUNCTIONAL); 142 columnDetail.setObject(this); 143 columnDetail.setExpression(str); 144 if (_Optasclause0 != null) { 145 columnDetail.setAliasName( (String ) _Optasclause0.run(null)); 146 } 147 ColumnDetails[] cdtoret = new ColumnDetails[] { 148 columnDetail}; 149 150 if (cdtoret[0].getDatatype() == Datatypes.BOOLEAN) 151 cdtoret[0].setSize(Datatypes.BOOLEANSIZE); 152 return cdtoret; 153 } 154 155 161 162 private ColumnDetails getClonedCD(ColumnDetails cd) throws DException { 163 try { 164 return (ColumnDetails) cd.clone(); 165 } 166 catch (CloneNotSupportedException ex) { 167 throw new DException("DSE0", new Object [] {"Clone Not Supported"}); 168 } 169 } 170 171 public String toString() { 172 StringBuffer sb = new StringBuffer (); 173 sb.append(" "); 174 sb.append(_valueexpression1); 175 sb.append(" "); 176 if (_Optasclause0 != null) { 177 sb.append(_Optasclause0); 178 } 179 return sb.toString(); 180 } 181 182 public Object clone() throws CloneNotSupportedException { 183 derivedcolumn tempClass = new derivedcolumn(); 184 if (_Optasclause0 != null) { 185 tempClass._Optasclause0 = (asclause) _Optasclause0.clone(); 186 } 187 tempClass._valueexpression1 = (valueexpression) _valueexpression1.clone(); 188 return tempClass; 189 } 190 191 199 200 public _Aggregate getExecutable() throws DException { 201 return ( (setfunctionspecification) columnDetails[0].getObject()). 202 getExecutable(); 203 } 204 205 212 213 public ColumnDetails[] getColumnDetails() throws DException { 214 columnDetails = columnDetails != null ? columnDetails : 215 _valueexpression1.getColumnDetails(); 216 return columnDetails; 217 } 218 219 public ParameterInfo[] getParameterInfo() throws DException { 220 return _valueexpression1.getParameterInfo(); 221 } 222 223 public void getColumnsIncluded(ArrayList parm1) throws com.daffodilwoods. 224 database.resource.DException { 225 _valueexpression1.getColumnsIncluded(parm1); 226 } 227 228 232 233 public ByteComparison getByteComparison(Object object) throws DException { 234 return _valueexpression1.getByteComparison(object); 235 } 236 237 public ColumnDetails[] getChildColumnDetails() throws DException { 238 return getColumnDetails(); 239 } 240 public Object [] getParameters(Object object) throws DException { 241 return _valueexpression1.getParameters(object); 242 } 243 244 } 245 | Popular Tags |