Re: expressions operating on arrays

From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
To: h012(at)ied(dot)com
Cc: Achilleus Mantzios <achill(at)matrix(dot)gatewaynet(dot)com>, <pgsql-sql(at)postgresql(dot)org>
Subject: Re: expressions operating on arrays
Date: 2002-08-09 14:57:08
Message-ID: Pine.GSO.4.44.0208091755380.3786-100000@ra.sai.msu.su
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hmm,

you dont' need to use GiST supporting functions !
We've posted a patch to current CVS, it has everything you need.
Please, check http://www.sai.msu.su/~megera/postgres/gist/code/7.3/README.intarray

It looks like that patch should works with 7.2 also.

Oleg
On Fri, 9 Aug 2002 h012(at)ied(dot)com wrote:

>
> thanks for the pointer, I'm now able to use the operators in expressions!
>
> w.r.t. modifying the array contents: I looked through
> /usr/lib/pgsql/contrib/intarray/_int.sql.in , but it didn't make me any
> smarter. Are the "..._union" and "..._picksplit" functions supposed to add
> into and remove elements from the arrays ? How would one update a row,
> then, to add an element into one array and remove an element from another?
>
> create table t(id int4[], txt text[]);
> update t set id=g_int_union(t.id, '{555}') where t.id *= 444; -- ??
> update t set text=g_int_picksplit(t.text, '{"removeme"}') where t.text *= "removeme"; -- ??
>
> thx,
>
> John
>
> On Fri, 9 Aug 2002, Oleg Bartunov wrote:
>
> > Look at contrib/intarray. You'll get an index access as a bonus
> >
> > Oleg
>
> On Fri, 9 Aug 2002, Achilleus Mantzios wrote:
>
> >
> > look at /usr/local/src/postgresql-7.2.1/contrib/intarray
> >
> >
>
> > On Fri, 9 Aug 2002 h012(at)ied(dot)com wrote:
> >
> > >
> > >
> > > Hi,
> > >
> > > I would like to say:
> > >
> > > create table test1 (array1 int4[]);
> > > insert into test1 values ('{123,234,345}');
> > > insert into test1 values ('{456,567,678}');
> > >
> > > now what I don't know how to do:
> > >
> > > -- consider contents of array:
> > > select * from test1 where array1 CONTAINS 567;
> > >
> > > -- APPEND '789' to array in second row:
> > > update test1 set array1=(select array1 from test1 where array1 CONTAINS
> > > '567' UNION select '789');
> > >
> > >
> > > How do I go about expressing and operating on the contents of an array ?
> > >
> > >
> > > Thanks,
> > >
> > > John
>
>

Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message h012 2002-08-09 20:49:07 Re: expressions operating on arrays
Previous Message Dawn Hollingsworth 2002-08-09 13:55:24 Re: Table Sorting and Limit Question