Re: PL/pgSQL 'i = i + 1' Syntax

From: Mark Dilger <pgsql(at)markdilger(dot)com>
To: David Wheeler <david(at)kineticode(dot)com>
Subject: Re: PL/pgSQL 'i = i + 1' Syntax
Date: 2006-05-16 23:37:19
Message-ID: 446A622F.10209@markdilger.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

David Wheeler wrote:
> Hellow PostgreSQL hackers,
>
> Quick question. Why does the 'i = i + 1' syntax work in this PL/pgSQL
> function?
>
> try=# CREATE OR REPLACE FUNCTION inc_by_two(
> try(# upfrom int,
> try(# upto int
> try(# ) RETURNS SETOF INT AS $$
> try$# BEGIN
> try$# FOR i IN upfrom..upto LOOP
> try$# RETURN NEXT i;
> try$# i = i + 1;
> try$# END LOOP;
> try$# END;
> try$# $$ LANGUAGE 'plpgsql';
> CREATE FUNCTION
> try=# select * from inc_by_two(1,10);
> inc_by_two
> ------------
> 1
> 3
> 5
> 7
> 9
> (5 rows)
>
> Someone posted a PL/pgSQL function in my blog with this syntax, which
> is how I know about it, but I couldn't find it documented anywhere. Is
> it a special exception for loop variables, perhaps?
>
> Thanks,
>
> David
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster
>

The syntax for assignment is:

i := i + 1

what you are doing is merely comparison. Since you are not using the results of
the comparison, it is a no-op.

mark

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message David Wheeler 2006-05-16 23:40:14 Re: PL/pgSQL 'i = i + 1' Syntax
Previous Message Andrew Dunstan 2006-05-16 23:30:35 Re: PL/pgSQL 'i = i + 1' Syntax