ECPG failed and Postmaster getting bigger in using perl Pg - Mailing list pgsql-interfaces

From S.F. Lee
Subject ECPG failed and Postmaster getting bigger in using perl Pg
Date
Msg-id 20000510022157.4467.qmail@web213.mail.yahoo.com
Whole thread Raw
Responses Re: ECPG failed and Postmaster getting bigger in using perl Pg  (SAKAIDA Masaaki <sakaida@psn.co.jp>)
List pgsql-interfaces
Hi everyone,  
 I am revamping a computer system by Red Hat 6.0 +
PostgreSQL 6.5.3 + ecpg 2.7 + C. The user interface is
perl Pg + Apache. Everything seems fine, but when I 
use "top" to display long term CPU processes, I find
the postmaster is getting bigger in step of 4 kb and 
performance is getting worse GRADUALLY (It seems that 
perl + Pg would make the size expansion more quickly 
than ECPG). Here are some data display in "top": 
PID    SIZE    RSS    SHARE    TIME    COMMAND
2526    1260   1260     1040    0:00    postmaster  --
when postmaster started
2526   28384    20M      388    4:41    postmaster  --
2 days later
 I didn't find any error in tracing my program, and
the child postmaster is terminated correctly. I really
can't figure out the reason. Please give me advise. 
 I have installed the latest version 7.0RC5, but I
find my C program fails in ECPG 2.7 although it works
fine in PostgreSQL 6.5.3, Postmaster is getting bigger
too (perl + Pg), Here is a simple example:

1. I create a table foo_1 and insert 2 rows of data:   CREATE TABLE foo_1   (       recno      int  PRIMARY KEY,  --
PRIMARYKEY       a1         int,       b1         float,       spare      int   );   insert into foo_1
values(1,10,11.1,0);  insert into foo_1 values(2,20,22.2,0);
 

2. I write a program (Test.pgc) to get a whole row
into a structure temp by "select *":

/*
exec sql whenever sqlerror sqlprint;
*/
exec sql include sqlca;
#include        <string.h>
#include        <stdlib.h>
#include        <unistd.h>
#include        <stdio.h>
#include        <errno.h>

main()
{  exec sql begin declare section;     struct data     {                  int           recno;        int           a1;
      float         b1;        int           spare;
 
     } temp;     int PK_INDEX;  exec sql end declare section;
  exec sql connect to by2db;  if (sqlca.sqlcode != 0)  {     printf ("connect database error =
%s\n",sqlca.sqlerrm.sqlerrmc);     exit (-1);  }
  PK_INDEX = 1;  exec sql select * into :temp from foo_1 where recno
= :PK_INDEX;  if (sqlca.sqlcode != 0)  {     printf ("sql_select--foo_1 :
%s\n",sqlca.sqlerrm.sqlerrmc);     exit (-1);  }  printf (" a1 = %d b1 = %f\n",temp.a1,temp.b1);
  exec sql disconnect all;  exit(0);
} 
After executing program(Test), I got different result
in each version of PostgreSQL, 
such as:
  In PostgreSQL 6.5.3 + ecpg 2.7 : a1 = 10 b1 =
11.100000   
  In PostgreSQL 7.0RC5 + ecpg 2.7 : sql_select--foo_1
: Too few arguments in line 33.

I would REALLY appreciate some suggestions.
  Thanks              S.F.Lee

__________________________________________________
Do You Yahoo!?
Send instant messages & get email alerts with Yahoo! Messenger.
http://im.yahoo.com/


pgsql-interfaces by date:

Previous
From: Hannu Krosing
Date:
Subject: Re: Can functions return NULL value?
Next
From: Thomas Lockhart
Date:
Subject: Re: [DOCS] looking for doc for ecpg