On Mon, 16 Mar 2026 at 22:17, David Rowley <[email protected]> wrote:
>
> On Mon, 16 Mar 2026 at 20:01, Tender Wang <[email protected]> wrote:
> > SELECT * FROM t2, t4 RIGHT OUTER JOIN t0 ON t4.c0 WHERE t4.c1 ORDER BY
>
> > server closed the connection unexpectedly
>
> Thanks. Looks like I didn't get the startAttr logic correct in
> nocachegetattr(). Starting by using the attcacheoff of the first NULL
> attribute isn't valid. It should be the attribute prior to that one.
>
> I'm just verifying some code locally now.

Now pushed. Some concerns about the lack of exercise in the tests for
fastgetattr() for user tables. I ended up testing by injecting the
following into slot_deform_heap_tuple()

- attnum = slot->tts_nvalid;
+ attnum2 = attnum = slot->tts_nvalid;

[...]

+ for (attnum = attnum2; attnum < natts; attnum++)
+ {
+     Datum v = values[attnum];
+     bool  b = isnull[attnum];
+     values[attnum] = fastgetattr(tuple, attnum + 1, tupleDesc,
&isnull[attnum]);
+     Assert(v == values[attnum]);
+     Assert(b == isnull[attnum]);
+ }
+
  /* Fetch any missing attrs and raise an error if reqnatts is invalid */
  if (unlikely(attnum < reqnatts))

Still considering the best way to get a bit more coverage more permanently.

David


Reply via email to