Thread: integer[] Update Questions

integer[] Update Questions

From
Ryan Mahoney
Date:
Greeting Hackers! Had some questions about integer array type...

If I have a integer[] field in a table, which already has the values
{1,2,3,6,17} and I additionally want to add the value '45' to this
array, is there any easier way than SELECTing the current values and
then updating the entire record?

I see that I could do:
UPDATE table SET array_field[6] = 45 WHERE ...

But how do I know that 6 is the correct index without first SELECTing
all the data?

Is there an array push/pop function?  Is there a method of counting the
number of integers in an array?

Thanks for any help you can provide - indexable integer arrays are an
incredible feature, thanks for the hard work!

Ryan Mahoney

Re: [GENERAL] integer[] Update Questions

From
Oleg Bartunov
Date:
Well, CVS version (7.3) of contrib/intarray has:
FUNCTIONS:

  int   icount(int[]) - the number of elements in intarray
  int[] sort(int[], 'asc' | 'desc') - sort intarray
  int[] sort(int[]) - sort in ascending order
  int[] sort_asc(int[]),sort_desc(int[]) - shortcuts for sort
  int[] uniq(int[]) - returns unique elements
  int   idx(int[], int item) - returns index of first intarray matching element to item, or
                              '0' if matching failed.
  int[] subarray(int[],int START [, int LEN]) - returns part of intarray starting from
                                                element number START (from 1) and length LEN.

OPERATIONS:


  int[] && int[]  - overlap - returns TRUE if arrays has at least one common elements.
  int[] @  int[]  - contains - returns TRUE if left array contains right array
  int[] ~ int[]   - contained - returns TRUE if left array is contained in right array
  # int[]         - return the number of elements in array
  int[] + int     - push element to array ( add to end of array)
  int[] + int[]   - merge of arrays (right array added to the end of left one)
  int[] - int     - remove entries matched by right argument from array
  int[] - int[]   - remove left array from right
  int[] | int     - returns intarray - union of arguments
  int[] | int[]   - returns intarray as a union of two arrays
  int[] & int[]   - returns intersection of arrays


I don't remember if I have a patch for 7.2

    Oleg
On 23 Aug 2002, Ryan Mahoney wrote:

> Greeting Hackers! Had some questions about integer array type...
>
> If I have a integer[] field in a table, which already has the values
> {1,2,3,6,17} and I additionally want to add the value '45' to this
> array, is there any easier way than SELECTing the current values and
> then updating the entire record?
>
> I see that I could do:
> UPDATE table SET array_field[6] = 45 WHERE ...
>
> But how do I know that 6 is the correct index without first SELECTing
> all the data?
>
> Is there an array push/pop function?  Is there a method of counting the
> number of integers in an array?
>
> Thanks for any help you can provide - indexable integer arrays are an
> incredible feature, thanks for the hard work!
>
> Ryan Mahoney
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>

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


Re: [GENERAL] integer[] Update Questions

From
Ryan Mahoney
Date:
Wow Oleg, that's great to hear!  I am compiling 7.3 from CVS right now. 
If you do have a patch for 7.2 could you send that - I would like to use
these functions on some production machines running 7.2.1 currently.

Thanks for the prompt response and keep up the great work!

Ryan Mahoney

On Fri, 2002-08-23 at 12:40, Oleg Bartunov wrote:
> Well, CVS version (7.3) of contrib/intarray has:
> FUNCTIONS:
> 
>   int   icount(int[]) - the number of elements in intarray
>   int[] sort(int[], 'asc' | 'desc') - sort intarray
>   int[] sort(int[]) - sort in ascending order
>   int[] sort_asc(int[]),sort_desc(int[]) - shortcuts for sort
>   int[] uniq(int[]) - returns unique elements
>   int   idx(int[], int item) - returns index of first intarray matching element to item, or
>                               '0' if matching failed.
>   int[] subarray(int[],int START [, int LEN]) - returns part of intarray starting from
>                                                 element number START (from 1) and length LEN.
> 
> OPERATIONS:
> 
> 
>   int[] && int[]  - overlap - returns TRUE if arrays has at least one common elements.
>   int[] @  int[]  - contains - returns TRUE if left array contains right array
>   int[] ~ int[]   - contained - returns TRUE if left array is contained in right array
>   # int[]         - return the number of elements in array
>   int[] + int     - push element to array ( add to end of array)
>   int[] + int[]   - merge of arrays (right array added to the end of left one)
>   int[] - int     - remove entries matched by right argument from array
>   int[] - int[]   - remove left array from right
>   int[] | int     - returns intarray - union of arguments
>   int[] | int[]   - returns intarray as a union of two arrays
>   int[] & int[]   - returns intersection of arrays
> 
> 
> I don't remember if I have a patch for 7.2
> 
>     Oleg
> On 23 Aug 2002, Ryan Mahoney wrote:
> 
> > Greeting Hackers! Had some questions about integer array type...
> >
> > If I have a integer[] field in a table, which already has the values
> > {1,2,3,6,17} and I additionally want to add the value '45' to this
> > array, is there any easier way than SELECTing the current values and
> > then updating the entire record?
> >
> > I see that I could do:
> > UPDATE table SET array_field[6] = 45 WHERE ...
> >
> > But how do I know that 6 is the correct index without first SELECTing
> > all the data?
> >
> > Is there an array push/pop function?  Is there a method of counting the
> > number of integers in an array?
> >
> > Thanks for any help you can provide - indexable integer arrays are an
> > incredible feature, thanks for the hard work!
> >
> > Ryan Mahoney
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 4: Don't 'kill -9' the postmaster
> >
> 
>     Regards,
>         Oleg
> _____________________________________________________________
> Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
> Sternberg Astronomical Institute, Moscow University (Russia)
> Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
> phone: +007(095)939-16-83, +007(095)939-23-83
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
> 



Re: [GENERAL] integer[] Update Questions

From
Bruce Momjian
Date:
Well, we think beta is starting in 8 days, so you could be an _early_
beta tester.

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

Ryan Mahoney wrote:
> Wow Oleg, that's great to hear!  I am compiling 7.3 from CVS right now. 
> If you do have a patch for 7.2 could you send that - I would like to use
> these functions on some production machines running 7.2.1 currently.
> 
> Thanks for the prompt response and keep up the great work!
> 
> Ryan Mahoney
> 
> On Fri, 2002-08-23 at 12:40, Oleg Bartunov wrote:
> > Well, CVS version (7.3) of contrib/intarray has:
> > FUNCTIONS:
> > 
> >   int   icount(int[]) - the number of elements in intarray
> >   int[] sort(int[], 'asc' | 'desc') - sort intarray
> >   int[] sort(int[]) - sort in ascending order
> >   int[] sort_asc(int[]),sort_desc(int[]) - shortcuts for sort
> >   int[] uniq(int[]) - returns unique elements
> >   int   idx(int[], int item) - returns index of first intarray matching element to item, or
> >                               '0' if matching failed.
> >   int[] subarray(int[],int START [, int LEN]) - returns part of intarray starting from
> >                                                 element number START (from 1) and length LEN.
> > 
> > OPERATIONS:
> > 
> > 
> >   int[] && int[]  - overlap - returns TRUE if arrays has at least one common elements.
> >   int[] @  int[]  - contains - returns TRUE if left array contains right array
> >   int[] ~ int[]   - contained - returns TRUE if left array is contained in right array
> >   # int[]         - return the number of elements in array
> >   int[] + int     - push element to array ( add to end of array)
> >   int[] + int[]   - merge of arrays (right array added to the end of left one)
> >   int[] - int     - remove entries matched by right argument from array
> >   int[] - int[]   - remove left array from right
> >   int[] | int     - returns intarray - union of arguments
> >   int[] | int[]   - returns intarray as a union of two arrays
> >   int[] & int[]   - returns intersection of arrays
> > 
> > 
> > I don't remember if I have a patch for 7.2
> > 
> >     Oleg
> > On 23 Aug 2002, Ryan Mahoney wrote:
> > 
> > > Greeting Hackers! Had some questions about integer array type...
> > >
> > > If I have a integer[] field in a table, which already has the values
> > > {1,2,3,6,17} and I additionally want to add the value '45' to this
> > > array, is there any easier way than SELECTing the current values and
> > > then updating the entire record?
> > >
> > > I see that I could do:
> > > UPDATE table SET array_field[6] = 45 WHERE ...
> > >
> > > But how do I know that 6 is the correct index without first SELECTing
> > > all the data?
> > >
> > > Is there an array push/pop function?  Is there a method of counting the
> > > number of integers in an array?
> > >
> > > Thanks for any help you can provide - indexable integer arrays are an
> > > incredible feature, thanks for the hard work!
> > >
> > > Ryan Mahoney
> > >
> > > ---------------------------(end of broadcast)---------------------------
> > > TIP 4: Don't 'kill -9' the postmaster
> > >
> > 
> >     Regards,
> >         Oleg
> > _____________________________________________________________
> > Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
> > Sternberg Astronomical Institute, Moscow University (Russia)
> > Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
> > phone: +007(095)939-16-83, +007(095)939-23-83
> > 
> > 
> > ---------------------------(end of broadcast)---------------------------
> > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
> > 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
> 

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: [GENERAL] integer[] Update Questions

From
Oleg Bartunov
Date:
On 23 Aug 2002, Ryan Mahoney wrote:

> Wow Oleg, that's great to hear!  I am compiling 7.3 from CVS right now.
> If you do have a patch for 7.2 could you send that - I would like to use
> these functions on some production machines running 7.2.1 currently.

unfortuneately, we don't have a *reliable* patch for 7.2 :-(
but Beta is started (should) very soon, so you'd be able to test your
real life application :0
Oleg
>
> Thanks for the prompt response and keep up the great work!
>
> Ryan Mahoney
>
> On Fri, 2002-08-23 at 12:40, Oleg Bartunov wrote:
> > Well, CVS version (7.3) of contrib/intarray has:
> > FUNCTIONS:
> >
> >   int   icount(int[]) - the number of elements in intarray
> >   int[] sort(int[], 'asc' | 'desc') - sort intarray
> >   int[] sort(int[]) - sort in ascending order
> >   int[] sort_asc(int[]),sort_desc(int[]) - shortcuts for sort
> >   int[] uniq(int[]) - returns unique elements
> >   int   idx(int[], int item) - returns index of first intarray matching element to item, or
> >                               '0' if matching failed.
> >   int[] subarray(int[],int START [, int LEN]) - returns part of intarray starting from
> >                                                 element number START (from 1) and length LEN.
> >
> > OPERATIONS:
> >
> >
> >   int[] && int[]  - overlap - returns TRUE if arrays has at least one common elements.
> >   int[] @  int[]  - contains - returns TRUE if left array contains right array
> >   int[] ~ int[]   - contained - returns TRUE if left array is contained in right array
> >   # int[]         - return the number of elements in array
> >   int[] + int     - push element to array ( add to end of array)
> >   int[] + int[]   - merge of arrays (right array added to the end of left one)
> >   int[] - int     - remove entries matched by right argument from array
> >   int[] - int[]   - remove left array from right
> >   int[] | int     - returns intarray - union of arguments
> >   int[] | int[]   - returns intarray as a union of two arrays
> >   int[] & int[]   - returns intersection of arrays
> >
> >
> > I don't remember if I have a patch for 7.2
> >
> >     Oleg
> > On 23 Aug 2002, Ryan Mahoney wrote:
> >
> > > Greeting Hackers! Had some questions about integer array type...
> > >
> > > If I have a integer[] field in a table, which already has the values
> > > {1,2,3,6,17} and I additionally want to add the value '45' to this
> > > array, is there any easier way than SELECTing the current values and
> > > then updating the entire record?
> > >
> > > I see that I could do:
> > > UPDATE table SET array_field[6] = 45 WHERE ...
> > >
> > > But how do I know that 6 is the correct index without first SELECTing
> > > all the data?
> > >
> > > Is there an array push/pop function?  Is there a method of counting the
> > > number of integers in an array?
> > >
> > > Thanks for any help you can provide - indexable integer arrays are an
> > > incredible feature, thanks for the hard work!
> > >
> > > Ryan Mahoney
> > >
> > > ---------------------------(end of broadcast)---------------------------
> > > TIP 4: Don't 'kill -9' the postmaster
> > >
> >
> >     Regards,
> >         Oleg
> > _____________________________________________________________
> > Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
> > Sternberg Astronomical Institute, Moscow University (Russia)
> > Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
> > phone: +007(095)939-16-83, +007(095)939-23-83
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
> >
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
>
Regards,    Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83