Обсуждение: Use of inv_getsize in functions
Hi,
I am programming a new set of functions for manipulation blobs, one
of the functions is that I want to get the size of the blob.
The function is coded in C and goes like this:
Datum
blob_size(PG_FUNCTION_ARGS)
{ Oid blob_oid = PG_GETARG_OID(0); uint32 blobsize = 0; blobsize = inv_getsize( blob_oid ); PG_RETURN_UINT32( blobsize
);
}
I have used other function calls like
inv_open with no problem, but when I load this modules I get:
undefined symbol: inv_getsize
No errors when compiling.
I use:
postgresql 7.4.7 on debian/woody i386
Best regards,
Søren
			
		On Tue, Aug 09, 2005 at 10:54:49PM +0200, Soeren Laursen wrote:
> I have used other function calls like
> inv_open with no problem, but when I load this modules I get:
> 
> undefined symbol: inv_getsize
Notice the word "static" in the definition of inv_getsize() in
src/backend/storage/large_object/inv_api.c:
static uint32
inv_getsize(LargeObjectDesc *obj_desc)
{   ...
}
I don't know if there's a good reason for inv_getsize() being static.
Maybe your code could use inv_seek() instead.
> No errors when compiling.
If you compile with warning flags, then you should at least have
gotten a warning like "implicit declaration of function `inv_getsize'".
That's a hint that something's wrong.
-- 
Michael Fuhr
			
		On Tue, Aug 09, 2005 at 10:54:49PM +0200, Soeren Laursen wrote: > Hi, > > I am programming a new set of functions for manipulation blobs, one > of the functions is that I want to get the size of the blob. Huh, we don't call them "blobs". They are "large objects" in PostgreSQL. > I have used other function calls like > inv_open with no problem, but when I load this modules I get: > > undefined symbol: inv_getsize That's because inv_getsize is declared as static. I think it would be nice to export equivalent functionality, so one can get the size of the LO without having to seek() and tell(). -- Alvaro Herrera (<alvherre[a]alvh.no-ip.org>) "¿Que diferencia tiene para los muertos, los huérfanos, y aquellos que han perdido su hogar, si la loca destrucción ha sido realizada bajo el nombre del totalitarismo o del santo nombre de la libertad y la democracia?" (Gandhi)
Hi,
Red ears, looking down on my shoes!
Well I code one getsize my self using inv_seek.
Had disabled a lot of compiler warnings because I am reusing a lot of
spaghetti code for testing etc. This was proberly a hint for starting
to clean up the code.
Regards,
Søren
> On Tue, Aug 09, 2005 at 10:54:49PM +0200, Soeren Laursen wrote:
> > I have used other function calls like
> > inv_open with no problem, but when I load this modules I get:
> >
> > undefined symbol: inv_getsize
>
> Notice the word "static" in the definition of inv_getsize() in
> src/backend/storage/large_object/inv_api.c:
>
> static uint32
> inv_getsize(LargeObjectDesc *obj_desc)
> {
>     ...
> }
>
> I don't know if there's a good reason for inv_getsize() being static.
> Maybe your code could use inv_seek() instead.
>
> > No errors when compiling.
>
> If you compile with warning flags, then you should at least have
> gotten a warning like "implicit declaration of function `inv_getsize'".
> That's a hint that something's wrong.
>
> --
> Michael Fuhr
>