This is a first pass on a simple shared memory variable system for
PostgreSQL. I would appriciate anyone interested in this functionality to
rip it apart.

It basically adds this functionality:

SetShared('name', value);

I also added two extra functions that are sort of a kludge, but could be
very helpful.

AddSharedInt('name', value);
SubSharedInt('name', value);

These add or subtect the 'value' from the variable and return the result.

Something that I've found very useful when dealing with shared memory is the ability to do atomic exchange of values. With that in place, its possible to perform atomic operations involving several variables.

Perhaps it could be as simple as splitting your SetShared into SetSharedInt and SetSharedString and then have them return the old value?

Here's an example of what I mean (I use C syntax for clarity, I know the intended use is from SQL).

    /* Loop until something other than LOCKED is returned. When
     * that happens, we have the lock.
    while(SetSharedInt('lock', LOCKED) == LOCKED)

    Set a group of variables here.

    /* Unlock
    SetSharedInt('lock', UNLOCKED);


Thomas Hallgren

---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster

Reply via email to