array constructor can't construct empty array
Hello
I have function
CREATE FUNCTION foo(date, date, INTEGER[]) RETURNS INTEGER
Array and array's functions works fine, but I need call this function
with empty array. I can't use array constructor for empty array. When
I call function foo with e.a. ,I get syntax error. I can call with '{}'.
What is coorect style?
Thank You
Pavel Stehule
Pavel Stehule wrote:
Hello
I have function
CREATE FUNCTION foo(date, date, INTEGER[]) RETURNS INTEGER
Array and array's functions works fine, but I need call this function
with empty array. I can't use array constructor for empty array. When
I call function foo with e.a. ,I get syntax error. I can call with '{}'.
Are you running 7.4beta?
--
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, Pennsylvania 19073
On Mon, 1 Sep 2003, Bruce Momjian wrote:
Pavel Stehule wrote:
Hello
I have function
CREATE FUNCTION foo(date, date, INTEGER[]) RETURNS INTEGER
Array and array's functions works fine, but I need call this function
with empty array. I can't use array constructor for empty array. When
I call function foo with e.a. ,I get syntax error. I can call with '{}'.Are you running 7.4beta?
I am sorry, yes, of course :->,
testdb=> SELECT version();
version
---------------------------------------------------------------------------
PostgreSQL 7.4beta1 on i586-pc-linux-gnu, compiled by GCC gcc (GCC) 3.2.2
(1 ��dka)
Show quoted text
Pavel Stehule wrote:
CREATE FUNCTION foo(date, date, INTEGER[]) RETURNS INTEGER
Array and array's functions works fine, but I need call this function
with empty array. I can't use array constructor for empty array. When
I call function foo with e.a. ,I get syntax error. I can call with '{}'.Are you running 7.4beta?
I am sorry, yes, of course :->,
testdb=> SELECT version();
version
---------------------------------------------------------------------------
PostgreSQL 7.4beta1 on i586-pc-linux-gnu, compiled by GCC gcc (GCC) 3.2.2
You haven't shown us your function or how you're trying to call it. In
any case, works here:
regression=# CREATE FUNCTION foo(INTEGER[], INTEGER) RETURNS INTEGER AS
'select ss.f[1] from (select $1 || $2 as f) as ss' language sql;
CREATE FUNCTION
regression=# select foo('{}'::int4[], 3);
foo
-----
3
(1 row)
Joe
Pavel Stehule <stehule@kix.fsv.cvut.cz> writes:
Array and array's functions works fine, but I need call this function
with empty array. I can't use array constructor for empty array.
Yeah. We have not figured out how to assign a type to "ARRAY[]".
You can do something like '{}'::integer[], however.
regards, tom lane
On Mon, 1 Sep 2003, jconway wrote:
You haven't shown us your function or how you're trying to call it. In
any case, works here:regression=# CREATE FUNCTION foo(INTEGER[], INTEGER) RETURNS INTEGER AS
'select ss.f[1] from (select $1 || $2 as f) as ss' language sql;
CREATE FUNCTION
regression=# select foo('{}'::int4[], 3);
foo
-----
3
(1 row)Joe
I didn't show my function, because this function is unimportant. Header of
my function was important. My question was about using array constructor
ARRAY. Is possible construct empty array via this constructor? . For
example
I can
select foo('{}'::int4[]) -- ok
select foo('{}') -- ok too
but
select foo(array[]) -- syntax error,
my function can by like
Function FirstDay(date, integer[]) returns date as '
declare s;
begin s := $1;
loop
if extract(dow from s) = ANY($2) then
s := s + 1;
else
return s;
end if
end loop
end' language plpgsq;
Sometime I need call this function with empty array. That is all.
Regards
Pavel Stehule
I can
select foo('{}'::int4[]) -- ok
select foo('{}') -- ok too
but
select foo(array[]) -- syntax error,my function can by like
Correct -- you cannot use the ARRAY constructor empty. If you need an
empty array, use '{}'. Search the archives for previous discussions on
this topic during the June/July timeframe. This might change for 7.5,
but don't count on it (at least not yet).
Joe