Re: [HACKERS] TOASTed size

2007-12-05 Thread Mark Kirkwood

Simon Riggs wrote:
  
That sounds more like what I was after.


So let me check my understanding: For TOASTed data pg_column_size()
tells you how many bytes the column value occupies when decompressed. So
there isn't any way of finding out how many bytes a column value
actually occupies when it is both compressed and external?

  


I dimly recall getting confused by this when writing this guy:

From what I can see: pg_column_size calls toast_datum_size for any 
variable length attribute - and then gets the external pointer and 
returns its va_extsize component (which looks to me like the 
*compressed* size.)


Cheers

Mark

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

  http://www.postgresql.org/docs/faq


Re: [HACKERS] TOASTed size

2007-12-05 Thread Gregory Stark
Simon Riggs [EMAIL PROTECTED] writes:

 On Wed, 2007-12-05 at 08:24 +, Gregory Stark wrote:
 Tom Lane [EMAIL PROTECTED] writes:
 
  Simon Riggs [EMAIL PROTECTED] writes:
  I'm thinking that there isn't any way currently of working out how big a
  compressed toast object is?
 
  pg_column_size() ?
 
 I was going to send the same thing but I think he's looking for the 
 compressed
 size of *external* data.
 
 In fact there isn't really any convenient way to find out something is stored
 external. pg_column_size reports the toast raw size of externally stored 
 data.
 
 There does seem to be a need for a more general pg_column_info which returns 
 a
 tuple (external bool, rawsize integer, storedsize integer).

 That sounds more like what I was after.

 So let me check my understanding: For TOASTed data pg_column_size()
 tells you how many bytes the column value occupies when decompressed.

Wait, no, it's supposed to be the actual size on disk. *checks* yeah, it's the
extsize which is the size of the datum in the toast table. So you could find
the compression ratio by calling length() and pg_column_size() at least for
text data.

I still think a single function returning those columns would be a nice thing
to have to make the api complete.

-- 
  Gregory Stark
  EnterpriseDB  http://www.enterprisedb.com
  Get trained by Bruce Momjian - ask me about EnterpriseDB's PostgreSQL 
training!

---(end of broadcast)---
TIP 6: explain analyze is your friend


Re: [HACKERS] TOASTed size

2007-12-05 Thread Gregory Stark
Tom Lane [EMAIL PROTECTED] writes:

 Simon Riggs [EMAIL PROTECTED] writes:
 I'm thinking that there isn't any way currently of working out how big a
 compressed toast object is?

 pg_column_size() ?

I was going to send the same thing but I think he's looking for the compressed
size of *external* data.

In fact there isn't really any convenient way to find out something is stored
external. pg_column_size reports the toast raw size of externally stored data.

There does seem to be a need for a more general pg_column_info which returns a
tuple (external bool, rawsize integer, storedsize integer).

-- 
  Gregory Stark
  EnterpriseDB  http://www.enterprisedb.com
  Ask me about EnterpriseDB's PostGIS support!

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


Re: [HACKERS] TOASTed size

2007-12-05 Thread Gregory Stark

What it turns out is hard to determine is whether the column was stored
externally. To do that you have to rely on the trick of checking
pg_column_size(table.*) and that only works if it's the only column likely to
be stored externally.

-- 
  Gregory Stark
  EnterpriseDB  http://www.enterprisedb.com
  Get trained by Bruce Momjian - ask me about EnterpriseDB's PostgreSQL 
training!

---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster


Re: [HACKERS] TOASTed size

2007-12-05 Thread Simon Riggs
On Wed, 2007-12-05 at 08:24 +, Gregory Stark wrote:
 Tom Lane [EMAIL PROTECTED] writes:
 
  Simon Riggs [EMAIL PROTECTED] writes:
  I'm thinking that there isn't any way currently of working out how big a
  compressed toast object is?
 
  pg_column_size() ?
 
 I was going to send the same thing but I think he's looking for the compressed
 size of *external* data.
 
 In fact there isn't really any convenient way to find out something is stored
 external. pg_column_size reports the toast raw size of externally stored data.
 
 There does seem to be a need for a more general pg_column_info which returns a
 tuple (external bool, rawsize integer, storedsize integer).

That sounds more like what I was after.

So let me check my understanding: For TOASTed data pg_column_size()
tells you how many bytes the column value occupies when decompressed. So
there isn't any way of finding out how many bytes a column value
actually occupies when it is both compressed and external?

-- 
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com


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


[HACKERS] TOASTed size

2007-12-04 Thread Simon Riggs
I'm thinking that there isn't any way currently of working out how big a
compressed toast object is?

All existing functions decompress the object before we do anything to
it, AFAICS. Am I missing something?

So there's no way currently of working out how good your compression is
for individual values or when you have multiple toasted columns, other
than writing a new function?

-- 
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com


---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
   subscribe-nomail command to [EMAIL PROTECTED] so that your
   message can get through to the mailing list cleanly


Re: [HACKERS] TOASTed size

2007-12-04 Thread Tom Lane
Simon Riggs [EMAIL PROTECTED] writes:
 I'm thinking that there isn't any way currently of working out how big a
 compressed toast object is?

pg_column_size() ?

regards, tom lane

---(end of broadcast)---
TIP 4: Have you searched our list archives?

   http://archives.postgresql.org