Обсуждение: contrib/dbsize
How come relation_size() doesn't work on an index?
On Tue, Apr 05, 2005 at 12:24:02PM -0400, Joseph Shraibman wrote: > > How come relation_size() doesn't work on an index? Could you define "doesn't work"? An example with the expected and actual output might show what's happening. I just ran some simple tests and relation_size() correctly showed the on-disk size of the file that stores the index. Are you expecting something different? Or have you found a case where relation_size() returns the wrong value? -- Michael Fuhr http://www.fuhr.org/~mfuhr/
local]:o=>select version();
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 7.4.7 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.2.2
20030222 (Red Hat Linux 3.2.2-5)
(1 row)
[local]:o=>select relation_size('pg_am_oid_index');
ERROR: "pg_am_oid_index" is an index
Michael Fuhr wrote:
> On Tue, Apr 05, 2005 at 12:24:02PM -0400, Joseph Shraibman wrote:
>
>>How come relation_size() doesn't work on an index?
>
>
> Could you define "doesn't work"? An example with the expected and
> actual output might show what's happening.
>
> I just ran some simple tests and relation_size() correctly showed
> the on-disk size of the file that stores the index. Are you expecting
> something different? Or have you found a case where relation_size()
> returns the wrong value?
>
On Tue, Apr 05, 2005 at 01:25:01PM -0400, Joseph Shraibman wrote:
> local]:o=>select version();
> version
> ---------------------------------------------------------------------------------------------------------
> PostgreSQL 7.4.7 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.2.2
> 20030222 (Red Hat Linux 3.2.2-5)
> (1 row)
>
> [local]:o=>select relation_size('pg_am_oid_index');
> ERROR: "pg_am_oid_index" is an index
Looks like this has been fixed in PostgreSQL 8.x.
http://developer.postgresql.org/cvsweb.cgi/pgsql/contrib/dbsize/dbsize.c
test=> SELECT version();
version
--------------------------------------------------------------------------------
PostgreSQL 8.0.2beta1 on sparc-sun-solaris2.9, compiled by GCC gcc (GCC) 3.4.2
(1 row)
test=> SELECT relation_size('pg_am_oid_index');
relation_size
---------------
16384
(1 row)
--
Michael Fuhr
http://www.fuhr.org/~mfuhr/
Can I take the new .c file, do a make install, and have it work in 7.4.7 ?
Michael Fuhr wrote:
> On Tue, Apr 05, 2005 at 01:25:01PM -0400, Joseph Shraibman wrote:
>
>>local]:o=>select version();
>> version
>>---------------------------------------------------------------------------------------------------------
>> PostgreSQL 7.4.7 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.2.2
>>20030222 (Red Hat Linux 3.2.2-5)
>>(1 row)
>>
>>[local]:o=>select relation_size('pg_am_oid_index');
>>ERROR: "pg_am_oid_index" is an index
>
>
> Looks like this has been fixed in PostgreSQL 8.x.
>
> http://developer.postgresql.org/cvsweb.cgi/pgsql/contrib/dbsize/dbsize.c
>
> test=> SELECT version();
> version
> --------------------------------------------------------------------------------
> PostgreSQL 8.0.2beta1 on sparc-sun-solaris2.9, compiled by GCC gcc (GCC) 3.4.2
> (1 row)
>
> test=> SELECT relation_size('pg_am_oid_index');
> relation_size
> ---------------
> 16384
> (1 row)
>
On Tue, Apr 05, 2005 at 01:43:56PM -0400, Joseph Shraibman wrote: > > Can I take the new .c file, do a make install, and have it work in 7.4.7 ? Not unmodified, since it uses features new to 8.0 (e.g., tablespaces). -- Michael Fuhr http://www.fuhr.org/~mfuhr/