>
>
> I tried your code in Postgres 8.2:
>

8.2 ?, Seems you have tested it in very Old version.


>  CREATE OR REPLACE FUNCTION _final_mode(anyarray)
>
> RETURNS anyelement AS
>
> $BODY$
>
> SELECT a
>
> FROM unnest($1) a
>
> GROUP BY 1
>
> ORDER BY COUNT(1) DESC, 1
>
> LIMIT 1;
>
> $BODY$
>
> LANGUAGE 'sql' IMMUTABLE;
>
> DROP AGGREGATE IF EXISTS mode(anyelement);
>
> CREATE AGGREGATE mode(anyelement)
> (SFUNC=array_append,STYPE=anyarray,FINALFUNC=_final_mode,INITCOND='{}');
>
>
> I also added the unnest function (although mine seemed to already have it).
>
>
>
>
> I tested it like this:
>
>                sdap=# create table Z as (select 7 as value);
>
>                sdap=# select mode(value) from Z;
>
>  mode
>
> ------
>
>     7
>
> (1 row)  --WORKS
>
>
>
> sdap=# insert into Z values (8);
>
> sdap=# insert into Z values (8);
>
> select mode(value) from Z;
>
> mode
>
> ------
>
>     8
>
> (1 row) --WORKS
>
>
>
> sdap=# insert into Z values (NULL);
>
> sdap=# select mode(value) from Z;
>
> ERROR:  null array element where not supported (arrayfuncs.c:872)
>
>
>
> Any ideas?
>
>
>
It works very well in the latest version. Have you checked it.

bash-4.1$ psql
psql.bin (9.1.4)
Type "help" for help.

postgres=# \pset null NULL
Null display is "NULL".
postgres=# select * from z;
 value
-------
     7
  NULL
(2 rows)

postgres=# select mode(value) from Z;
 mode
------
    7
(1 row)


--Raghav

Reply via email to