Re: Setting variables equal to elements from an Array

From: cdecarlo <cdecarlo(at)gmail(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Setting variables equal to elements from an Array
Date: 2008-01-09 14:14:10
Message-ID: 548909bf-91af-4fcb-9fd0-44e4dbd6ac97@k2g2000hse.googlegroups.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Jan 8, 11:35 am, t(dot)(dot)(dot)(at)sss(dot)pgh(dot)pa(dot)us (Tom Lane) wrote:
> cdecarlo <cdeca(dot)(dot)(dot)(at)gmail(dot)com> writes:
> > I'm new to pl/pgsql and postgres and I need some help with a part of
> > my function. In the function I loop through a multidemensional array
> > ( [n][3] ), once, while inside the loop, I find the index I want to
> > work with I would like to set a separate variableequalto the element
> > in the array at that index ( newVar = array[i] ).
>
> The rest of your message suggests that what you want is not that at all,
> but to set the other variable to an array that consists of one or moreelementsfrom the original array. You need to be clearer in your own
> mind about which it is you're doing --- an array of one element is
> completely different from the element itself.
>
> If you use subscripts that include a colon (:), then the result is a
> sub-array and has to be assigned to a variable that's of the array
> type. If you don't use a colon then the subscripting operation produces
> a single value that's of the array element type, and has to be assigned
> to a variable of that type. You have to use the correct number of
> subscripts in either case, else you get a NULL, as you found out.
>
> regards, tom lane
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: In versions below 8.0, the planner will ignore your desire to
> choose an index scan if your joining column's datatypes do not
> match

Tom,

Maybe it's the combination of it being early in the day and that I'm
not much of a morning person lately, but your reply really pissed me
off. It came across as though you were 'helping' me from your
sanctimonious, holier-than-thou high horse, which, and I hope this
comes across as being clear in your mind, doesn't help.

Maybe, an example will help you understand what I want to do:

Let myArray be {{1,2,3},{4,5,6},{7,8,9}} and suppose the element I'm
looking for has, in it's first index, an even number. I would loop
through myArray looking at the first index of each element and when I
got to index 2 of myArray I would have found an element which meets
that criteria. How would I set myVar equal to the second element of
myArray?

When i is 2, does myVar := myArray[i] set myVar equal to {4,5,6}?

OR

When i is 2, does myVar := myArray[i][3:3] set myVar equal to {4,5,6}?

OR

Are both incorrect?

-Colin

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Clodoaldo 2008-01-09 14:21:12 Re: Experiences with extensibility
Previous Message A. Kretschmer 2008-01-09 14:12:11 Re: quick question abt pg_dump and restore