public Right(Database db, int id, RightOwner grantee, int grantedRight, DbObject grantedObject) { super(db, id, "" + id, Trace.USER); this.grantee = grantee; this.grantedRight = grantedRight; this.grantedObject = grantedObject; // TODO 如何更优雅的处理临时对象的授权(或者内存数据库中的所有对象的授权) // grantedObject有可能为null,如: GRANT ALTER ANY SCHEMA if (grantedObject != null && (grantedObject.isTemporary() || !grantedObject.getDatabase().isPersistent())) setTemporary(true); }
private void addMeta(ServerSession session, DbObject obj) { int id = obj.getId(); if (id > 0 && !starting && !obj.isTemporary()) { Row r = meta.getTemplateRow(); MetaRecord rec = new MetaRecord(obj); rec.setRecord(r); synchronized (objectIds) { objectIds.set(id); } // if (SysProperties.CHECK) { // verifyMetaLocked(session); // } meta.addRow(session, r); } }