From 3067ac8e77369c1b41195b4d90e2ff2c0b23bc7f Mon Sep 17 00:00:00 2001 From: "Marc G. Fournier" Date: Sun, 30 Aug 1998 19:30:38 +0000 Subject: [PATCH] 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(): --- src/backend/access/common/printtup.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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)); + } } } -- 2.40.0