Re: Detailed documentation for external calls (threading, shared resources etc)

From: Florian Pflug <fgp(at)phlo(dot)org>
To: Seref Arikan <serefarikan(at)kurumsalteknoloji(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Detailed documentation for external calls (threading, shared resources etc)
Date: 2011-06-12 19:36:46
Message-ID: 6C787B25-493C-4347-95DB-1C57A11B4475@phlo.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Jun12, 2011, at 19:26 , Seref Arikan wrote:
> This is actually a request for documentation guidance. I intend to
> develop an extension to postgresql. Basically I'd like to place calls
> to network using ZeroMQ, and I need to have detailed information about
> a lot of things, especially threading issues. I need to have some
> global resources which will be presumably used by multiple threads.
> I can see that there is a lot of documentation, but I'd really
> appreciate pointers towards the books, or key documents that'd help me
> move forward faster (docs/books about inner workings of key
> functionality) I'll be using C (most likely the best option) to
> develop code, so which books/documents would you recommend?

There are no threading issues in postgres, because postgres doesn't
use threads. Each client connection is serviced by one backend process,
launched by the postmaster when a new client connects. Communication
between backend processes takes places via a shared memory segment
and at times also via signals.

The documentation contains extensive information about how to interface
3rd-party code with postgres. To see how to interface C functions with
the SQL layer, read http://www.postgresql.org/docs/9.0/interactive/xfunc-c.html.
If you need to also access the database from your C-language functions,
also read http://www.postgresql.org/docs/9.0/interactive/spi.html.

More exhaustive documentation is spread around the source tree in
the form of README files. I suggest you read the ones concerned with
the postgres subsystems you're dealing with. At the very least, you
should read .//src/backend/utils/mmgr/README which explains how
postgres manages memory.

The various contrib modules, found in contrib/ in the source tree,
are also a good reference.

best regards,
Florian Pflug

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2011-06-12 19:57:08 reducing the overhead of frequent table locks, v3
Previous Message Noah Misch 2011-06-12 19:18:43 Make relation_openrv atomic wrt DDL