It also happened to me last week. I found the problem is that you cannot share the same connection among processes unless you implement some kind of locking (semaphores, ...).
More clearly, I had this problem.
Query QA lasts 5 seconds to perform, and returns answer AA.
Query QB lasts 10 seconds and returns AB.
B is a child process of A.
I launch the parent A. Performs QA. Waits for answer.
I launch the child B. Performs QB. Waits for answer.
Server returns AA, but it gets caught by B !!
So, solutions are:
- You open a new backend connection for each process.
- You make each process lock before sending QA, and unlock when receiving AA.
Hope it helps !!
Thrasher
Berman, Phil wrote:
To all- I am using Postgres version 6.5.1 in a multithreaded program which is written in C. All inserts and updates into any tables are done within the child process, and there are retrieves from tables both in the parent and child processes. Additionally, the child process will insert into and update a table, and the parent process will retrieve from the same table. There are loops in both the parent and child processes, so every postgres call may be made multiple times, with a significant amount of time (seconds or minutes) between calls. Invariably, I get a message "backend message type 0x50 arrived while idle" before the process completes, although the point where I get this message can vary somewhat. Can anyone tell me what this message means, why I am getting it, and/or how to avoid getting it in the future?Thanks in advance, Phil ---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html