[prev] 48 [next]

Deletion in Heaps

SQL:  delete from R  where Condition

Implementation of deletion:

f = openFile(fileName("R"),READ|WRITE);
for (p = 0; p < nPages(f); p++) {
    buf = readPage(f, p);
    ndels = 0;
    for (i = 0; i < nTuples(buf); i++) {
        tup = getTuple(buf,i);
        if (tup satisfies Condition)
            { ndels++; deleteTuple(buf,i); }
    }
    if (ndels > 0) writePage(f, p, buf);
    if (ndels > 0 && unique) break;
}

If buffers,   read = request,   write = mark-as-dirty