Обсуждение: [QUESTIONS] builtin lo_unlink(int4)? why int4 not oid?

Поиск
Список
Период
Сортировка

[QUESTIONS] builtin lo_unlink(int4)? why int4 not oid?

От
"Park, Chul-Su"
Дата:
Hello all,

e.g.

    I want to delete a large object with this table

CREATE TABLE image (
    name            text,
    raster          oid
);

-- from programmer's guide

in the psql

foo=> select lo_unlink(raster) from image;
ERROR:  function int4(oid) does not exist

Why builtin "lo_unlink" is defined as accepting int4 not oid?  Then do I
have to do
foo=> select lo_unlink(int4(oid_text(raster))) from image;
OR
define "raster" as int4?  I don't think all these are good idea...  Then
how to delete "lo" in the "psql"?

Best Regards,
C.S.Park


Re: [HACKERS] [QUESTIONS] builtin lo_unlink(int4)? why int4 not oid?

От
Peter T Mount
Дата:
On Sat, 13 Jun 1998, Park, Chul-Su wrote:

> Hello all,
>
> e.g.
>
>     I want to delete a large object with this table
>
> CREATE TABLE image (
>     name            text,
>     raster          oid
> );
>
> -- from programmer's guide
>
> in the psql
>
> foo=> select lo_unlink(raster) from image;
> ERROR:  function int4(oid) does not exist
>
> Why builtin "lo_unlink" is defined as accepting int4 not oid?  Then do I
> have to do
> foo=> select lo_unlink(int4(oid_text(raster))) from image;
> OR
> define "raster" as int4?  I don't think all these are good idea...  Then
> how to delete "lo" in the "psql"?

I've just tested this, and I get the same thing (on 6.3.2, and yesterdays
CVS versions).

lo_unlink should be defined with oid (which I thought was the case).

A temporary way round is:

    select lo_unlink(raster::int4) from image;

Hackers: Is there any reason why it's defined as an int4?

--
Peter T Mount peter@retep.org.uk or petermount@earthling.net
Main Homepage: http://www.retep.org.uk
************ Someday I may rebuild this signature completely ;-) ************
Work Homepage: http://www.maidstone.gov.uk Work EMail: peter@maidstone.gov.uk


Re: [HACKERS] [QUESTIONS] builtin lo_unlink(int4)? why int4 not oid?

От
Chul Su Park
Дата:
> > foo=> select lo_unlink(raster) from image;
> > ERROR:  function int4(oid) does not exist
> >
> > Why builtin "lo_unlink" is defined as accepting int4 not oid?  Then do I
> > have to do
> > foo=> select lo_unlink(int4(oid_text(raster))) from image;
> > OR
> > define "raster" as int4?  I don't think all these are good idea...  Then
> > how to delete "lo" in the "psql"?
>
> I've just tested this, and I get the same thing (on 6.3.2, and yesterdays
> CVS versions).
>
> lo_unlink should be defined with oid (which I thought was the case).
>
> A temporary way round is:
>
>     select lo_unlink(raster::int4) from image;
>
> Hackers: Is there any reason why it's defined as an int4?
>
> --
> Peter T Mount peter@retep.org.uk or petermount@earthling.net


foo=> select count(lo_unlink(raster::int4)) from bar;
ERROR:  function int4(oid) does not exist

I'm using v6.3.2(patched) on SunSolaris/Redhat5.0

Best Regards, C.S.Park


Re: [HACKERS] [QUESTIONS] builtin lo_unlink(int4)? why int4 not oid?

От
Peter T Mount
Дата:
On Sat, 13 Jun 1998, Chul Su Park wrote:

> > > foo=> select lo_unlink(raster) from image;
> > > ERROR:  function int4(oid) does not exist
> > >
> > > Why builtin "lo_unlink" is defined as accepting int4 not oid?  Then do I
> > > have to do
> > > foo=> select lo_unlink(int4(oid_text(raster))) from image;
> > > OR
> > > define "raster" as int4?  I don't think all these are good idea...  Then
> > > how to delete "lo" in the "psql"?
> >
> > I've just tested this, and I get the same thing (on 6.3.2, and yesterdays
> > CVS versions).
> >
> > lo_unlink should be defined with oid (which I thought was the case).
> >
> > A temporary way round is:
> >
> >     select lo_unlink(raster::int4) from image;
> >
> > Hackers: Is there any reason why it's defined as an int4?
> >
> > --
> > Peter T Mount peter@retep.org.uk or petermount@earthling.net
>
>
> foo=> select count(lo_unlink(raster::int4)) from bar;
> ERROR:  function int4(oid) does not exist
>
> I'm using v6.3.2(patched) on SunSolaris/Redhat5.0

What patches have you applied?

I'm running Redhat 4.1 on two machines. One has 6.3.2 (unpatched), the
other the current CVS version, and the workaround worked.

Infact on the current CVS machine, I just re-ran initdb, and tried the
workaround again, and it worked.

I'm just wondering if one of the patches has removed int4(oid).

--
Peter T Mount peter@retep.org.uk or petermount@earthling.net
Main Homepage: http://www.retep.org.uk
************ Someday I may rebuild this signature completely ;-) ************
Work Homepage: http://www.maidstone.gov.uk Work EMail: peter@maidstone.gov.uk


Re: [HACKERS] [QUESTIONS] builtin lo_unlink(int4)? why int4 not oid?

От
Bruce Momjian
Дата:
> I've just tested this, and I get the same thing (on 6.3.2, and yesterdays
> CVS versions).
>
> lo_unlink should be defined with oid (which I thought was the case).
>
> A temporary way round is:
>
>     select lo_unlink(raster::int4) from image;
>
> Hackers: Is there any reason why it's defined as an int4?

Here is a patch for to make lo_unlink use oid, not int4.

---------------------------------------------------------------------------

Index: src/include/catalog/pg_proc.h
===================================================================
RCS file: /usr/local/cvsroot/pgsql/src/include/catalog/pg_proc.h,v
retrieving revision 1.59
diff -c -r1.59 pg_proc.h
*** pg_proc.h    1998/05/29 13:36:31    1.59
--- pg_proc.h    1998/06/13 20:23:49
***************
*** 1174,1180 ****
  DATA(insert OID = 963 (  close_lb           PGUID 11 f t f 2 f 600 "628 603" 100 0 10 100  foo bar ));
  DESCR("closest point to line on box");

! DATA(insert OID = 964 (  lo_unlink           PGUID 11 f t f 1 f  23 "23" 100 0 0 100    foo bar ));
  DESCR("large object unlink(delete)");
  DATA(insert OID = 972 (  regproctooid       PGUID 11 f t f 1 f  26 "24" 100 0 0 100    foo bar ));
  DESCR("get oid for regproc");
--- 1174,1180 ----
  DATA(insert OID = 963 (  close_lb           PGUID 11 f t f 2 f 600 "628 603" 100 0 10 100  foo bar ));
  DESCR("closest point to line on box");

! DATA(insert OID = 964 (  lo_unlink           PGUID 11 f t f 1 f  23 "26" 100 0 0 100    foo bar ));
  DESCR("large object unlink(delete)");
  DATA(insert OID = 972 (  regproctooid       PGUID 11 f t f 1 f  26 "24" 100 0 0 100    foo bar ));
  DESCR("get oid for regproc");


--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)