def bookNewEntry(schema,datatableName): ''' allocate new revision_id,entry_id,data_id ''' try: entrytableName=nameDealer.entryTableName(datatableName) iddealer=idDealer.idDealer(schema) revision_id=iddealer.generateNextIDForTable( nameDealer.revisionTableName() ) data_id=iddealer.generateNextIDForTable( datatableName) entry_id=iddealer.generateNextIDForTable( nameDealer.entryTableName(datatableName) ) return (revision_id,entry_id,data_id) except: raise
def dropTables(schema,tablelist): try: db=dbUtil.dbUtil(schema) for tablename in tablelist: if tablename in [nameDealer.luminormTableName(),nameDealer.lumidataTableName(),nameDealer.trgdataTableName(),nameDealer.hltdataTableName()]: db.dropTable( nameDealer.idTableName(tablename) ) db.dropTable( nameDealer.entryTableName(tablename) ) db.dropTable( nameDealer.revmapTableName(tablename) ) if tablename in [nameDealer.trgTableName(),nameDealer.lumisummaryTableName(),nameDealer.lumisummaryv2TableName(),nameDealer.lumidetailTableName(),nameDealer.hltTableName()]: db.dropTable( nameDealer.idTableName(tablename) ) db.dropTable( tablename ) except : raise
def addEntry(schema,datatableName,entryinfo,branchinfo): ''' input: entryinfo (revision_id(0),entry_id(1),entry_name(2),data_id(3)) branchinfo (branch_id,branch_name) 1.allocate and insert a new revision into the revisions table 2.allocate and insert a new entry into the entry table with the new revision 3.inset into data_rev table with new data_id ,revision)id mapping insert into revisions(revision_id,branch_id,branch_name,comment,ctime) values() insert into datatablename_entries (entry_id,revision_id) values() insert into datatablename_rev(data_id,revision_id) values() ''' try: revisiontableName=nameDealer.revisionTableName() entrytableName=nameDealer.entryTableName(datatableName) revtableName=nameDealer.revmapTableName(datatableName) db=dbUtil.dbUtil(schema) tabrowDefDict={} tabrowDefDict['REVISION_ID']='unsigned long long' tabrowDefDict['BRANCH_ID']='unsigned long long' tabrowDefDict['BRANCH_NAME']='string' tabrowDefDict['CTIME']='time stamp' tabrowValueDict={} tabrowValueDict['REVISION_ID']=entryinfo[0] tabrowValueDict['BRANCH_ID']=branchinfo[0] tabrowValueDict['BRANCH_NAME']=branchinfo[1] tabrowValueDict['CTIME']=coral.TimeStamp() db.insertOneRow(revisiontableName,tabrowDefDict,tabrowValueDict) tabrowDefDict={} tabrowDefDict['REVISION_ID']='unsigned long long' tabrowDefDict['ENTRY_ID']='unsigned long long' tabrowDefDict['NAME']='string' tabrowValueDict={} tabrowValueDict['REVISION_ID']=entryinfo[0] tabrowValueDict['ENTRY_ID']=entryinfo[1] tabrowValueDict['NAME']=entryinfo[2] db.insertOneRow(entrytableName,tabrowDefDict,tabrowValueDict) tabrowDefDict={} tabrowDefDict['REVISION_ID']='unsigned long long' tabrowDefDict['DATA_ID']='unsigned long long' tabrowValueDict={} tabrowValueDict['REVISION_ID']=entryinfo[0] tabrowValueDict['DATA_ID']=entryinfo[3] db.insertOneRow(revtableName,tabrowDefDict,tabrowValueDict) except: raise
def createTable( self,description,withIdTable=False,withEntryTables=False,withRevMapTable=False): """ Create table if non-existing, create Id table if required """ try: tableHandle=self.__schema.createTable(description) tableName=tableHandle.description().name() tableHandle.privilegeManager().grantToPublic(coral.privilege_Select) if withIdTable is True: self.createIDTable(tableName,True) if withEntryTables is True: entrytableName=nameDealer.entryTableName(tableName) self.createEntryTable(tableName,True) self.createIDTable(entrytableName,True) if withRevMapTable is True: self.createRevMapTable(tableName,True) except Exception, e: raise RuntimeError('dbUtil.createTable'+str(e))
def entryInBranch(schema,datatableName,entryname,branch): ''' whether an entry(by name) already exists in the given branch select e.entry_id from entrytable e,revisiontable r where r.revision_id=e.revision_id and e.name=:entryname and r.branch_name=branchname/branch_id input: if isinstance(branch,str):byname else: byid output:entry_id/None ''' try: result=None byname=False if isinstance(branch,str): byname=True qHandle=schema.newQuery() qHandle.addToTableList( nameDealer.entryTableName(datatableName),'e' ) qHandle.addToTableList( nameDealer.revisionTableName(),'r' ) qHandle.addToOutputList('e.ENTRY_ID','entry_id') qCondition=coral.AttributeList() qCondition.extend('entryname','string') qCondition['entryname'].setData(entryname) qConditionStr='r.REVISION_ID=e.REVISION_ID and e.NAME=:entryname and ' if byname: qCondition.extend('branch_name','string') qCondition['branch_name'].setData(branch) qConditionStr+='r.BRANCH_NAME=:branch_name' else: qCondition.extend('branch_id','unsigned long long') qCondition['branch_id'].setData(branch) qConditionStr+='r.BRANCH_ID=:branch_id' qResult=coral.AttributeList() qResult.extend('entry_id','unsigned long long') qHandle.defineOutput(qResult) qHandle.setCondition(qConditionStr,qCondition) cursor=qHandle.execute() while next(cursor): entry_id=cursor.currentRow()['entry_id'].data() result=entry_id del qHandle return result except : raise
def createEntryTable( self, tableName, deleteOld=True ): """ Create Entry table for the given table.\n Input: name of the table which needs new associated id table Output: name of the id table created """ try: entrytableName=nameDealer.entryTableName(tableName) if deleteOld is True: self.__schema.dropIfExistsTable(entrytableName) else: if self.__schema.existsTable(entrytableName): print 'table '+entrytableName+' exists, do nothing' return description = coral.TableDescription() description.setName( entrytableName ) description.insertColumn( 'ENTRY_ID' ,'unsigned long long') description.insertColumn( 'REVISION_ID' ,'unsigned long long') description.insertColumn( 'NAME' ,'string',56,False) tableHandle=self.__schema.createTable( description ) tableHandle.privilegeManager().grantToPublic(coral.privilege_Select) except Exception, e: raise RuntimeError(' dbUtil.createEntryTable '+str(e))
def dropTables(schema, tablelist): try: db = dbUtil.dbUtil(schema) for tablename in tablelist: if tablename in [ nameDealer.luminormTableName(), nameDealer.lumidataTableName(), nameDealer.trgdataTableName(), nameDealer.hltdataTableName() ]: db.dropTable(nameDealer.idTableName(tablename)) db.dropTable(nameDealer.entryTableName(tablename)) db.dropTable(nameDealer.revmapTableName(tablename)) if tablename in [ nameDealer.trgTableName(), nameDealer.lumisummaryTableName(), nameDealer.lumisummaryv2TableName(), nameDealer.lumidetailTableName(), nameDealer.hltTableName() ]: db.dropTable(nameDealer.idTableName(tablename)) db.dropTable(tablename) except: raise