Обсуждение: PQsendQuery/ PQgetResult Problem

Поиск
Список
Период
Сортировка

PQsendQuery/ PQgetResult Problem

От
Usama Dar
Дата:
Hi Hackers, 

I have a strange problem, or maybe it's not a strange problem but just something wrong with my understanding i have SIP router which works with postgresql using libpq, somewhere in the code it inserts a row in the database and then when the insert is finished it invokes another module which tries to read it , however sometimes the read operation doesn't find the row which was just inserted, this happens if there are large number of insert / read cycles like this are going on , the code which inserts the row uses PQsendQuery to insert and waits for PQgetResult to return null before the read module is invoked, the module which reads the row , reads it over a new connection. My question is if PQgetResult returns null is this  a good enough guarantee that a subsequent connection (even in next millisecond) should be able to read that row??

Thanks for making me wiser

/Usama

Re: PQsendQuery/ PQgetResult Problem

От
Merlin Moncure
Дата:
On Fri, Oct 7, 2011 at 11:17 AM, Usama Dar <munir.usama@gmail.com> wrote:
> Hi Hackers,
> I have a strange problem, or maybe it's not a strange problem but just
> something wrong with my understanding i have SIP router which works with
> postgresql using libpq, somewhere in the code it inserts a row in the
> database and then when the insert is finished it invokes another module
> which tries to read it , however sometimes the read operation doesn't find
> the row which was just inserted, this happens if there are large number of
> insert / read cycles like this are going on , the code which inserts the row
> uses PQsendQuery to insert and waits for PQgetResult to return null before
> the read module is invoked, the module which reads the row , reads it over a
> new connection. My question is if PQgetResult returns null is this  a good
> enough guarantee that a subsequent connection (even in next millisecond)
> should be able to read that row??
> Thanks for making me wiser
> /Usama

yeah -- Iron clad rule is that if you get the result and are able to
see that your query has been successfully transacted, so should
everyone else.  Are you sure your query didn't error out?  Are you
also sure you didn't open a transaction and not close it?  our problem
is most likely on your end.

merlin