| 1 package com.daffodilwoods.daffodildb.server.sql99.dcl.sqlcontrolstatement; 2 3 import java.util.*; 4 5 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*; 6 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.*; 7 import com.daffodilwoods.daffodildb.server.serversystem.*; 8 import com.daffodilwoods.daffodildb.server.sql99.*; 9 import com.daffodilwoods.daffodildb.server.sql99.common.*; 10 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*; 11 import com.daffodilwoods.daffodildb.server.sql99.ddl.schemadefinition.*; 12 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*; 13 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*; 14 import com.daffodilwoods.daffodildb.server.sql99.token.*; 15 import com.daffodilwoods.daffodildb.server.sql99.utils.*; 16 import com.daffodilwoods.daffodildb.utils.*; 17 import com.daffodilwoods.daffodildb.utils.field.*; 18 import com.daffodilwoods.database.resource.*; 19 20 public class SQLvariabledeclaration { 21 22 public defaultclause _Optdefaultclause0; 23 public datatype _datatype1; 24 public SQLvariablenamelist _SQLvariablenamelist2; 25 public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439223; 26 27 public void addVariableInVV(_VariableValues vv) throws DException { 28 ArrayList nameList = _SQLvariablenamelist2.getVariableNames(); 29 for (int i = 0, size = nameList.size(); i < size; i++) { 30 String varName = (String ) nameList.get(i); 31 ProcedureStringReference ref = new ProcedureStringReference(varName); 32 DataTypeDescriptor dtd = new DataTypeDescriptor(); 33 if (_datatype1 instanceof domainname) { 34 dtd = setDomainDescriptor(vv); 35 } 36 _datatype1.setDescriptor(dtd); 37 _datatype1.run(null); 38 int dataType = dtd.getType(); 39 ref.setDatatype(dataType); 40 ref.setSize(dtd.getPrecision()); 41 _Reference[] refs = new _Reference[] {ref}; 42 vv.addReferences(refs); 43 vv.setConditionVariableValue(refs, new Object [] {defaultValue(dataType, vv)} 44 , 1); 45 } 46 } 47 48 public ArrayList getVariableNames() throws DException { 49 return _SQLvariablenamelist2.getVariableNames(); 50 } 51 52 53 private Object defaultValue(int dataType, _VariableValues vv) throws DException { 54 Object value = null; 55 if (_Optdefaultclause0 != null) { 56 57 value = _Optdefaultclause0._defaultoption0.run(vv); 58 } else { 59 value = new FieldLiteral(FieldUtility.NULLBUFFERRANGE, dataType); 60 } 61 return value; 62 } 63 64 public Object getDefaultValue(int dataType) throws DException { 65 Object returnValue = FieldUtility.NULLFIELDBASE; 66 switch (dataType) { 67 case Datatype.BYTE: 68 case Datatype.TINYINT: 69 case Datatype.SMALLINT: 70 case Datatype.SHORT: 71 case Datatype.INT: 72 case Datatype.INTEGER: 73 case Datatype.LONG: 74 case Datatype.BIGINT: 75 returnValue = new Integer (0); 76 break; 77 case Datatype.REAL: 78 case Datatype.FLOAT: 79 case Datatype.DOUBLE: 80 case Datatype.DOUBLEPRECISION: 81 case Datatype.NUMERIC: 82 case Datatype.DECIMAL: 83 case Datatype.DEC: 84 case Datatype.BIGDECIMAL: 85 returnValue = new Double (0); 86 break; 87 case Datatype.VARCHAR: 88 case Datatype.CHAR: 89 case Datatype.CHARACTERVARYING: 90 case Datatype.CHARVARYING: 91 case Datatype.CHARACTER: 92 case Datatype.BOOLEAN: 93 case Datatype.DATE: 94 case Datatype.MODULE: 95 case Datatype.SUM: 96 case Datatype.ARRAY: 97 case Datatype.RECORD: 98 case Datatype.RECORDSET: 99 case Datatype.TIME: 100 case Datatype.TIMESTAMP: 101 case Datatype.TIME_WITH_TIMEZONE: 102 case Datatype.TIMESTAMP_WITH_TIMEZONE: 103 case Datatype.BLOB: 104 case Datatype.CLOB: 105 case Datatype.REF: 106 case Datatype.STRUCT: 107 case Datatype.CHARACTERLARGEOBJECT: 108 case Datatype.CHARLARGEOBJECT: 109 case Datatype.BINARYLARGEOBJECT: 110 case Datatype.BIT: 111 case Datatype.BITVARYING: 112 case Datatype.LONGVARCHAR: 113 case Datatype.LONGVARBINARY: 114 case Datatype.VARBINARY: 115 case Datatype.BINARY: 116 case Datatype.TABLEKEY: 117 return null; 118 } 119 return returnValue; 120 } 121 122 public String toString() { 123 StringBuffer sb = new StringBuffer (); 124 sb.append(" "); 125 sb.append(_SRESERVEDWORD12065439223); 126 sb.append(" "); 127 sb.append(_SQLvariablenamelist2); 128 sb.append(" "); 129 sb.append(_datatype1); 130 sb.append(" "); 131 if (_Optdefaultclause0 != null) { 132 sb.append(_Optdefaultclause0); 133 } 134 return sb.toString().trim(); 135 } 136 137 public Object clone() throws CloneNotSupportedException { 138 return this; 139 } 140 141 private DataTypeDescriptor setDomainDescriptor(_VariableValues vv) throws DException { 142 String domain_Catalog, domain_Schema, domain_Name; 143 _ServerSession currentSession = vv.getServerSession(); 144 domainname domainName = (domainname) _datatype1; 145 domain_Catalog = domainName.getCatalogName(); 146 domain_Schema = domainName.getSchemaName(); 147 if (domain_Catalog == null) { 148 domain_Catalog = currentSession.getCurrentCatalog(); 149 } 150 if (domain_Schema == null) { 151 domain_Schema = currentSession.getCurrentSchema(); 152 } 153 domain_Name = domainName.getDomainName(); 154 DomainDescriptor domainDescriptor = checkDomainPrivilege(currentSession, domain_Catalog, domain_Schema, domain_Name); 155 return domainDescriptor.dataTypeDescriptor; 156 } 157 158 private DomainDescriptor checkDomainPrivilege(_ServerSession currentSession, String domainCatalog, String domainSchema, String domainName) throws 159 DException { 160 DomainDescriptor domainDescriptor = getDomainDescriptor(currentSession, domainCatalog, domainSchema, domainName); 161 if (! (currentSession.getCurrentUser().equalsIgnoreCase(ServerSystem.browserUser))) { 162 _Executer domainExecuter = ( (DataDictionary) currentSession.getDataDictionary()).getPreparedStatementGetter().getExecuterForDomainValidity(); 163 _SelectQueryIterator iter = (_SelectQueryIterator) domainExecuter.executeForFresh(new Object [] {domainDescriptor.catalog_name, domainDescriptor.schema_name, domainDescriptor.domain_name, SqlKeywords.DOMAIN, currentSession.getCurrentUser()}); 164 if (!iter.first()) { 165 throw new DException("DSE8188", new Object [] {domainDescriptor.getQualifiedIdentifier()}); 166 } 167 } 168 return domainDescriptor; 169 } 170 171 private DomainDescriptor getDomainDescriptor( 172 _ServerSession serverSession, String domainCatalog, String domainSchema, String domainName) throws DException { 173 DomainDescriptor domainDescriptor = new DomainDescriptor(); 174 domainDescriptor.catalog_name = domainCatalog; 175 domainDescriptor.schema_name = domainSchema; 176 domainDescriptor.domain_name = domainName; 177 domainDescriptor.loadWithoutConstraints(serverSession); 178 return domainDescriptor; 179 } 180 } 181 | Popular Tags |