diff options
author | Marc G. Fournier | 1998-08-30 19:30:38 +0000 |
---|---|---|
committer | Marc G. Fournier | 1998-08-30 19:30:38 +0000 |
commit | 3067ac8e77369c1b41195b4d90e2ff2c0b23bc7f (patch) | |
tree | f282cd9b0b92027550010d2ffb5712f1da720c63 | |
parent | 3b7d13a6b0e6c242ee87d43119781937b0554db5 (diff) |
From: Massimo Dal Zotto <[email protected]>
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():
-rw-r--r-- | src/backend/access/common/printtup.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/backend/access/common/printtup.c b/src/backend/access/common/printtup.c index 936725a2ce5..24cd7ff9c7f 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 = "<unprintable>"; + pq_putint(strlen(outputstr) + VARHDRSZ, VARHDRSZ); + pq_putnchar(outputstr, strlen(outputstr)); + } } } |