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

Log in
Name

Password

 
 

History for InsertAbortedVersionAsNew

??changed:
-
<pre>
SELECT rec.z_oid, %s, rec.z_serial, 'c', 0, '', '', nv.z_dataserial
FROM %s rec, %s nv
WHERE rec.z_version = %s
AND rec.z_status = 'c'
AND rec.z_data IS NULL
AND rec.z_dataserial != ''
AND rec.z_nv = nv.z_serial
AND rec.z_oid = nv.z_oid 
</pre>
Feed that sql the serial, the name of the data table, the name of the data table again, and the version name.
<br>

for each row:

INSERT INTO %(data)s
                 (z_oid, z_serial, z_pre, z_status, z_datalen, z_version, z_nv,
                 z_dataserial) values (?, ?, ?, ?, ?, ?, ?, ?) 

<br>
then select again a different set (interbase doesn't have an "if")
<pre>
 SELECT rec.z_oid, %s, rec.z_serial,'c',0,'','', nv.z_serial
              FROM %s rec, %s nv
              WHERE rec.z_version = %s
              AND rec.z_status = 'c'
              AND rec.z_data IS NOT NULL
              AND rec.z_dataserial = ''
              AND rec.z_nv = nv.z_serial
              AND rec.z_oid = nv.z_oid 
</pre>
<br>
for each row returned:
<pre>
 INSERT INTO %(data)s
                 (z_oid, z_serial, z_pre, z_status, z_datalen, z_version, z_nv,
                 z_dataserial) values (?, ?, ?, ?, ?, ?, ?, ?) 
</pre>
<br>
Then finally insert "ghost" records for version items that were created inside the version that need to be undone to:

<pre>
 SELECT z_oid, %s, z_serial,'g',0,'','', ''
              FROM %s
              WHERE z_version = %s
              AND z_status = 'c'
              AND z_nv = '' "
</pre>
For each record:

<pre>
INSERT INTO %(data)s
                 (z_oid, z_serial, z_pre, z_status, z_datalen, z_version, z_nv,
                 z_dataserial) values (?, ?, ?, ?, ?, ?, ?, ?) 
</pre>
<br>
These should all be insert-selects and should be combined into one or two queries if possible.  Python logic should not be used to do this.  I just couldn't get it to work otherwise and bailed.