|
8 | 8 | * |
9 | 9 | * |
10 | 10 | * IDENTIFICATION |
11 | | - * $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.38 1999/01/2405:40:47 tgl Exp $ |
| 11 | + * $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.39 1999/01/2422:50:58 tgl Exp $ |
12 | 12 | * |
13 | 13 | *------------------------------------------------------------------------- |
14 | 14 | */ |
@@ -91,27 +91,24 @@ printtup(HeapTuple tuple, TupleDesc typeinfo) |
91 | 91 | pq_putnchar("D",1); |
92 | 92 |
|
93 | 93 | /* ---------------- |
94 | | - *send a bitmap of which attributes are null |
| 94 | + *send a bitmap of which attributes arenotnull |
95 | 95 | * ---------------- |
96 | 96 | */ |
97 | 97 | j=0; |
98 | 98 | k=1 <<7; |
99 | | -for (i=0;i<tuple->t_data->t_natts;) |
| 99 | +for (i=0;i<tuple->t_data->t_natts;++i) |
100 | 100 | { |
101 | | -i++;/* heap_getattr is a macro, so no |
102 | | - * increment */ |
103 | | -attr=heap_getattr(tuple,i,typeinfo,&isnull); |
104 | | -if (!isnull) |
105 | | -j |=k; |
| 101 | +if (!heap_attisnull(tuple,i+1)) |
| 102 | +j |=k;/* set bit if not null */ |
106 | 103 | k >>=1; |
107 | | -if (!(i&7)) |
| 104 | +if (k==0)/* end of byte? */ |
108 | 105 | { |
109 | 106 | pq_putint(j,1); |
110 | 107 | j=0; |
111 | 108 | k=1 <<7; |
112 | 109 | } |
113 | 110 | } |
114 | | -if (i&7) |
| 111 | +if (k!= (1 <<7))/* flush last partial byte */ |
115 | 112 | pq_putint(j,1); |
116 | 113 |
|
117 | 114 | /* ---------------- |
@@ -243,27 +240,24 @@ printtup_internal(HeapTuple tuple, TupleDesc typeinfo) |
243 | 240 | pq_putnchar("B",1); |
244 | 241 |
|
245 | 242 | /* ---------------- |
246 | | - *send a bitmap of which attributes are null |
| 243 | + *send a bitmap of which attributes arenotnull |
247 | 244 | * ---------------- |
248 | 245 | */ |
249 | 246 | j=0; |
250 | 247 | k=1 <<7; |
251 | | -for (i=0;i<tuple->t_data->t_natts;) |
| 248 | +for (i=0;i<tuple->t_data->t_natts;++i) |
252 | 249 | { |
253 | | -i++;/* heap_getattr is a macro, so no |
254 | | - * increment */ |
255 | | -attr=heap_getattr(tuple,i,typeinfo,&isnull); |
256 | | -if (!isnull) |
257 | | -j |=k; |
| 250 | +if (!heap_attisnull(tuple,i+1)) |
| 251 | +j |=k;/* set bit if not null */ |
258 | 252 | k >>=1; |
259 | | -if (!(i&7)) |
| 253 | +if (k==0)/* end of byte? */ |
260 | 254 | { |
261 | 255 | pq_putint(j,1); |
262 | 256 | j=0; |
263 | 257 | k=1 <<7; |
264 | 258 | } |
265 | 259 | } |
266 | | -if (i&7) |
| 260 | +if (k!= (1 <<7))/* flush last partial byte */ |
267 | 261 | pq_putint(j,1); |
268 | 262 |
|
269 | 263 | /* ---------------- |
|