Search Postgresql Archives

Re: Setting all elements in an Bool[] array to the same value

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jun 09, 2005 at 06:10:28PM -0700, Otto Blomqvist wrote:
> 
> Is there any way to set all elements in a  long boolean array (bool[]) to
> the same value ?

In PostgreSQL 7.4 and later you could write a polymorphic function
to fill any type of array.  Here's a simple example that handles
one-dimensional arrays:

CREATE FUNCTION array_fill(anyarray, anyelement) RETURNS anyarray AS '
DECLARE
    a  $0%TYPE := ''{}'';
    i  integer;
BEGIN
    FOR i IN array_lower($1, 1) .. array_upper($1, 1) LOOP
        a[i] := $2;
    END LOOP;

    RETURN a;
END;
' LANGUAGE plpgsql IMMUTABLE STRICT;

CREATE TABLE foo (
    id      serial PRIMARY KEY,
    barray  boolean[],
    iarray  integer[]
);

INSERT INTO foo (barray, iarray) VALUES ('{t,f}', '{1,2,3}');
INSERT INTO foo (barray, iarray) VALUES ('{t,f,t,f}', '{4,5,6,7,8,9}');

SELECT * FROM foo ORDER BY id;
 id |  barray   |    iarray     
----+-----------+---------------
  1 | {t,f}     | {1,2,3}
  2 | {t,f,t,f} | {4,5,6,7,8,9}
(2 rows)

UPDATE foo SET barray = array_fill(barray, false),
               iarray = array_fill(iarray, 0);

SELECT * FROM foo ORDER BY id;
 id |  barray   |    iarray     
----+-----------+---------------
  1 | {f,f}     | {0,0,0}
  2 | {f,f,f,f} | {0,0,0,0,0,0}
(2 rows)

-- 
Michael Fuhr
http://www.fuhr.org/~mfuhr/

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux