Обсуждение: Postgres 9 alpha 5 revised, stored proc
I have this stored proc that works in pg 8.4.
create or replace function roundts(ts timestamp) returns timestamp as $$
declare
tmp integer;
result timestamp;
offset interval;
begin
tmp := extract(second from ts);
if tmp > 30 then
tmp := 60 - tmp;
offset := tmp || ' seconds';
result := ts + offset;
else
offset := tmp || ' seconds';
result := ts - offset;
end if;
tmp := extract(minute from result);
if tmp > 30 then
tmp := 60 - tmp;
offset := tmp || ' minutes';
result := result + offset;
else
offset := tmp || ' minutes';
result := result - offset;
end if;
return result;
end; $$ language plpgsql;
In 9 I get an error when trying to create it:
$ psql < roundts.sql
Timing is on.
CREATE FUNCTION
Time: 26.716 ms
ERROR: syntax error at or near "offset"
LINE 11: result := ts + offset;
^
Just wanted to report it.
-Andy
Andy Colson <andy@squeakycode.net> writes: > I have this stored proc that works in pg 8.4. > create or replace function roundts(ts timestamp) returns timestamp as $$ > declare > tmp integer; > result timestamp; > offset interval; OFFSET is a reserved word: http://developer.postgresql.org/pgdocs/postgres/sql-keywords-appendix.html Older versions of plpgsql didn't have quite the same rules about reserved words as the main SQL parser. In 9.0 the rules are much more nearly the same; in particular, unquoted use of reserved words won't work. regards, tom lane
On 04/07/2010 08:34 PM, Tom Lane wrote: > Andy Colson<andy@squeakycode.net> writes: >> I have this stored proc that works in pg 8.4. >> create or replace function roundts(ts timestamp) returns timestamp as $$ >> declare >> tmp integer; >> result timestamp; >> offset interval; > > OFFSET is a reserved word: > http://developer.postgresql.org/pgdocs/postgres/sql-keywords-appendix.html > > Older versions of plpgsql didn't have quite the same rules about > reserved words as the main SQL parser. In 9.0 the rules are much > more nearly the same; in particular, unquoted use of reserved words > won't work. > > regards, tom lane Ah, thank you. Variable-name-changing-time again. -Andy