Search Postgresql Archives

Re: Error with temporary tables

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks. So, the hack we did is okay then? Does using the substring function de-TOAST it?

On Feb 4, 2006, at 11:24 AM, Tom Lane wrote:

Claire McLister <mclister@xxxxxxxxxxxxx> writes:
This was all working fine until E.Value became some large strings
with some occasional funny characters.

The hack that solved the problem was:

  R.Field := substring(E.Value from 1);

  This is a complete hack, so I'd like to find out what is going
wrong and why this worked. For now, it keeps the system functional.

Oooh.  You were probably dealing with values that had gotten large
enough to be "toasted", ie, stored out-of-line in a TOAST table.
So the datum being passed around in memory was just a pointer to the
row in the TOAST table.  Dropping the temp table made its TOAST table
go away, resulting in a dangling pointer stored in the plpgsql variable.

The easy fix would be to forcibly detoast any value stored into a
plpgsql variable, but the performance implications of that seem a
bit nasty.  Not sure I want to do it for such a weird corner case...

			regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux