KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > datadictionarysystem > DataDictionary


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 /*,_MemoryHandler */ {
24    Map tableCharacteristicsMap;
25    _ServerSession serverSession;
26    PreparedStatementGetter preparedStatementGetter;
27    _Database fileDatabase;
28    String JavaDoc 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 JavaDoc 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 JavaDoc userName, String JavaDoc roleName) throws DException {
71       _SelectQueryIterator iter = (_SelectQueryIterator) preparedStatementGetter.getRoleAuthorizationsExecuterforGranteeOnly().executeForFresh(new Object JavaDoc[] {userName});
72       if (! (iter.first()))
73          throw new DException("DSE875", new Object JavaDoc[] {roleName, userName});
74       do {
75          Object JavaDoc[] values = (Object JavaDoc[]) iter.getColumnValues();
76          if (roleName.equalsIgnoreCase( (String JavaDoc) ( (FieldBase) values[0]).getObject())) {
77             return true;
78          } else {
79             String JavaDoc[] applicableRolesOfRole = GeneralUtility.getApplicableRoleNames( ( (DataDictionary) serverSession.getDataDictionary()).getPreparedStatementGetter(), (String JavaDoc) ( (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  /* private boolean isBlobClob(int type) throws DException {
90       return type == Datatype.BLOB ||
91           type == Datatype.BINARYLARGEOBJECT ||
92           type == Datatype.LONGVARBINARY ||
93
94           type == Datatype.CLOB ||
95           type == Datatype.CHARACTERLARGEOBJECT ||
96           type == Datatype.CHARLARGEOBJECT ||
97           type == Datatype.LONGVARCHAR;
98    }*/

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 JavaDoc 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 JavaDoc[] {identifier.catalog, identifier.schema, identifier.getName()});
305          if (!constraintsIterator.first())
306             return null;
307          ArrayList constraintsList = new ArrayList();
308          Object JavaDoc[] values = (Object JavaDoc[]) 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 /*implements Comparator */ {
681       public int compare(Object JavaDoc key1, Object JavaDoc key2) {
682          Object JavaDoc[] values1 = (Object JavaDoc[]) key1;
683          Object JavaDoc[] values2 = (Object JavaDoc[]) key2;
684          String JavaDoc user1 = (String JavaDoc) values1[0];
685          String JavaDoc user2 = (String JavaDoc) values2[0];
686          int comp = user1.compareToIgnoreCase(user2);
687          if (comp != 0)
688             return comp;
689          String JavaDoc[] roles1 = (String JavaDoc[]) values1[1];
690          String JavaDoc[] roles2 = (String JavaDoc[]) 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 /* private _Iterator getIterator(String query, Object[] parameters) throws DException {
714       if (parameters == null)
715          return (_Iterator) serverSession.executeQuery(query, 0);
716       _Executer executer = (_Executer) serverSession.executeQueryParameterised(query, 0); ;
717       return (_Iterator) executer.execute(parameters);
718    }*/

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 JavaDoc[] values = (Object JavaDoc[]) iter.getObject();
756             viewsList.add(values);
757          } while (iter.next());
758          Object JavaDoc[][] inParameters = new Object JavaDoc[viewsList.size()][];
759          viewsList.toArray(inParameters);
760          iter = (_SelectQueryIterator) preparedStatementGetter.getMaterializedViewsFromViewsExecuter().executeForFresh(new Object JavaDoc[] {inParameters});
761          if (!iter.first())
762             return null;
763          ArrayList materializedViewTables = new ArrayList();
764          do {
765             Object JavaDoc[] values = (Object JavaDoc[]) iter.getObject();
766             materializedViewTables.add(new QualifiedIdentifier( (String JavaDoc) values[0], (String JavaDoc) values[1], (String JavaDoc) 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 JavaDoc[] {tableName.getIdentifier()});
782          String JavaDoc viewDefinition = (String JavaDoc) ( (Object JavaDoc[]) 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 JavaDoc generateIndexName() throws DException {
850       String JavaDoc 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 JavaDoc sessionIdVal = ( (Object JavaDoc[]) iterator.getObject())[0];
855          long temp = sessionIdVal == null ? 0 : ( (Long JavaDoc) sessionIdVal).longValue();
856          if (temp > indexNextValue)
857             indexNextValue = temp;
858       }
859       return "INDEX_" + (++indexNextValue);
860    }
861
862    public synchronized String JavaDoc generateConstraintName(String JavaDoc name) throws DException {
863       String JavaDoc 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 JavaDoc sessionIdVal = ( (Object JavaDoc[]) 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 JavaDoc[] values = (Object JavaDoc[]) iter.getObject();
922             if (hasAnyTriggerOnView(new QualifiedIdentifier( (String JavaDoc) values[0], (String JavaDoc) values[1], (String JavaDoc) 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 JavaDoc[] values = (Object JavaDoc[]) iter.getObject();
948             viewsList.add(new QualifiedIdentifier( (String JavaDoc) values[0], (String JavaDoc) values[1], (String JavaDoc) 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 JavaDoc generateDomianConstraintName() throws DException {
960       String JavaDoc 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 JavaDoc sessionIdVal = ( (Object JavaDoc[]) iter.getObject())[0];
964          domainConstraintNumber = sessionIdVal == null ? 0 : sessionIdVal.hashCode();
965       }
966       return "DC_" + (++domainConstraintNumber);
967    }
968
969    public synchronized String JavaDoc generateSpecificName() throws DException {
970       String JavaDoc 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 JavaDoc sessionIdVal = ( (Object JavaDoc[]) iterator.getObject())[0];
974          long temp = sessionIdVal == null ? 0 : ( (Long JavaDoc) 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 JavaDoc roleName) throws DException {
998       _SelectQueryIterator iter = (_SelectQueryIterator) preparedStatementGetter.getIsValidRoleExecuter().executeForFresh(new Object JavaDoc[] {roleName});
999       return iter.first();
1000   }
1001
1002   public void refreshPrivilegeCharacteristics(String JavaDoc 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 JavaDoc catalogName, String JavaDoc schemaName) throws DException {
1014      _SelectQueryIterator iter = (_SelectQueryIterator) preparedStatementGetter.getSchemataTableExecuter().executeForFresh(new Object JavaDoc[] {catalogName, schemaName});
1015      return iter.first();
1016   }
1017
1018   public _Iterator getIteratorForUserValidity(String JavaDoc userName) throws DException {
1019      return (_Iterator) preparedStatementGetter.getExecuterForUserValidity().executeForFresh(new Object JavaDoc[] {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