Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 346D42E00BA for ; Thu, 6 Mar 2008 03:45:15 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 27845-01 for ; Thu, 6 Mar 2008 03:45:12 -0400 (AST) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.5 Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.173]) by postgresql.org (Postfix) with ESMTP id 4F21C2E00B6 for ; Thu, 6 Mar 2008 03:45:12 -0400 (AST) Received: by ug-out-1314.google.com with SMTP id j3so3205241ugf.49 for ; Wed, 05 Mar 2008 23:45:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; bh=220AD39fVx3nmFe5s6RIBvytz/C59JjyRC5pZ1aUASM=; b=fR0noEeCoau8WjPHrQxHf6WVzBwDTaU2qhlwnB7STYgxI0ZXl8LTxzwd+fIEft3jDACAaVLwHp63DN0Raldh2R9w/LLYJ0xgz/X9U6KPBEht4SM45O2UTwT6sV5CW6fszmp6wrwSmazxFkQmkYg40GRj0I1QxtTms5KD8oNFC14= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=LXVqeF1LP2nEJAjJw1/QV3UreDEbyyt2X8lKPEdfwRTF36DbhQHhzcUwbuG1xV6mJ3Vq8CwZ5tG2Fh+bmL+mHNz5gpGyLYMQFhv0y3SPf6TFlkXhvdutDuM0YPJnKSx5U/8PBUm0zkpuLOYttFWWdai1zLPBuJQaSd5niajutlA= Received: by 10.78.204.7 with SMTP id b7mr9200374hug.38.1204789511020; Wed, 05 Mar 2008 23:45:11 -0800 (PST) Received: by 10.78.202.12 with HTTP; Wed, 5 Mar 2008 23:45:10 -0800 (PST) Message-ID: <3b6c69d80803052345g31af3b74k6b8878c65197d621@mail.gmail.com> Date: Thu, 6 Mar 2008 10:45:11 +0300 From: "Yura Gal" To: pgsql-sql@postgresql.org Subject: RETURN QUERY generates error MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200803/22 X-Sequence-Number: 30350 Here is my function: CREATE OR REPLACE FUNCTION "hg18"."get_genomeseq" (_chr varchar, _byblocks boolean, _starts integer [], _ends integer []) RETURNS SETOF text AS $body$ DECLARE _start integer; _end integer; _sequence text[]; _seq50 RECORD; _seq text; _q text; BEGIN FOR i IN 1..array_upper(_starts, 1) LOOP _start := _starts[i]; _end := _ends[i]; _q := 'SELECT start, sequence ' || 'FROM hg18.genome ' || $$WHERE chr = 'chr' || '$$ || _chr::varchar || $$' $$ || 'AND start >= floor(' || _start || '/50)*50 ' || 'AND start < ' || _end; --RAISE NOTICE 'Query is %', _q; FOR _seq50 IN EXECUTE _q LOOP IF _seq50.start < _start THEN _sequence[i] := substring(_seq50.sequence, _start%_seq50.start); ELSEIF _seq50.start >= _start AND _seq50.start + 49 <= _end THEN _sequence[i] := _sequence[i] || _seq50.sequence; ELSE _sequence[i] := _sequence[i] || substring(_seq50.sequence, 1, _end%_seq50.start); END IF; END LOOP; END LOOP; IF _byblocks IS TRUE THEN RETURN QUERY SELECT regexp_split_to_table(array_to_string(_sequence, ','), E','); ELSE RETURN QUERY SELECT array_to_string(_sequence, ''); END IF; RETURN; END; $body$ LANGUAGE 'plpgsql' IMMUTABLE CALLED ON NULL INPUT SECURITY INVOKER; all is fine until the last IF. Both RETURN QUERY blocks generate error: 'syntax error at or near SELECT ...' I feel that something wrong with casting _sequence var but I can't figure out the exact point.