1 package com.daffodilwoods.daffodildb.server.datadictionarysystem; 2 3 import java.lang.ref.*; 4 import java.util.*; 5 6 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.*; 7 import com.daffodilwoods.daffodildb.server.datasystem.utility.*; 8 import com.daffodilwoods.daffodildb.server.serversystem.*; 9 import com.daffodilwoods.daffodildb.server.sql99.*; 10 import com.daffodilwoods.daffodildb.server.sql99.common.*; 11 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*; 12 import com.daffodilwoods.daffodildb.server.sql99.ddl.utility.*; 13 import com.daffodilwoods.daffodildb.server.sql99.dql.execution.*; 14 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*; 15 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.table.*; 16 import com.daffodilwoods.daffodildb.server.sql99.dql.queryexpression.*; 17 import com.daffodilwoods.daffodildb.utils.comparator.*; 18 import com.daffodilwoods.daffodildb.utils.field.*; 19 import com.daffodilwoods.daffodildb.utils.parser.*; 20 import com.daffodilwoods.database.general.*; 21 import com.daffodilwoods.database.resource.*; 22 23 public class DataDictionary implements _DataDictionary, _DDSTriggerOperations, _DDSConstraintOperations { 24 Map tableCharacteristicsMap; 25 _ServerSession serverSession; 26 PreparedStatementGetter preparedStatementGetter; 27 _Database fileDatabase; 28 String databaseUrl; 29 WeakOrderedKeyList privilegeCharacteristicsMap; 30 WeakOrderedKeyList domainConstraintMap; 31 ArrayList tablesRecentlyUsed; 32 SimpleFIFOReadWriteLocker ddlLock; 33 public boolean loadSystemTableConstraints = true; 34 private long lastSpecificKeyValue = 0; 35 private long lastIndexKeyValue = 0; 36 private long lastDomainKeyValue = 0; 37 private long lastConstraintKeyValue = 0; 38 private long indexNextValue = 0; 39 private long constraintNumber = 0; 40 private long specificNextValue = 0; 41 private long domainConstraintNumber = 0; 42 43 public DataDictionary(String databaseUrl) throws DException { 44 this.databaseUrl = databaseUrl; 45 tableCharacteristicsMap = Collections.synchronizedMap(new HashMap(20)); 46 privilegeCharacteristicsMap = new WeakOrderedKeyList(new CTusjohDbtfJoTfotjujwfDpnqbsbups()); 47 domainConstraintMap = new WeakOrderedKeyList(new CRvbmjgjfeDpnqbsbups()); 48 tablesRecentlyUsed = new ArrayList(); 49 ddlLock = new SimpleFIFOReadWriteLocker(); 50 } 51 52 public void setServerSession(_ServerSession serverSession0) throws DException { 53 serverSession = serverSession0; 54 preparedStatementGetter = new PreparedStatementGetter(serverSession); 55 } 56 57 public _ColumnCharacteristics getColumnCharacteristics(QualifiedIdentifier tableName, boolean addSystemFileds) throws DException { 58 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 59 ColumnCharacteristics columnCharacteristics = characteristicsPool.getColumnCharacteristics(); 60 if (columnCharacteristics != null) { 61 return columnCharacteristics; 62 } 63 synchronized (characteristicsPool) { 64 columnCharacteristics = new ColumnCharacteristics(tableName, preparedStatementGetter, addSystemFileds); 65 characteristicsPool.setColumnCharacteristics(columnCharacteristics); 66 } 67 return columnCharacteristics; 68 } 69 70 public boolean isAuthorizedUserForRole(String userName, String roleName) throws DException { 71 _SelectQueryIterator iter = (_SelectQueryIterator) preparedStatementGetter.getRoleAuthorizationsExecuterforGranteeOnly().executeForFresh(new Object [] {userName}); 72 if (! (iter.first())) 73 throw new DException("DSE875", new Object [] {roleName, userName}); 74 do { 75 Object [] values = (Object []) iter.getColumnValues(); 76 if (roleName.equalsIgnoreCase( (String ) ( (FieldBase) values[0]).getObject())) { 77 return true; 78 } else { 79 String [] applicableRolesOfRole = GeneralUtility.getApplicableRoleNames( ( (DataDictionary) serverSession.getDataDictionary()).getPreparedStatementGetter(), (String ) ( (FieldBase) values[0]).getObject()); 80 for (int i = 0; i < applicableRolesOfRole.length; i++) { 81 if (roleName.equalsIgnoreCase(applicableRolesOfRole[i])) 82 return true; 83 } 84 } 85 } while (iter.next()); 86 return false; 87 } 88 89 99 100 public _TriggerCharacteristics getTriggerCharacteristics(QualifiedIdentifier tableName, boolean rowLevel) throws DException { 101 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 102 _TriggerCharacteristics triggerCharacteristcs = rowLevel ? characteristicsPool.getRowLevelTriggerCharacteristics() 103 : characteristicsPool.getStatementLevelTriggerCharacteristics(); 104 if (triggerCharacteristcs != null) 105 return triggerCharacteristcs; 106 synchronized (characteristicsPool) { 107 triggerCharacteristcs = rowLevel ? characteristicsPool.getRowLevelTriggerCharacteristics() 108 : characteristicsPool.getStatementLevelTriggerCharacteristics(); 109 if (triggerCharacteristcs != null) 110 return triggerCharacteristcs; 111 try { 112 _ColumnCharacteristics cc = getColumnCharacteristics(tableName, true); 113 triggerCharacteristcs = new TriggerCharacteristics(tableName, preparedStatementGetter, rowLevel, cc.getColumnNames()); 114 } catch (TableException ex) { 115 InitializeException ie = new InitializeException("DSE1112", null); 116 ie.setException(ex); 117 throw ie; 118 } 119 if (rowLevel) 120 characteristicsPool.setRowLevelTriggerCharacteristics(triggerCharacteristcs); 121 else 122 characteristicsPool.setStatementLevelTriggerCharacteristics(triggerCharacteristcs); 123 } 124 return triggerCharacteristcs; 125 } 126 127 public _CheckConstraintCharacteristics getCheckConstraintCharacteristics(QualifiedIdentifier tableName, boolean deferable) throws InitializeException, DException { 128 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 129 _CheckConstraintCharacteristics checkConstraintCharacteristcs = deferable ? characteristicsPool.getDefferableCheckConstraintCharacteristics() 130 : characteristicsPool.getNot_defferableCheckConstraintCharacteristics(); 131 if (serverSession == null) { 132 throw new DException("DSE390", null); 133 } 134 if (checkConstraintCharacteristcs != null) 135 return checkConstraintCharacteristcs; 136 synchronized (characteristicsPool) { 137 checkConstraintCharacteristcs = deferable ? characteristicsPool.getDefferableCheckConstraintCharacteristics() 138 : characteristicsPool.getNot_defferableCheckConstraintCharacteristics(); 139 if (checkConstraintCharacteristcs != null) 140 return checkConstraintCharacteristcs; 141 try { 142 _ColumnCharacteristics cc = getColumnCharacteristics(tableName, true); 143 checkConstraintCharacteristcs = new CheckConstraintCharacteristics(this, tableName, cc, preparedStatementGetter, deferable); 144 } catch (TableException ex) { 145 InitializeException ie = new InitializeException("DSE1111", null); 146 ie.setException(ex); 147 throw ie; 148 } 149 if (deferable) 150 characteristicsPool.setDefferableCheckConstraintCharacteristics(checkConstraintCharacteristcs); 151 else 152 characteristicsPool.setNot_defferableCheckConstraintCharacteristics(checkConstraintCharacteristcs); 153 } 154 return checkConstraintCharacteristcs; 155 } 156 157 public _ReferencingConstraintCharacteristics getReferencingConstraintCharacteristics(QualifiedIdentifier tableName, boolean deferable) throws DException { 158 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 159 _ReferencingConstraintCharacteristics referencingConstraintCharacteristcs = deferable ? characteristicsPool.getDefferableReferencingConstraintsCharacteristics() 160 : characteristicsPool.getNot_defferableReferencingConstraintsCharacteristics(); 161 if (referencingConstraintCharacteristcs != null) 162 return referencingConstraintCharacteristcs; 163 synchronized (characteristicsPool) { 164 referencingConstraintCharacteristcs = deferable ? characteristicsPool.getDefferableReferencingConstraintsCharacteristics() 165 : characteristicsPool.getNot_defferableReferencingConstraintsCharacteristics(); 166 if (referencingConstraintCharacteristcs != null) 167 return referencingConstraintCharacteristcs; 168 referencingConstraintCharacteristcs = new ReferencingConstraintCharacteristics(tableName, preparedStatementGetter, deferable, this); 169 if (deferable) 170 characteristicsPool.setDefferableReferencingConstraintsCharacteristics(referencingConstraintCharacteristcs); 171 else 172 characteristicsPool.setNot_defferableReferencingConstraintsCharacteristics(referencingConstraintCharacteristcs); 173 } 174 return referencingConstraintCharacteristcs; 175 } 176 177 public _ReferencedConstraintCharacteristics getReferencedConstraintCharacteristics(QualifiedIdentifier tableName, boolean deferable) throws DException { 178 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 179 _ReferencedConstraintCharacteristics referencedConstraintCharacteristcs = deferable ? characteristicsPool.getDefferableReferencedConstraintsCharacteristics() 180 : characteristicsPool.getNot_defferableReferencedConstraintsCharacteristics(); 181 if (referencedConstraintCharacteristcs != null) 182 return referencedConstraintCharacteristcs; 183 synchronized (characteristicsPool) { 184 referencedConstraintCharacteristcs = deferable ? characteristicsPool.getDefferableReferencedConstraintsCharacteristics() 185 : characteristicsPool.getNot_defferableReferencedConstraintsCharacteristics(); 186 if (referencedConstraintCharacteristcs != null) 187 return referencedConstraintCharacteristcs; 188 referencedConstraintCharacteristcs = new ReferencedConstraintCharacteristics(tableName, preparedStatementGetter, deferable, this); 189 if (deferable) 190 characteristicsPool.setDefferableReferencedConstraintsCharacteristics(referencedConstraintCharacteristcs); 191 else 192 characteristicsPool.setNot_defferableReferencedConstraintsCharacteristics(referencedConstraintCharacteristcs); 193 } 194 return referencedConstraintCharacteristcs; 195 } 196 197 public _PrimaryAndUniqueConstraintCharacteristics getPrimaryAndUniqueConstraintCharacteristics(QualifiedIdentifier tableName, boolean deferable) throws DException { 198 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 199 _PrimaryAndUniqueConstraintCharacteristics primaryAndUniqueConstraintCharacteristcs = deferable ? characteristicsPool.getDefferablePrimaryAndUniqueConstraintsCharacteristics() 200 : characteristicsPool.getNot_defferablePrimaryAndUniqueConstraintsCharacteristics(); 201 if (primaryAndUniqueConstraintCharacteristcs != null) 202 return primaryAndUniqueConstraintCharacteristcs; 203 synchronized (characteristicsPool) { 204 primaryAndUniqueConstraintCharacteristcs = deferable ? characteristicsPool.getDefferablePrimaryAndUniqueConstraintsCharacteristics() 205 : characteristicsPool.getNot_defferablePrimaryAndUniqueConstraintsCharacteristics(); 206 if (primaryAndUniqueConstraintCharacteristcs != null) 207 return primaryAndUniqueConstraintCharacteristcs; 208 try { 209 _ColumnCharacteristics cc = getColumnCharacteristics(tableName, true); 210 primaryAndUniqueConstraintCharacteristcs = new PrimaryAndUniqueConstraintCharacteristics(tableName, cc, preparedStatementGetter, deferable, this); 211 212 } catch (TableException ex) { 213 InitializeException ie = new InitializeException("DSE1110", null); 214 ie.setException(ex); 215 throw ie; 216 } 217 if (deferable) 218 characteristicsPool.setDefferablePrimaryAndUniqueConstraintsCharacteristics(primaryAndUniqueConstraintCharacteristcs); 219 else 220 characteristicsPool.setNot_defferablePrimaryAndUniqueConstraintsCharacteristics(primaryAndUniqueConstraintCharacteristcs); 221 } 222 223 return primaryAndUniqueConstraintCharacteristcs; 224 } 225 226 public _IndexCharacteristics getIndexCharacteristics(QualifiedIdentifier 227 tableName) throws DException { 228 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 229 _IndexCharacteristics indexCharacteristics = characteristicsPool.getIndexCharacteristics(); 230 if (indexCharacteristics != null) 231 return indexCharacteristics; 232 synchronized (characteristicsPool) { 233 indexCharacteristics = characteristicsPool.getIndexCharacteristics(); 234 if (indexCharacteristics != null) 235 return indexCharacteristics; 236 _ColumnCharacteristics cc = getColumnCharacteristics(tableName, true); 237 indexCharacteristics = new IndexCharacteristics(tableName, 238 preparedStatementGetter, cc); 239 characteristicsPool.setIndexCharacteristics(indexCharacteristics); 240 } 241 return indexCharacteristics; 242 } 243 244 public _FullTextIndexCharacteristics getFullTextIndexCharacteristics(QualifiedIdentifier 245 tableName) throws DException { 246 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 247 _FullTextIndexCharacteristics indexCharacteristics = characteristicsPool.getFullTextIndexCharacteristics(); 248 if (indexCharacteristics != null) 249 return indexCharacteristics; 250 synchronized (characteristicsPool) { 251 indexCharacteristics = characteristicsPool.getFullTextIndexCharacteristics(); 252 if (indexCharacteristics != null) 253 return indexCharacteristics; 254 _ColumnCharacteristics cc = getColumnCharacteristics(tableName, true); 255 indexCharacteristics = new FullTextIndexCharacteristics(tableName, preparedStatementGetter, cc); 256 characteristicsPool.setFullTextIndexCharacteristics(indexCharacteristics); 257 } 258 return indexCharacteristics; 259 } 260 261 public _ViewCharacteristics getViewCharacteristics(QualifiedIdentifier viewName) throws DException { 262 CharacteristicsPool characteristicsPool = getCharacteristicsPool(viewName); 263 _ViewCharacteristics viewCharacteristics = characteristicsPool.getViewCharacteristics(); 264 if (viewCharacteristics != null) { 265 return viewCharacteristics; 266 } 267 synchronized (characteristicsPool) { 268 try { 269 _ColumnCharacteristics columnCharacteristics = getColumnCharacteristics(viewName, true); 270 viewCharacteristics = new ViewCharacteristics(viewName, preparedStatementGetter, columnCharacteristics); 271 } catch (TableException ex) { 272 InitializeException ie = new InitializeException("DSE1107", null); 273 ie.setException(ex); 274 throw ie; 275 } 276 characteristicsPool.setViewCharacteristics(viewCharacteristics); 277 } 278 return viewCharacteristics; 279 } 280 281 public _PrivilegeCharacteristics getPrivilegeCharacteristics(String authorizationIdentifier, int authorizationType) throws DException { 282 _PrivilegeCharacteristics privilegeCharacteristics = (_PrivilegeCharacteristics) privilegeCharacteristicsMap.get(authorizationIdentifier + authorizationType); 283 if (privilegeCharacteristics != null) { 284 return privilegeCharacteristics; 285 } 286 synchronized (authorizationIdentifier.toString().intern()) { 287 privilegeCharacteristics = (_PrivilegeCharacteristics) privilegeCharacteristicsMap.get(authorizationIdentifier + authorizationType); 288 if (privilegeCharacteristics != null) { 289 return privilegeCharacteristics; 290 } 291 privilegeCharacteristics = new PrivilegeCharacteristics(preparedStatementGetter, authorizationIdentifier, authorizationType, this); 292 privilegeCharacteristicsMap.put(authorizationIdentifier + authorizationType, privilegeCharacteristics); 293 } 294 return privilegeCharacteristics; 295 } 296 297 CheckConstraintDescriptor[] getCheckConstraintForDomain(QualifiedIdentifier identifier) throws DException { 298 DomainPool domainPool = getDomainPool(identifier); 299 CheckConstraintDescriptor[] constraints = domainPool.constraints; 300 if (!domainPool.searchedForDomainConstraint) { 301 domainPool.searchedForDomainConstraint = true; 302 domainPool.constraints = constraints; 303 _SelectQueryIterator constraintsIterator = (_SelectQueryIterator) preparedStatementGetter.getDomainConstraintsExecuter().executeForFresh( 304 new Object [] {identifier.catalog, identifier.schema, identifier.getName()}); 305 if (!constraintsIterator.first()) 306 return null; 307 ArrayList constraintsList = new ArrayList(); 308 Object [] values = (Object []) constraintsIterator.getObject(); 309 do { 310 DomainConstraintDescriptor domainConstraintDescriptor = new DomainConstraintDescriptor(); 311 CheckConstraintDescriptor constraint = new CheckConstraintDescriptor(); 312 domainConstraintDescriptor.loadDataFromRecord(constraintsIterator); 313 constraint.constraint_catalog = domainConstraintDescriptor.constraint_catalog; 314 constraint.constraint_schema = domainConstraintDescriptor.constraint_schema; 315 constraint.constraint_name = domainConstraintDescriptor.constraint_name; 316 constraint.domainConstraintDescriptor = domainConstraintDescriptor; 317 constraint.load(preparedStatementGetter, null); 318 constraintsList.add(constraint); 319 } while (constraintsIterator.next()); 320 constraints = (CheckConstraintDescriptor[]) constraintsList.toArray(new CheckConstraintDescriptor[0]); 321 } 322 return constraints; 323 } 324 325 public _DDSTriggerOperations getDDSTriggerOperation() throws DException { 326 return this; 327 } 328 329 public _DDSConstraintOperations getDDSConstraintsOperation() throws DException { 330 return this; 331 } 332 333 334 public synchronized void refereshCheckConstraints(QualifiedIdentifier tableName) throws DException { 335 CharacteristicsPool characteristicsPool = (CharacteristicsPool) tableCharacteristicsMap.get(tableName); 336 if (characteristicsPool != null) { 337 characteristicsPool.defferableCheckConstraintCharacteristics = null; 338 characteristicsPool. 339 defferablePrimaryAndUniqueConstraintsCharacteristics = null; 340 characteristicsPool.defferableReferencedConstraintsCharacteristics = null; 341 characteristicsPool.defferableReferencingConstraintsCharacteristics = null; 342 characteristicsPool.not_defferableCheckConstraintCharacteristics = null; 343 characteristicsPool. 344 not_defferablePrimaryAndUniqueConstraintsCharacteristics = null; 345 characteristicsPool. 346 not_defferableReferencedConstraintsCharacteristics = null; 347 characteristicsPool. 348 not_defferableReferencingConstraintsCharacteristics = null; 349 characteristicsPool.checkedDefereredConstraints = false; 350 } 351 } 352 353 public synchronized void refereshConstraints() throws DException { 354 Set set = tableCharacteristicsMap.entrySet(); 355 Set s = Collections.synchronizedSet(set); 356 synchronized (s) { 357 Iterator i = s.iterator(); 358 while (i.hasNext()) { 359 Map.Entry m = (Map.Entry) i.next(); 360 CharacteristicsPool characteristicsPool = (CharacteristicsPool) m.getValue(); 361 if (characteristicsPool != null) { 362 characteristicsPool.defferableCheckConstraintCharacteristics = null; 363 characteristicsPool. 364 defferablePrimaryAndUniqueConstraintsCharacteristics = null; 365 characteristicsPool.defferableReferencedConstraintsCharacteristics = null; 366 characteristicsPool.defferableReferencingConstraintsCharacteristics = null; 367 characteristicsPool.not_defferableCheckConstraintCharacteristics = null; 368 characteristicsPool. 369 not_defferablePrimaryAndUniqueConstraintsCharacteristics = null; 370 characteristicsPool. 371 not_defferableReferencedConstraintsCharacteristics = null; 372 characteristicsPool. 373 not_defferableReferencingConstraintsCharacteristics = null; 374 characteristicsPool.checkedDefereredConstraints = false; 375 } 376 } 377 } 378 } 379 380 CharacteristicsPool getCharacteristicsPool(QualifiedIdentifier tableName) throws DException { 381 CharacteristicsPool characteristicsPool = (CharacteristicsPool) tableCharacteristicsMap.get(tableName); 382 upadteTablesRecentlyUsed(tableName); 383 if (characteristicsPool != null) 384 return characteristicsPool; 385 synchronized (tableName) { 386 characteristicsPool = (CharacteristicsPool) tableCharacteristicsMap.get( 387 tableName); 388 if (characteristicsPool != null) 389 return characteristicsPool; 390 391 tableCharacteristicsMap.put(tableName, characteristicsPool = new 392 CharacteristicsPool(tableName)); 393 } 394 return characteristicsPool; 395 396 } 397 398 private void upadteTablesRecentlyUsed(QualifiedIdentifier tableName) { 399 tablesRecentlyUsed.add(tableName); 400 if (tablesRecentlyUsed.size() > 25) 401 tablesRecentlyUsed.remove(0); 402 } 403 404 public DomainPool getDomainPool(QualifiedIdentifier identifier) throws DException { 405 DomainPool domainPool = (DomainPool) domainConstraintMap.get(identifier); 406 if (domainPool != null) 407 return domainPool; 408 String domainName = identifier.getIdentifier().toLowerCase(); 409 synchronized (domainName) { 410 domainPool = (DomainPool) domainConstraintMap.get(identifier); 411 if (domainPool != null) 412 return domainPool; 413 domainPool = new DomainPool(); 414 domainConstraintMap.put(identifier, domainPool); 415 } 416 return domainPool; 417 } 418 419 public _DefaultValueGetter getDefaultValueGetter(QualifiedIdentifier tableName) throws DException { 420 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 421 _DefaultValueGetter defaultValueGetter = characteristicsPool.getDefaultValueGetter(); 422 if (defaultValueGetter != null) 423 return defaultValueGetter; 424 synchronized (characteristicsPool) { 425 defaultValueGetter = characteristicsPool.getDefaultValueGetter(); 426 if (defaultValueGetter != null) 427 return defaultValueGetter; 428 defaultValueGetter = new DefaultValueGetter(tableName, preparedStatementGetter, getColumnCharacteristics(tableName, true)); 429 characteristicsPool.setDefaultValueGetter(defaultValueGetter); 430 } 431 return defaultValueGetter; 432 } 433 434 public void removeTable(QualifiedIdentifier tableName) throws DException { 435 Object o = tableCharacteristicsMap.remove(tableName); 436 WeakOrderedKeyList.WeakOrderedKeyListIterator i = privilegeCharacteristicsMap.getWeakOrderedKeyListIterator(); 437 if (i.top()) 438 do { 439 PrivilegeCharacteristics privilegeCharacteristics = (PrivilegeCharacteristics) i.getObject(); 440 if (privilegeCharacteristics != null) 441 privilegeCharacteristics.removeTable(tableName); 442 } while (i.next()); 443 } 444 445 public void refreshPrivilegeCharacteristics(QualifiedIdentifier objectName, String objectType) throws DException { 446 WeakOrderedKeyList.WeakOrderedKeyListIterator i = privilegeCharacteristicsMap.getWeakOrderedKeyListIterator(); 447 if (i.top()) 448 do { 449 PrivilegeCharacteristics privilegeCharacteristics = (PrivilegeCharacteristics) i.getObject(); 450 if (privilegeCharacteristics != null) { 451 if (objectType.equalsIgnoreCase(SqlKeywords.TABLE)) { 452 privilegeCharacteristics.removeTable(objectName); 453 } 454 } 455 } while (i.next()); 456 } 457 458 public boolean hasDefferedConstraints(QualifiedIdentifier tableName) throws DException { 459 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 460 if (!characteristicsPool.checkedDefereredConstraints) { 461 try { 462 _Iterator iterator = (_Iterator) preparedStatementGetter.getdeferredCheckingExecuter().executeForFresh(tableName.getTableName()); 463 characteristicsPool.checkedDefereredConstraints = true; 464 characteristicsPool.hasDefferedConstraints = iterator.first(); 465 } catch (RetrievalException re) { 466 throw new InitializeException("DSE1122", null); 467 } 468 } 469 return characteristicsPool.hasDefferedConstraints; 470 } 471 472 public void addTrigger(QualifiedIdentifier tableName, boolean rowLevel, _Trigger trigger) throws DException { 473 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 474 _TriggerCharacteristics triggerCharacteristcs = rowLevel ? characteristicsPool.getRowLevelTriggerCharacteristics() 475 : characteristicsPool.getStatementLevelTriggerCharacteristics(); 476 characteristicsPool.hasAnyTriggersOnView = true; 477 if (triggerCharacteristcs != null) { 478 triggerCharacteristcs.addTrigger(trigger); 479 } 480 } 481 482 public void removeTrigger(QualifiedIdentifier tableName, boolean rowLevel, _Trigger trigger) throws DException { 483 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 484 _TriggerCharacteristics triggerCharacteristcs = rowLevel ? characteristicsPool.getRowLevelTriggerCharacteristics() 485 : characteristicsPool.getStatementLevelTriggerCharacteristics(); 486 characteristicsPool.hasAnyTriggersOnView = false; 487 if (triggerCharacteristcs != null) { 488 characteristicsPool.checkedHasAnyTriggersOnView = false; 489 triggerCharacteristcs.removeTrigger(trigger); 490 } 491 } 492 493 class DomainPool { 494 boolean searchedForDomainConstraint; 495 CheckConstraintDescriptor[] constraints; 496 DomainPool() {} 497 498 } 499 500 class CharacteristicsPool { 501 502 private SoftReference columnCharacteristics; 503 504 private SoftReference indexCharacteristics; 505 private SoftReference fullTextIndexCharacteristics; 506 507 private SoftReference defaultValueGetter; 508 509 private SoftReference rowLevelTriggerCharacteristics; 510 private SoftReference statementLevelTriggerCharacteristics; 511 512 private SoftReference defferableCheckConstraintCharacteristics; 513 private SoftReference not_defferableCheckConstraintCharacteristics; 514 515 private SoftReference defferableReferencingConstraintsCharacteristics; 516 private SoftReference not_defferableReferencingConstraintsCharacteristics; 517 518 private SoftReference defferableReferencedConstraintsCharacteristics; 519 private SoftReference not_defferableReferencedConstraintsCharacteristics; 520 521 private SoftReference defferablePrimaryAndUniqueConstraintsCharacteristics; 522 private SoftReference not_defferablePrimaryAndUniqueConstraintsCharacteristics; 523 524 private SoftReference viewCharacteristics; 525 526 private SoftReference viewObject; 527 528 boolean checkedDefereredConstraints; 529 boolean hasDefferedConstraints; 530 QualifiedIdentifier tableName; 531 boolean checkedHasAnyTriggersOnView; 532 boolean hasAnyTriggersOnView; 533 boolean isMataerializedTable; 534 boolean checkedForDateSpanTable; 535 boolean isDateSpanTable; 536 _Iterator materializedTableIterator; 537 boolean checkedForMaterialized; 538 boolean searchedMaterializedTables; 539 ArrayList materializedViewTables; 540 boolean checkedForIncludedInViewsHavingTrigger; 541 boolean checkedForIncludedInViews; 542 boolean isIncludedInViewsHavingTrigger; 543 ArrayList viewsList; 544 545 CharacteristicsPool(QualifiedIdentifier tableName) { 546 this.tableName = tableName; 547 } 548 549 public void setColumnCharacteristics(ColumnCharacteristics col) { 550 columnCharacteristics = new SoftReference(col); 551 } 552 553 public ColumnCharacteristics getColumnCharacteristics() { 554 return columnCharacteristics == null ? null : (ColumnCharacteristics) columnCharacteristics.get(); 555 } 556 557 public void setIndexCharacteristics(_IndexCharacteristics col) { 558 indexCharacteristics = new SoftReference(col); 559 } 560 561 public IndexCharacteristics getIndexCharacteristics() { 562 return indexCharacteristics == null ? null : (IndexCharacteristics) indexCharacteristics.get(); 563 } 564 565 public void setFullTextIndexCharacteristics(_FullTextIndexCharacteristics col) { 566 fullTextIndexCharacteristics = new SoftReference(col); 567 } 568 569 public FullTextIndexCharacteristics getFullTextIndexCharacteristics() { 570 return fullTextIndexCharacteristics == null ? null : (FullTextIndexCharacteristics) fullTextIndexCharacteristics.get(); 571 } 572 573 public void setDefaultValueGetter(_DefaultValueGetter col) { 574 defaultValueGetter = new SoftReference(col); 575 } 576 577 public DefaultValueGetter getDefaultValueGetter() { 578 return defaultValueGetter == null ? null : (DefaultValueGetter) defaultValueGetter.get(); 579 } 580 581 public void setRowLevelTriggerCharacteristics(_TriggerCharacteristics col) { 582 rowLevelTriggerCharacteristics = new SoftReference(col); 583 } 584 585 public TriggerCharacteristics getRowLevelTriggerCharacteristics() { 586 return rowLevelTriggerCharacteristics == null ? null : (TriggerCharacteristics) rowLevelTriggerCharacteristics.get(); 587 } 588 589 public void setStatementLevelTriggerCharacteristics(_TriggerCharacteristics col) { 590 statementLevelTriggerCharacteristics = new SoftReference(col); 591 } 592 593 public TriggerCharacteristics getStatementLevelTriggerCharacteristics() { 594 return statementLevelTriggerCharacteristics == null ? null : (TriggerCharacteristics) statementLevelTriggerCharacteristics.get(); 595 } 596 597 public void setDefferableCheckConstraintCharacteristics(_CheckConstraintCharacteristics col) { 598 defferableCheckConstraintCharacteristics = new SoftReference(col); 599 } 600 601 public CheckConstraintCharacteristics getDefferableCheckConstraintCharacteristics() { 602 return defferableCheckConstraintCharacteristics == null ? null : (CheckConstraintCharacteristics) defferableCheckConstraintCharacteristics.get(); 603 } 604 605 public void setNot_defferableCheckConstraintCharacteristics(_CheckConstraintCharacteristics col) { 606 not_defferableCheckConstraintCharacteristics = new SoftReference(col); 607 } 608 609 public CheckConstraintCharacteristics getNot_defferableCheckConstraintCharacteristics() { 610 return not_defferableCheckConstraintCharacteristics == null ? null : (CheckConstraintCharacteristics) not_defferableCheckConstraintCharacteristics.get(); 611 } 612 613 public void setDefferableReferencingConstraintsCharacteristics(_ReferencingConstraintCharacteristics col) { 614 defferableReferencingConstraintsCharacteristics = new SoftReference(col); 615 } 616 617 public ReferencingConstraintCharacteristics getDefferableReferencingConstraintsCharacteristics() { 618 return defferableReferencingConstraintsCharacteristics == null ? null : (ReferencingConstraintCharacteristics) defferableReferencingConstraintsCharacteristics.get(); 619 } 620 621 public void setNot_defferableReferencingConstraintsCharacteristics(_ReferencingConstraintCharacteristics col) { 622 not_defferableReferencingConstraintsCharacteristics = new SoftReference(col); 623 } 624 625 public ReferencingConstraintCharacteristics getNot_defferableReferencingConstraintsCharacteristics() { 626 return not_defferableReferencingConstraintsCharacteristics == null ? null : (ReferencingConstraintCharacteristics) not_defferableReferencingConstraintsCharacteristics.get(); 627 } 628 629 public void setDefferableReferencedConstraintsCharacteristics(_ReferencedConstraintCharacteristics col) { 630 defferableReferencedConstraintsCharacteristics = new SoftReference(col); 631 } 632 633 public ReferencedConstraintCharacteristics getDefferableReferencedConstraintsCharacteristics() { 634 return defferableReferencedConstraintsCharacteristics == null ? null : (ReferencedConstraintCharacteristics) defferableReferencedConstraintsCharacteristics.get(); 635 } 636 637 public void setNot_defferableReferencedConstraintsCharacteristics(_ReferencedConstraintCharacteristics col) { 638 not_defferableReferencedConstraintsCharacteristics = new SoftReference(col); 639 } 640 641 public ReferencedConstraintCharacteristics getNot_defferableReferencedConstraintsCharacteristics() { 642 return not_defferableReferencedConstraintsCharacteristics == null ? null : (ReferencedConstraintCharacteristics) not_defferableReferencedConstraintsCharacteristics.get(); 643 } 644 645 public void setDefferablePrimaryAndUniqueConstraintsCharacteristics(_PrimaryAndUniqueConstraintCharacteristics col) { 646 defferablePrimaryAndUniqueConstraintsCharacteristics = new SoftReference(col); 647 } 648 649 public PrimaryAndUniqueConstraintCharacteristics getDefferablePrimaryAndUniqueConstraintsCharacteristics() { 650 return defferablePrimaryAndUniqueConstraintsCharacteristics == null ? null : (PrimaryAndUniqueConstraintCharacteristics) defferablePrimaryAndUniqueConstraintsCharacteristics.get(); 651 } 652 653 public void setNot_defferablePrimaryAndUniqueConstraintsCharacteristics(_PrimaryAndUniqueConstraintCharacteristics col) { 654 not_defferablePrimaryAndUniqueConstraintsCharacteristics = new SoftReference(col); 655 } 656 657 public PrimaryAndUniqueConstraintCharacteristics getNot_defferablePrimaryAndUniqueConstraintsCharacteristics() { 658 return not_defferablePrimaryAndUniqueConstraintsCharacteristics == null ? null : (PrimaryAndUniqueConstraintCharacteristics) not_defferablePrimaryAndUniqueConstraintsCharacteristics.get(); 659 } 660 661 public void setViewCharacteristics(_ViewCharacteristics col) { 662 viewCharacteristics = new SoftReference(col); 663 } 664 665 public ViewCharacteristics getViewCharacteristics() { 666 return viewCharacteristics == null ? null : (ViewCharacteristics) viewCharacteristics.get(); 667 } 668 669 public void setViewObject(ViewObject col) { 670 viewObject = new SoftReference(col); 671 } 672 673 public ViewObject getViewObject() { 674 return viewObject == null ? null : (ViewObject) viewObject.get(); 675 } 676 677 678 } 679 680 class tempComparator extends SuperComparator { 681 public int compare(Object key1, Object key2) { 682 Object [] values1 = (Object []) key1; 683 Object [] values2 = (Object []) key2; 684 String user1 = (String ) values1[0]; 685 String user2 = (String ) values2[0]; 686 int comp = user1.compareToIgnoreCase(user2); 687 if (comp != 0) 688 return comp; 689 String [] roles1 = (String []) values1[1]; 690 String [] roles2 = (String []) values2[1]; 691 if (roles1 == null && roles2 == null) 692 return 0; 693 if (roles1 == null && roles2 != null) 694 return -1; 695 if (roles2 == null && roles1 != null) 696 return 1; 697 int len1 = roles1.length; 698 int len2 = roles2.length; 699 int len = len1 < len2 ? len1 : len2; 700 for (int i = 0; i < len; i++) { 701 comp = roles1[i].compareToIgnoreCase(roles2[i]); 702 if (comp != 0) 703 return comp; 704 } 705 return len1 - len2; 706 707 } 708 } 709 710 711 712 713 719 720 public _ViewObject getViewObject(QualifiedIdentifier viewName, _ServerSession serverSession) throws DException { 721 CharacteristicsPool characteristicsPool = getCharacteristicsPool(viewName); 722 _ViewObject viewObject = characteristicsPool.getViewObject(); 723 synchronized (characteristicsPool) { 724 try { 725 _ViewCharacteristics viewCharacteristics = getViewCharacteristics(viewName); 726 queryexpression queryExp = (queryexpression) Parser.parseQuery(viewCharacteristics.getViewQuery()); 727 serverSession = new ServerSessionWrapper(serverSession, viewName.catalog, viewName.schema); 728 queryExp.checkSemantic(serverSession, false); 729 viewObject = new ViewObject(queryExp); 730 } catch (TableException ex) { 731 InitializeException ie = new InitializeException("DSE1107", null); 732 ie.setException(ex); 733 throw ie; 734 } 735 } 736 return viewObject; 737 738 } 739 740 public ArrayList getMaterializedViewTables(QualifiedIdentifier tableName) throws DException { 741 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 742 if (characteristicsPool.searchedMaterializedTables) 743 return characteristicsPool.materializedViewTables; 744 745 synchronized (characteristicsPool) { 746 if (characteristicsPool.searchedMaterializedTables) 747 return characteristicsPool.materializedViewTables; 748 characteristicsPool.searchedMaterializedTables = true; 749 _SelectQueryIterator iter = (_SelectQueryIterator) preparedStatementGetter.getViewsForTableExecuter().executeForFresh(tableName.getTableName()); 750 751 if (!iter.first()) 752 return null; 753 ArrayList viewsList = new ArrayList(); 754 do { 755 Object [] values = (Object []) iter.getObject(); 756 viewsList.add(values); 757 } while (iter.next()); 758 Object [][] inParameters = new Object [viewsList.size()][]; 759 viewsList.toArray(inParameters); 760 iter = (_SelectQueryIterator) preparedStatementGetter.getMaterializedViewsFromViewsExecuter().executeForFresh(new Object [] {inParameters}); 761 if (!iter.first()) 762 return null; 763 ArrayList materializedViewTables = new ArrayList(); 764 do { 765 Object [] values = (Object []) iter.getObject(); 766 materializedViewTables.add(new QualifiedIdentifier( (String ) values[0], (String ) values[1], (String ) values[2])); 767 } while (iter.next()); 768 characteristicsPool.materializedViewTables = materializedViewTables; 769 return materializedViewTables; 770 } 771 } 772 773 public _Iterator getMaterializedQueryIterator(QualifiedIdentifier tableName, _ServerSession serverSession) throws DException { 774 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 775 _Iterator iterator = characteristicsPool.materializedTableIterator; 776 if (iterator != null) 777 return iterator; 778 synchronized (characteristicsPool) { 779 _SelectQueryIterator iter = (_SelectQueryIterator) preparedStatementGetter.getMataerailzedQueryDefinitionExecuter().executeForFresh(tableName.getTableName()); 780 if (!iter.first()) 781 throw new DException("DSE5028", new Object [] {tableName.getIdentifier()}); 782 String viewDefinition = (String ) ( (Object []) iter.getObject())[0]; 783 iterator = (_Iterator) serverSession.executeQuery(viewDefinition, 0); 784 characteristicsPool.materializedTableIterator = iterator; 785 } 786 return iterator; 787 } 788 789 public boolean isMaterializedTable(QualifiedIdentifier tableName) throws DException { 790 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 791 boolean checkedForMaterialized = characteristicsPool.checkedForMaterialized; 792 if (characteristicsPool.checkedForMaterialized) 793 return characteristicsPool.isMataerializedTable; 794 synchronized (characteristicsPool) { 795 characteristicsPool.checkedForMaterialized = true; 796 _Iterator iter = (_Iterator) preparedStatementGetter.getMataerailzedQueryDefinitionExecuter().executeForFresh(tableName.getTableName()); 797 characteristicsPool.isMataerializedTable = iter.first(); 798 } 799 return characteristicsPool.isMataerializedTable; 800 } 801 802 public boolean isDateSpanTable(QualifiedIdentifier tableName) throws DException { 803 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 804 if (characteristicsPool.checkedForDateSpanTable) 805 return characteristicsPool.isDateSpanTable; 806 synchronized (characteristicsPool) { 807 if (characteristicsPool.checkedForDateSpanTable) 808 return characteristicsPool.isDateSpanTable; 809 _Iterator iter = (_Iterator) preparedStatementGetter.getIsDateSpanTableExecuter().executeForFresh(tableName.getTableName()); 810 characteristicsPool.checkedForDateSpanTable = true; 811 characteristicsPool.isDateSpanTable = iter.first(); 812 return characteristicsPool.isDateSpanTable; 813 } 814 } 815 816 public boolean hasAnyTriggerOnView(QualifiedIdentifier viewName) throws DException { 817 CharacteristicsPool characteristicsPool = getCharacteristicsPool(viewName); 818 if (characteristicsPool.checkedHasAnyTriggersOnView) 819 return characteristicsPool.hasAnyTriggersOnView; 820 synchronized (characteristicsPool) { 821 822 if (characteristicsPool.checkedHasAnyTriggersOnView) 823 return characteristicsPool.hasAnyTriggersOnView; 824 try { 825 826 _Iterator iterator = (_Iterator) preparedStatementGetter.getHasAnyTriggerOnViewExecuter().executeForFresh(viewName.getTableName()); 827 characteristicsPool.checkedHasAnyTriggersOnView = true; 828 characteristicsPool.hasAnyTriggersOnView = iterator.first(); 829 830 } catch (TableException ex) { 831 InitializeException ie = new InitializeException("DSE1107", null); 832 ie.setException(ex); 833 throw ie; 834 } 835 } 836 return characteristicsPool.hasAnyTriggersOnView; 837 838 } 839 840 public _Sequence getSequenceInformation(QualifiedIdentifier sequenceIdentifier) throws DException { 841 SequenceNumberDescriptor sequenceDescriptor = new SequenceNumberDescriptor(); 842 sequenceDescriptor.sequence_catalog = sequenceIdentifier.catalog; 843 sequenceDescriptor.sequence_schema = sequenceIdentifier.schema; 844 sequenceDescriptor.sequence_name = sequenceIdentifier.name; 845 sequenceDescriptor.loadWithCurrentSession(serverSession); 846 return sequenceDescriptor; 847 } 848 849 public synchronized String generateIndexName() throws DException { 850 String query = "select max(" + SystemFields.systemFields[SystemFields.rowId] + ") from " + SystemTables.INDEXINFO; 851 _SelectQueryIterator iterator = SqlSchemaConstants.getIteratorOnCurrent(serverSession, query, null); 852 853 if (iterator.last()) { 854 Object sessionIdVal = ( (Object []) iterator.getObject())[0]; 855 long temp = sessionIdVal == null ? 0 : ( (Long ) sessionIdVal).longValue(); 856 if (temp > indexNextValue) 857 indexNextValue = temp; 858 } 859 return "INDEX_" + (++indexNextValue); 860 } 861 862 public synchronized String generateConstraintName(String name) throws DException { 863 String constrainMaxQuery = "select max(" + SystemFields.systemFields[SystemFields.rowId] + ") from " + 864 SystemTables.table_constraints_TableName; 865 _SelectQueryIterator iter = SqlSchemaConstants.getIteratorOnCurrent(serverSession, 866 constrainMaxQuery, null); 867 if (iter.last()) { 868 Object sessionIdVal = ( (Object []) iter.getObject())[0]; 869 constraintNumber = sessionIdVal == null ? 0 : sessionIdVal.hashCode(); 870 } 871 return name + (++constraintNumber); 872 } 873 874 public void addMaterializedTable(QualifiedIdentifier tableName, QualifiedIdentifier materailizedTableName) throws DException { 875 CharacteristicsPool characteristicsPool = (CharacteristicsPool) tableCharacteristicsMap.get(tableName); 876 if (characteristicsPool == null) 877 return; 878 if (characteristicsPool.searchedMaterializedTables) { 879 synchronized (characteristicsPool) { 880 881 ArrayList materializedTablesList = characteristicsPool.materializedViewTables; 882 if (materializedTablesList == null) 883 materializedTablesList = new ArrayList(); 884 materializedTablesList.add(materailizedTableName); 885 } 886 } 887 } 888 889 public void removeMaterializedTable(QualifiedIdentifier tableName, QualifiedIdentifier materailizedTableName) throws DException { 890 CharacteristicsPool characteristicsPool = (CharacteristicsPool) tableCharacteristicsMap.get(tableName); 891 if (characteristicsPool == null) 892 return; 893 if (characteristicsPool.searchedMaterializedTables) { 894 synchronized (characteristicsPool) { 895 ArrayList materializedTablesList = characteristicsPool.materializedViewTables; 896 materializedTablesList.remove(materailizedTableName); 897 } 898 } 899 } 900 901 public PreparedStatementGetter getPreparedStatementGetter() throws DException { 902 return preparedStatementGetter; 903 } 904 905 public boolean isTableUsedInViewHavingTriggers(QualifiedIdentifier tableName) throws DException { 906 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 907 if (characteristicsPool.checkedForIncludedInViewsHavingTrigger) 908 return characteristicsPool.isIncludedInViewsHavingTrigger; 909 910 synchronized (characteristicsPool) { 911 if (characteristicsPool.checkedForIncludedInViewsHavingTrigger) 912 return characteristicsPool.isIncludedInViewsHavingTrigger; 913 characteristicsPool.checkedForIncludedInViewsHavingTrigger = true; 914 _SelectQueryIterator iter = (_SelectQueryIterator) preparedStatementGetter.getViewsForTableExecuter().executeForFresh(tableName.getTableName()); 915 if (!iter.first()) { 916 characteristicsPool.isIncludedInViewsHavingTrigger = false; 917 return characteristicsPool.isIncludedInViewsHavingTrigger; 918 } 919 ArrayList viewsList = new ArrayList(); 920 do { 921 Object [] values = (Object []) iter.getObject(); 922 if (hasAnyTriggerOnView(new QualifiedIdentifier( (String ) values[0], (String ) values[1], (String ) values[2]))) { 923 characteristicsPool.isIncludedInViewsHavingTrigger = true; 924 return true; 925 } 926 927 } while (iter.next()); 928 return false; 929 } 930 } 931 932 public ArrayList getViewsOnTable(QualifiedIdentifier tableName) throws DException { 933 CharacteristicsPool characteristicsPool = getCharacteristicsPool(tableName); 934 if (characteristicsPool.checkedForIncludedInViews) 935 return characteristicsPool.viewsList; 936 937 synchronized (characteristicsPool) { 938 if (characteristicsPool.checkedForIncludedInViews) 939 return characteristicsPool.viewsList; 940 characteristicsPool.checkedForIncludedInViews = true; 941 _SelectQueryIterator iter = (_SelectQueryIterator) preparedStatementGetter.getViewsForTableExecuter().executeForFresh(tableName.getTableName()); 942 if (!iter.first()) { 943 return null; 944 } 945 ArrayList viewsList = new ArrayList(); 946 do { 947 Object [] values = (Object []) iter.getObject(); 948 viewsList.add(new QualifiedIdentifier( (String ) values[0], (String ) values[1], (String ) values[2])); 949 } while (iter.next()); 950 characteristicsPool.viewsList = viewsList; 951 return viewsList; 952 } 953 } 954 955 public void removeCheckConstraintForDomain(QualifiedIdentifier domianName) throws DException { 956 domainConstraintMap.remove(domianName); 957 } 958 959 public String generateDomianConstraintName() throws DException { 960 String constrainMaxQuery = "select max(" + SystemFields.systemFields[SystemFields.rowId] + ") from " + SystemTables.domain_constraints_TableName; 961 _SelectQueryIterator iter = SqlSchemaConstants.getIteratorOnCurrent(serverSession, constrainMaxQuery, null); 962 if (iter.last()) { 963 Object sessionIdVal = ( (Object []) iter.getObject())[0]; 964 domainConstraintNumber = sessionIdVal == null ? 0 : sessionIdVal.hashCode(); 965 } 966 return "DC_" + (++domainConstraintNumber); 967 } 968 969 public synchronized String generateSpecificName() throws DException { 970 String query = "select max(" + SystemFields.systemFields[SystemFields.rowId] + ") from " + SystemTables.routines_TableName; 971 _SelectQueryIterator iterator = SqlSchemaConstants.getIteratorOnCurrent(serverSession, query, null); 972 if (iterator.last()) { 973 Object sessionIdVal = ( (Object []) iterator.getObject())[0]; 974 long temp = sessionIdVal == null ? 0 : ( (Long ) sessionIdVal).longValue(); 975 if (temp > specificNextValue) 976 specificNextValue = temp; 977 } 978 return "SPECIFIC_" + (++specificNextValue); 979 } 980 981 public void lockDDL() throws DException { 982 ddlLock.lockTable(); 983 saveGeneratedKeyValues(); 984 } 985 986 private void saveGeneratedKeyValues() { 987 lastDomainKeyValue = domainConstraintNumber; 988 lastSpecificKeyValue = specificNextValue; 989 lastIndexKeyValue = indexNextValue; 990 lastConstraintKeyValue = constraintNumber; 991 } 992 993 public void releaseDDL() throws DException { 994 ddlLock.releaseTable(); 995 } 996 997 public boolean isValidRole(String roleName) throws DException { 998 _SelectQueryIterator iter = (_SelectQueryIterator) preparedStatementGetter.getIsValidRoleExecuter().executeForFresh(new Object [] {roleName}); 999 return iter.first(); 1000 } 1001 1002 public void refreshPrivilegeCharacteristics(String authorizationIdentifier) throws DException { 1003 privilegeCharacteristicsMap.remove(authorizationIdentifier); 1004 } 1005 1006 public void restoreGeneratedKeys() { 1007 domainConstraintNumber = lastDomainKeyValue; 1008 specificNextValue = lastSpecificKeyValue; 1009 indexNextValue = lastIndexKeyValue; 1010 constraintNumber = lastConstraintKeyValue; 1011 } 1012 1013 public boolean isValidSchema(String catalogName, String schemaName) throws DException { 1014 _SelectQueryIterator iter = (_SelectQueryIterator) preparedStatementGetter.getSchemataTableExecuter().executeForFresh(new Object [] {catalogName, schemaName}); 1015 return iter.first(); 1016 } 1017 1018 public _Iterator getIteratorForUserValidity(String userName) throws DException { 1019 return (_Iterator) preparedStatementGetter.getExecuterForUserValidity().executeForFresh(new Object [] {userName}); 1020 } 1021 1022 public void setSystemTableConstraint(boolean loadSystemTableConstraints0) { 1023 loadSystemTableConstraints = loadSystemTableConstraints0; 1024 } 1025 1026 public boolean getSystemTableConstraint() { 1027 return loadSystemTableConstraints; 1028 } 1029 1030 public _ServerSession getServerSession() { 1031 return serverSession; 1032 } 1033} 1034 | Popular Tags |