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

Started by Park, Chul-Suover 27 years ago5 messages
#1Park, Chul-Su
pcs@mhlx01.kek.jp

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

#2Peter T Mount
psqlhack@retep.org.uk
In reply to: Park, Chul-Su (#1)
Re: [HACKERS] [QUESTIONS] builtin lo_unlink(int4)? why int4 not oid?

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

#3Chul Su Park
pcs@bmail.kek.jp
In reply to: Peter T Mount (#2)
Re: [HACKERS] [QUESTIONS] builtin lo_unlink(int4)? why int4 not oid?

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

#4Peter T Mount
psqlhack@retep.org.uk
In reply to: Chul Su Park (#3)
Re: [HACKERS] [QUESTIONS] builtin lo_unlink(int4)? why int4 not oid?

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

#5Bruce Momjian
maillist@candle.pha.pa.us
In reply to: Peter T Mount (#2)
Re: [HACKERS] [QUESTIONS] builtin lo_unlink(int4)? why int4 not oid?

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)