Thread: CurrentMemoryContext

CurrentMemoryContext

From
Bob Parkinson
Date:
Is CurrentMemoryContext a postgres symbol that I can link against?

Sorry if this is not a postgres question, it may be down to my ignorance
of C, perl or something else.

I've got a bit of code (a stemmer written in C) that I want to make
accessable to postgres, as a .so, and perl. The .so bit works, but I'm
trying to now build the Perl module calling the C code. I'm getting

Undefined symbol "CurrentMemoryContext"

I can see this symbol refered to in palloc.h but beond that I'm stuck.

Bob Parkinson
rwp@biome.ac.uk
------------------------------------------------------------------
Technical Manager:         Biome             http://biome.ac.uk/

Greenfield Medical Library,
Queens Medical Centre,
Nottingham.                          0115 9249924 x 42059
------------------------------------------------------------------
                        We are stardust



Re: CurrentMemoryContext

From
Tom Lane
Date:
Bob Parkinson <rwp@biome.ac.uk> writes:
> Is CurrentMemoryContext a postgres symbol that I can link against?

Yes, it should be accessible to shared libs that are loaded into a
backend.

> accessable to postgres, as a .so, and perl. The .so bit works, but I'm
> trying to now build the Perl module calling the C code. I'm getting

> Undefined symbol "CurrentMemoryContext"

If I'm visualizing your setup correctly, you are trying to load this
code into a Perl executable?  It's not going to work to load backend
code into Perl, because none of the backend support routines are going
to be accessible.  Probably CurrentMemoryContext is just by chance the
first unresolvable symbol the linker found --- there'll be more if you
get past that one.

Code that's supposed to go into non-backend contexts shouldn't be using
any Postgres-specific include files...

            regards, tom lane

Re: CurrentMemoryContext

From
Bob Parkinson
Date:
I was trying to have a single .so that I can use in postgres, but
also by a perlXS function. I want access to the same function within
postgres, and externally in perl. Trying to get a single bit of code.

I'll restructure this bit of code, to take you comments into account.

cheers,

Bob

On Tue, 7 Nov 2000, Tom Lane wrote:

> Bob Parkinson <rwp@biome.ac.uk> writes:
> > Is CurrentMemoryContext a postgres symbol that I can link against?
>
> Yes, it should be accessible to shared libs that are loaded into a
> backend.
>
> > accessable to postgres, as a .so, and perl. The .so bit works, but I'm
> > trying to now build the Perl module calling the C code. I'm getting
>
> > Undefined symbol "CurrentMemoryContext"
>
> If I'm visualizing your setup correctly, you are trying to load this
> code into a Perl executable?  It's not going to work to load backend
> code into Perl, because none of the backend support routines are going
> to be accessible.  Probably CurrentMemoryContext is just by chance the
> first unresolvable symbol the linker found --- there'll be more if you
> get past that one.
>
> Code that's supposed to go into non-backend contexts shouldn't be using
> any Postgres-specific include files...
>
>             regards, tom lane
>

Bob Parkinson
rwp@biome.ac.uk
------------------------------------------------------------------
Technical Manager:         Biome             http://biome.ac.uk/

Greenfield Medical Library,
Queens Medical Centre,
Nottingham.                          0115 9249924 x 42059
------------------------------------------------------------------
                        We are stardust