Annotation of 42BSD/ingres/source/iutil/noclose.c, revision 1.1

1.1     ! root        1: # include      <ingres.h>
        !             2: # include      <aux.h>
        !             3: # include      <access.h>
        !             4: # include      <sccs.h>
        !             5: 
        !             6: SCCSID(@(#)noclose.c   7.1     2/5/81)
        !             7: 
        !             8: /*
        !             9: **     noclose - update system catalogs for a relation
        !            10: **     DESCRIPTION
        !            11: **
        !            12: **     function values:
        !            13: **
        !            14: **             <0  fatal error
        !            15: **              0  success
        !            16: **              1  relation was not open
        !            17: */
        !            18: 
        !            19: 
        !            20: noclose(d)
        !            21: register DESC  *d;
        !            22: {
        !            23:        register int    i;
        !            24:        struct relation rel;
        !            25: 
        !            26: #      ifdef xATR1
        !            27:        if (tTf(21, 12))
        !            28:                printf("noclose: %.14s,%ld\n", d->reldum.relid, d->reladds);
        !            29: #      endif
        !            30: 
        !            31:        /* make sure relation relation is read/write mode */
        !            32:        if (abs(d->relopn) != (d->relfp + 1) * 5)
        !            33:                return (1);
        !            34: 
        !            35:        /* flush all pages associated with relation */
        !            36:        /* if system catalog, reset all the buffers so they can't be reused */
        !            37:        i = flush_rel(d, d->reldum.relstat & S_CATALOG);
        !            38: 
        !            39:        /* check to see if number of tuples has changed */
        !            40:        if (d->reladds != 0)
        !            41:        {
        !            42:                /* yes, update the system catalogs */
        !            43:                /* get tuple from relation relation */
        !            44:                Admin.adreld.relopn = (Admin.adreld.relfp + 1) * -5;
        !            45:                if (i = get_page(&Admin.adreld, &d->reltid.s_tupid))
        !            46:                        return (i);     /* fatal error */
        !            47: 
        !            48:                /* get the actual tuple */
        !            49:                get_tuple(&Admin.adreld, &d->reltid.s_tupid, (char *) &rel);
        !            50: 
        !            51:                /* update the reltups field */
        !            52:                rel.reltups += d->reladds;
        !            53:                d->reldum.reltups = rel.reltups;
        !            54: 
        !            55:                /* put the tuple back */
        !            56:                put_tuple(&d->reltid.s_tupid, (char *) &rel, sizeof rel);
        !            57:                i = resetacc(Acc_head);
        !            58:                d->reladds = 0;
        !            59:        }
        !            60:        return (i);
        !            61: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.