I have a function written in plpythonu.
x
CREATE OR REPLACE FUNCTION temp(t_x integer[])
RETURNS void AS
$BODY$
.
.
.
x=plpy.execute("""select array_to_string(select id from A where id=any(array%s) ), ',')"""%t_x)
On some cases when t_x is empty i get an error:
ERROR: cannot determine type of empty array
How do I fix it?
Advertisement
Answer
if-else statement
Pseudocode:
if t_x is empty
x=null
else
x=plpy.execute .
cast
x=plpy.execute("""select array_to_string(select id from A where id=any(array%s::integer[]) ), ',')"""%t_x)
Why cast help?
postgres=# select pg_typeof(array[1,2]);
pg_typeof
-----------
integer[]
array[1,2]
has type integer[]
postgres=# select array[];
ERROR: cannot determine type of empty array
LINE 1: select array[];
array[]
has no type.
postgres=# select pg_typeof(array[]::integer[]);
pg_typeof
-----------
integer[]
array[]::integer[]
has type integer[]