--
--> Generator tests
CREATE OR REPLACE FUNCTION
genreturn() RETURNS text LANGUAGE plpy
AS 'while True: yield ''infinite text''';
SELECT genreturn();
SELECT genreturn();
SELECT genreturn(), genreturn(), genreturn();

CREATE OR REPLACE FUNCTION
counter() RETURNS bigint LANGUAGE plpy
AS 'i=0
while True:
 i+=1
 yield i
';
CREATE TEMP TABLE gencounter (val bigint) WITHOUT OIDS;
INSERT INTO gencounter VALUES (234);
INSERT INTO gencounter VALUES (432);
INSERT INTO gencounter VALUES (123);
SELECT counter(), * FROM gencounter;
INSERT INTO gencounter VALUES (123);
INSERT INTO gencounter VALUES (123);
INSERT INTO gencounter VALUES (-123);
SELECT max(counter()) = 6 FROM gencounter;

SELECT counter(), * FROM gencounter;

SELECT counter(), counter() FROM gencounter;
SELECT counter() = counter() FROM gencounter;

--
--> Test generator argument overloading
CREATE OR REPLACE FUNCTION
genrepeater(bigint) RETURNS bigint LANGUAGE plpy
AS 'while True:
 yield args[0]
';
SELECT genrepeater(val) FROM gencounter;
SELECT val = genrepeater(val) FROM gencounter;

/* vim: set filetype=sql: */
