IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 33492 for trunk/ippToPsps


Ignore:
Timestamp:
Mar 13, 2012, 10:06:25 AM (14 years ago)
Author:
rhenders
Message:

dvoDetectionFull table now has a foreign key constraint on dvoDone, so deletions from the latter will cascade to the former; now just one method to completely reset all DVO tables

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippToPsps/jython/scratchdb.py

    r33432 r33492  
    424424               continue
    425425
    426            sql = "DELETE FROM " + self.dvoDetectionTable + " WHERE fileID = " + str(fileId)
    427            try: self.execute(sql)
    428            except:
    429                self.logger.errorPair("Unable to delete from " + self.dvoDetectionTable, "for file ID: %d" % fileId)
    430                return False
    431 
    432426           sql = "DELETE FROM " + self.dvoDoneTable + " WHERE region = '" + region + "'"
    433427           try: self.execute(sql)
     
    444438           
    445439    '''
    446     Drops DVO stuff pertaining to detections
    447     '''
    448     def resetDvoDetectionTables(self):
    449 
    450        self.logger.infoPair("Deleting detections from", self.dvoDoneTable)
    451        sql = "DELETE FROM " + self.dvoDoneTable + " WHERE path LIKE '%cpm' OR path LIKE '%cpt'"
     440    Drops and recreates tables necessary for dvoToMySQL program. Be very careful before using this...
     441    '''
     442    def resetAllDvoTables(self):
     443
     444       # drop all dvo tables - NB detections have to be deleted prior to dvoDone due to foreign key constraint
     445       self.logger.infoPair("Dropping table", self.dvoImagesTable)
     446       self.dropTable(self.dvoImagesTable)
     447       self.logger.infoPair("Dropping table", self.dvoSkyTable)
     448       self.dropTable(self.dvoSkyTable)
     449       self.logger.infoPair("Dropping table", self.dvoDetectionTable)
     450       self.dropTable(self.dvoDetectionTable)
     451       self.logger.infoPair("Dropping table", self.dvoDoneTable)
     452       self.dropTable(self.dvoDoneTable)
     453
     454       # create dvoDone table
     455       self.logger.infoPair("Creating table", self.dvoDoneTable)
     456       sql = "CREATE TABLE " + self.dvoDoneTable + " (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, region VARCHAR(100), path VARCHAR(1000), modifiedDate BIGINT, size BIGINT)"
    452457       try: self.execute(sql)
    453458       except:
    454            self.logger.errorPair("Unable to delete from", self.dvoDoneTable)
     459           self.logger.errorPair("Unable to create table", self.dvoDoneTable)
    455460           return False
    456461
    457        self.logger.infoPair("Dropping table", self.dvoDetectionTable)
    458        self.dropTable(self.dvoDetectionTable)
    459 
     462       self.changeEngineToInnoDB(self.dvoDoneTable)
     463
     464       # create detections table
    460465       self.logger.infoPair("Creating table", self.dvoDetectionTable)
    461466       sql = "CREATE TABLE " + self.dvoDetectionTable + " LIKE dvoDetection"
     
    464469           self.logger.errorPair("Unable to create table", self.dvoDetectionTable)
    465470           return False
    466 
    467        # TODO
     471       self.changeEngineToInnoDB(self.dvoDetectionTable)
     472
     473       # add fileID column
    468474       sql = "ALTER TABLE " + self.dvoDetectionTable + " ADD fileID INT NOT NULL"
    469475       try: self.execute(sql)
     
    472478           return False
    473479
    474     '''
    475     Drops and recreates tables necessary for dvoToMySQL program. Be very careful before using this...
    476     '''
    477     def resetAllDvoTables(self):
    478 
    479        self.logger.infoPair("Dropping table", self.dvoImagesTable)
    480        self.dropTable(self.dvoImagesTable)
    481        self.logger.infoPair("Dropping table", self.dvoSkyTable)
    482        self.dropTable(self.dvoSkyTable)
    483        self.logger.infoPair("Dropping table", self.dvoDoneTable)
    484        self.dropTable(self.dvoDoneTable)
    485 
    486        # create dvoDone table
    487        self.logger.infoPair("Creating table", self.dvoDoneTable )
    488        sql = "CREATE TABLE " + self.dvoDoneTable + " (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, region VARCHAR(100), path VARCHAR(1000), modifiedDate BIGINT, size BIGINT)"
     480       # add an index to the fileID column
     481       self.createIndex(self.dvoDetectionTable, "fileID")
     482
     483       # now add a delete cascading foreign key constraint on fileID
     484       sql = "ALTER TABLE dvoDetectionFull \
     485              ADD CONSTRAINT fk_fileID \
     486              FOREIGN KEY (fileID) \
     487              REFERENCES dvoDone(id) \
     488              ON DELETE CASCADE"
    489489       try: self.execute(sql)
    490        except: self.logger.errorPair("Unable to create table", self.dvoDoneTable)
    491 
    492        self.resetDvoDetectionTables()
     490       except:
     491           self.logger.errorPair("Unable to create foreign key on", self.dvoDoneTable)
     492           return False
     493
     494       return True
    493495
    494496    '''
Note: See TracChangeset for help on using the changeset viewer.