> There's plenty ways it can go horribly wrong. Let's start with something
> simple:
>
> BEGIN;
> ALTER TABLE ... ADD COLUMN blarg INT;
> INSERT ... (blag) VALUES (132467890);
> ROLLBACK;
>
> ALTER TABLE ... ADD COLUMN blarg TEXT;
>
> If you now read the table with your function you'll see a dead row that
> will re-interpret a int datum as a text datum. Which in all likelyhood
> will crash the server.
>

That particular case gives this result:
ERROR:  number of attributes in tuple header is greater than number of
attributes in tuple descriptor

Some more extended monkeying with adding/dropping columns repeatedly
gave this result:
ERROR:  unexpected end of tuple data

That error (unexpected end of tuple data) should (at least in the non-TOAST
case)
prevent the bug of reading beyond the raw tuple data in memory, which would
be
the easiest way I could imagine to cause a serious problem.

Is there a case that could crash outside of a non-primitive type that has
unsafe
data reading code?

Reply via email to