You are not logged in Log in Join
You are here: Home » Members » jim » ZODB » RelationalStorageSQLCallsByMethod

Log in
Name

Password

 
 

History for RelationalStorageSQLCallsByMethod

??changed:
-
Artifact RelationalStorageSQLCallsByMethod

 Database:  Interbase 6.0 beta

 Class:  InterbaseStorage(BaseStorage)

 Imports:

 'struct', 'TimeStamp', 'POSException', 'BaseStorage'

 Methods:

  __init__(self, conn, name="", zodb_data="zodb_data", zodb_trans="zodb_trans", zodb_pack="zodb_pack")

    [testConn]

   GetLastOid

  __len__(self)

    GetNumberOfCurrentRecords

  abortVersion(self, version, transaction)

    GetCurrentOidsInVersion

    InsertAbortedVersionAsNew

    MakeCurrentVersionRecordsHistorical


  commitVersion(self, source, destination, transaction)

    GetCurrentOidsInVersion

    InsertCommittedVersionAsNew

    MakeCurrentVersionRecordsHistorical

  load(self, oid, version)
    
    GetCurrent

    GetHistorical

  store(self, oid, serial, data, version, transaction)

    GetCurrent

    InsertObject

    SetStatus

  close(self)

    pass

  getSize(self)

    <pre>
    def getSize(self):
        if self._debug:
            print "getSize"
        dcs = self._doCommittedSQL
        tables = self._tables
        cmd = ("SELECT SUM(%(data)s.z_datalen) FROM %(data)s" % tables)
        datasize = int(dcs(cmd=cmd, fetch="one")[0])
        cmd = ("SELECT COUNT(*) FROM %(data)s" % tables)
        numrecs = int(dcs(cmd=cmd, fetch="one")[0])
        cmd = ("SELECT COUNT(*) FROM %(trans)s" % tables)
        numtrans = int(dcs(cmd=cmd, fetch="one")[0])
        data_overhead    = (12 + 12 + 12 + 1 + 32 + 12) * numrecs
        trans_overhead   = (12 + 1 + 255 + 255 + 255) * numtrans
        overhead = data_overhead + trans_overhead
        wag_size = overhead + datasize
        return wag_size # seems to be about 1/2 the diskfile size
    </pre>

  loadSerial

     GetHistorical

  history

    <pre>
    SELECT %(data)s.z_serial,%(trans)s.z_user,%(trans)s.z_desc,
                         %(data)s.z_version,%(data)s.z_datalen
                  FROM %(data)s, %(trans)s
                  WHERE %(data)s.z_oid = ?
                  AND %(data)s.z_status IN ('c', 'h')
                  AND (%(data)s.z_version = '' OR %(data)s.z_version = ?)
                  AND %(data)s.z_serial = %(trans)s.z_serial
                  ORDER BY %(data)s.z_serial DESCENDING
    </pre>

  modifiedInVersion

    GetCurrent

  supportsUndo

    Return 1

  supportsVersions

    Return 1

  _begin(self, tid, u, d, e)

    - Start a new DB transaction

  _finish(self, tid, u, d, e)

    InsertTrans

  undo

    TransactionExists

    TransactionIsUndoable

    GetCurrentOidsWithAPre

    MarkOldRecordsAsCurrent

    DeleteDataRecords

    DeleteTransactionRecord

  undoLog

    <pre>
     SELECT z_serial, z_status, z_user, z_desc, z_ext
     FROM %(trans)s
    </pre>

  versionEmpty

    <pre>
     SELECT * FROM %(data)s
     WHERE z_version = ?
     AND z_status = 'c'
   </pre>

  versions

    <pre>
       SELECT DISTINCT z_version FROM %(data)s
    </pre>

  pack

     Insert potentially packable data into pack table
    <pre>
    INSERT INTO %(pack)s (z_oid, z_serial)
                       SELECT z_oid, MAX(z_serial)
                       FROM %(data)s
                       WHERE z_serial < ?
                       GROUP BY z_oid </pre>
     while rootl:
    <pre>
     INSERT INTO %(pack)s (z_oid, z_serial)
     SELECT z_oid, MAX(z_serial)
     FROM %(data)s
     WHERE z_serial < ?
     GROUP BY z_oid
    </pre>
     for each object with forward references:
    <pre>
     DELETE FROM %(pack)s
     WHERE z_oid = ?
    </pre>
     all the records left in the pack table get deleted from the data table
    <pre>
     DELETE FROM %(data)s WHERE z_oid IN
     (SELECT z_oid FROM zodb_pack)
     AND z_serial < ? 
    </pre>
     delete all the records from the trans table earlier than stop time.
    <pre>
     DELETE FROM %(trans)s
     WHERE z_serial < ? 
    </pre>
     clean up the pack table
    <pre>
     DELETE FROM %(pack)s 
    </pre>