diff --git a/src/interfaces/libpq/fe-protocol3.c b/src/interfaces/libpq/fe-protocol3.c index 9cd9c6b203c757ce780c2812b7d105a7b131dd7c..7dba7c2f8159943411cccd3f2a95b7ba84b5871f 100644 --- a/src/interfaces/libpq/fe-protocol3.c +++ b/src/interfaces/libpq/fe-protocol3.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/interfaces/libpq/fe-protocol3.c,v 1.37 2009/01/01 17:24:03 momjian Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-protocol3.c,v 1.38 2009/01/09 18:50:03 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -297,19 +297,24 @@ pqParseInput3(PGconn *conn) /* * NoData indicates that we will not be seeing a * RowDescription message because the statement or portal - * inquired about doesn't return rows. Set up a COMMAND_OK - * result, instead of TUPLES_OK. - */ - if (conn->result == NULL) - conn->result = PQmakeEmptyPGresult(conn, - PGRES_COMMAND_OK); - - /* - * If we're doing a Describe, we're ready to pass the - * result back to the client. + * inquired about doesn't return rows. + * + * If we're doing a Describe, we have to pass something + * back to the client, so set up a COMMAND_OK result, + * instead of TUPLES_OK. Otherwise we can just ignore + * this message. */ if (conn->queryclass == PGQUERY_DESCRIBE) + { + if (conn->result == NULL) + { + conn->result = PQmakeEmptyPGresult(conn, + PGRES_COMMAND_OK); + if (!conn->result) + return; + } conn->asyncStatus = PGASYNC_READY; + } break; case 't': /* Parameter Description */ if (getParamDescriptions(conn))