From: Marc G. Fournier Date: Sun, 30 Aug 1998 19:30:38 +0000 (+0000) Subject: From: Massimo Dal Zotto X-Git-Tag: REL6_4_2~532 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3067ac8e77369c1b41195b4d90e2ff2c0b23bc7f;p=postgresql From: Massimo Dal Zotto After some playing with gdb I found that in printtup() there is a non null attribute with typeinfo->attrs[i]->atttypid = 0 (invalid oid). Unfortunately attibutes with invalid type are neither printed nor marked as null, and this explains why psql doesn't get all the expected data. So I made this patch to printtup(): --- diff --git a/src/backend/access/common/printtup.c b/src/backend/access/common/printtup.c index 936725a2ce..24cd7ff9c7 100644 --- a/src/backend/access/common/printtup.c +++ b/src/backend/access/common/printtup.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.32 1998/08/19 02:00:54 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.33 1998/08/30 19:30:38 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -123,9 +123,11 @@ printtup(HeapTuple tuple, TupleDesc typeinfo) for (i = 0; i < tuple->t_natts; ++i) { attr = heap_getattr(tuple, i + 1, typeinfo, &isnull); - typoutput = typtoout((Oid) typeinfo->attrs[i]->atttypid); + if (isnull) + continue; - if (!isnull && OidIsValid(typoutput)) + typoutput = typtoout((Oid) typeinfo->attrs[i]->atttypid); + if (OidIsValid(typoutput)) { outputstr = fmgr(typoutput, attr, gettypelem(typeinfo->attrs[i]->atttypid), @@ -140,6 +142,12 @@ printtup(HeapTuple tuple, TupleDesc typeinfo) #endif pfree(outputstr); } + else + { + outputstr = ""; + pq_putint(strlen(outputstr) + VARHDRSZ, VARHDRSZ); + pq_putnchar(outputstr, strlen(outputstr)); + } } }