RETURN QUERY generates error - Mailing list pgsql-sql

From Yura Gal
Subject RETURN QUERY generates error
Date
Msg-id 3b6c69d80803052345g31af3b74k6b8878c65197d621@mail.gmail.com
Whole thread Raw
Responses Re: RETURN QUERY generates error
Re: RETURN QUERY generates error
List pgsql-sql
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        :=
'SELECTstart, 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.


pgsql-sql by date:

Previous
From: tyrrill_ed@emc.com
Date:
Subject: Bit string help, please
Next
From: Richard Huxton
Date:
Subject: Re: Bit string help, please