Re: [HACKERS] problems with plan invalidation

2007-03-29 Thread Tom Lane
Kris Jurka [EMAIL PROTECTED] writes:
 Running the JDBC driver's regression test suite for the first time in a 
 while I got a lot of failures that I would have to guess are related to 
 plan invalidation work.  Attached is a self contained test case and the 
 JDBC driver's log of what protocol messages it is sending.

I've committed a fix for this case --- please give it another try to see
if you find any other problems.

regards, tom lane

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


[HACKERS] problems with plan invalidation

2007-03-28 Thread Kris Jurka


Running the JDBC driver's regression test suite for the first time in a 
while I got a lot of failures that I would have to guess are related to 
plan invalidation work.  Attached is a self contained test case and the 
JDBC driver's log of what protocol messages it is sending.


The end result is:

ERROR: cache lookup failed for type 2139062143

Kris Jurka17:49:35.382 (1) PostgreSQL 8.3devel JDBC3g with SSL (build 600)
17:49:35.390 (1) Trying to establish a protocol version 3 connection to 
localhost:5830
17:49:35.413 (1)  FE= StartupPacket(user=jurka, database=jurka, 
client_encoding=UNICODE, DateStyle=ISO)
17:49:35.417 (1)  =BE AuthenticationOk
17:49:35.432 (1)  =BE ParameterStatus(client_encoding = UNICODE)
17:49:35.432 (1)  =BE ParameterStatus(DateStyle = ISO, MDY)
17:49:35.433 (1)  =BE ParameterStatus(integer_datetimes = off)
17:49:35.433 (1)  =BE ParameterStatus(is_superuser = on)
17:49:35.433 (1)  =BE ParameterStatus(server_encoding = LATIN1)
17:49:35.433 (1)  =BE ParameterStatus(server_version = 8.3devel)
17:49:35.433 (1)  =BE ParameterStatus(session_authorization = jurka)
17:49:35.433 (1)  =BE ParameterStatus(standard_conforming_strings = off)
17:49:35.433 (1)  =BE ParameterStatus(TimeZone = Navajo)
17:49:35.433 (1)  =BE BackendKeyData(pid=27730,ckey=216493403)
17:49:35.434 (1)  =BE ReadyForQuery(I)
17:49:35.434 (1) compatible = 8.3
17:49:35.434 (1) loglevel = 2
17:49:35.434 (1) prepare threshold = 5
getConnection returning driver[className=org.postgresql.Driver,[EMAIL PROTECTED]
17:49:35.459 (1) simple execute, [EMAIL PROTECTED], maxRows=0, fetchSize=0, 
flags=17
17:49:35.460 (1)  FE= Parse(stmt=null,query=CREATE TEMP TABLE nulltest (a 
int),oids={})
17:49:35.460 (1)  FE= Bind(stmt=null,portal=null)
17:49:35.460 (1)  FE= Describe(portal=null)
17:49:35.461 (1)  FE= Execute(portal=null,limit=0)
17:49:35.461 (1)  FE= Sync
17:49:35.482 (1)  =BE ParseComplete [null]
17:49:35.482 (1)  =BE BindComplete [null]
17:49:35.482 (1)  =BE NoData
17:49:35.482 (1)  =BE CommandStatus(CREATE TABLE)
17:49:35.483 (1)  =BE ReadyForQuery(I)
17:49:35.484 (1) simple execute, [EMAIL PROTECTED], maxRows=0, fetchSize=0, 
flags=21
17:49:35.484 (1)  FE= Parse(stmt=null,query=INSERT INTO nulltest (a) VALUES 
($1),oids={23})
17:49:35.485 (1)  FE= Bind(stmt=null,portal=null,$1=NULL)
17:49:35.485 (1)  FE= Describe(portal=null)
17:49:35.485 (1)  FE= Execute(portal=null,limit=1)
17:49:35.485 (1)  FE= Sync
17:49:35.487 (1)  =BE ParseComplete [null]
17:49:35.489 (1)  =BE ErrorMessage(ERROR: cache lookup failed for type 
2139062143)
org.postgresql.util.PSQLException: ERROR: cache lookup failed for type 
2139062143
at 
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1548)
at 
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1316)
at 
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191)
at 
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
at 
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351)
at 
org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:305)
at TestSetNull.main(TestSetNull.java:16)
SQLException: SQLState(XX000)
17:49:35.491 (1)  =BE ReadyForQuery(I)
import java.sql.*;

public class TestSetNull {

public static void main(String args[]) throws Exception {
Class.forName(org.postgresql.Driver);

Connection conn = 
DriverManager.getConnection(jdbc:postgresql://localhost:5830/jurka?loglevel=2,jurka,);

Statement stmt = conn.createStatement();
stmt.execute(CREATE TEMP TABLE nulltest (a int));
stmt.close();

PreparedStatement ps = conn.prepareStatement(INSERT INTO 
nulltest (a) VALUES (?));
ps.setNull(1, Types.INTEGER);
ps.executeUpdate();

conn.close();
}
}

---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster