I have a batch file that calls two separate sql scripts as follows:

ECHO ******| psql -h host_name -p 5432 db_name -f script1.sql user_name
ECHO ******| psql -h host_name -p 5432 db_name -f script2.sql user_name
EXIT

script1.sql contains something like this:

BEGIN;
TRUNCATE TABLE table2;
INSERT INTO table2 SELECT * FROM table1;
END;

script2.sql contains something like this:

BEGIN;
TRUNCATE TABLE table1;
INSERT INTO table1 (field1) VALUES (1);
INSERT INTO table1 (field1) VALUES (2);
INSERT INTO table1 (field1) VALUES (3);
END;
BEGIN;
INSERT INTO table1 (field1) VALUES (4);
INSERT INTO table1 (field1) VALUES (5);
INSERT INTO table1 (field1) VALUES (6);
END;

The problem is that this batch file seems to be generating two
connections to the database and closing only one of them. This can be
seen in the connection log:

2006-01-18 04:34:50 [unknown] LOG:  connection received: host=client1
port=4982
2006-01-18 04:34:50 [unknown] LOG:  connection received: host=client1
port=4983
2006-01-18 04:34:50 user_name LOG:  connection authorized:
user=user_name database=db_name
2006-01-18 04:34:51 user_name LOG:  disconnection: session time:
0:00:00.21 user=user_name database=db_name host=client1 port=4983

So two connections are generated immediately on two different ports.
Only the second connection on the second port gets closed. Eventually
this generates too many connections and it kills my database. Do I need
to explicitly close connections in the scripts somehow? I thought after
the psql call and file execution connection would be automatically
closed.

Is there a way that I can see current connections to the database?

I am running PostgreSQL 8.0.6 on Windows 2003.


---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

Reply via email to