--- sql/pgtap.sql +++ sql/pgtap.sql @@ -2278,13 +2278,13 @@ CREATE OR REPLACE FUNCTION _constraint ( NAME, NAME, CHAR, NAME[], TEXT, TEXT ) RETURNS TEXT AS $$ DECLARE - akey NAME[]; + rec record; keys TEXT[] := '{}'; have TEXT; BEGIN - FOR akey IN SELECT * FROM _keys($1, $2, $3) LOOP - IF akey = $4 THEN RETURN pass($5); END IF; - keys = keys || akey::text; + FOR rec IN SELECT * FROM _keys($1, $2, $3) AS b(a) LOOP + IF rec.a = $4 THEN RETURN pass($5); END IF; + keys = keys || rec.a::text; END LOOP; IF array_upper(keys, 0) = 1 THEN have := 'No ' || $6 || ' constraints'; @@ -2302,13 +2302,13 @@ CREATE OR REPLACE FUNCTION _constraint ( NAME, CHAR, NAME[], TEXT, TEXT ) RETURNS TEXT AS $$ DECLARE - akey NAME[]; + rec record; keys TEXT[] := '{}'; have TEXT; BEGIN - FOR akey IN SELECT * FROM _keys($1, $2) LOOP - IF akey = $3 THEN RETURN pass($4); END IF; - keys = keys || akey::text; + FOR rec IN SELECT * FROM _keys($1, $2) AS b(a) LOOP + IF rec.a = $3 THEN RETURN pass($4); END IF; + keys = keys || rec.a::text; END LOOP; IF array_upper(keys, 0) = 1 THEN have := 'No ' || $5 || ' constraints'; @@ -6207,7 +6207,7 @@ CREATE OR REPLACE FUNCTION _runem( text[], boolean ) RETURNS SETOF TEXT AS $$ DECLARE - tap text; + rec record; lbound int := array_lower($1, 1); BEGIN IF lbound IS NULL THEN RETURN; END IF; @@ -6215,8 +6215,8 @@ -- Send the name of the function to diag if warranted. IF $2 THEN RETURN NEXT diag( $1[i] || '()' ); END IF; -- Execute the tap function and return its results. - FOR tap IN EXECUTE 'SELECT * FROM ' || $1[i] || '()' LOOP - RETURN NEXT tap; + FOR rec IN EXECUTE 'SELECT * FROM ' || $1[i] || '() AS b(a)' LOOP + RETURN NEXT rec.a; END LOOP; END LOOP; RETURN; @@ -6285,7 +6285,7 @@ setup ALIAS FOR $3; teardown ALIAS FOR $4; tests ALIAS FOR $5; - tap TEXT; + rec RECORD; tfaild INTEGER := 0; ffaild INTEGER := 0; tnumb INTEGER := 0; @@ -6295,7 +6295,7 @@ BEGIN -- No plan support. PERFORM * FROM no_plan(); - FOR tap IN SELECT * FROM _runem(startup, false) LOOP RETURN NEXT tap; END LOOP; + FOR rec IN SELECT * FROM _runem(startup, false) AS b(a) LOOP RETURN NEXT rec.a; END LOOP; EXCEPTION -- Catch all exceptions and simply rethrow custom exceptions. This -- will roll back everything in the above block. @@ -6334,18 +6334,18 @@ BEGIN BEGIN -- Run the setup functions. - FOR tap IN SELECT * FROM _runem(setup, false) LOOP - RETURN NEXT regexp_replace(tap, E'(^|\n)', E'\\1 ', 'g'); + FOR rec IN SELECT * FROM _runem(setup, false) AS b(a) LOOP + RETURN NEXT regexp_replace(rec.a, E'(^|\n)', E'\\1 ', 'g'); END LOOP; -- Run the actual test function. - FOR tap IN EXECUTE 'SELECT * FROM ' || tests[i] || '()' LOOP - RETURN NEXT regexp_replace(tap, E'(^|\n)', E'\\1 ', 'g'); + FOR rec IN EXECUTE 'SELECT * FROM ' || tests[i] || '() AS b(a)' LOOP + RETURN NEXT regexp_replace(rec.a, E'(^|\n)', E'\\1 ', 'g'); END LOOP; -- Run the teardown functions. - FOR tap IN SELECT * FROM _runem(teardown, false) LOOP - RETURN NEXT regexp_replace(tap, E'(^|\n)', E'\\1 ', 'g'); + FOR rec IN SELECT * FROM _runem(teardown, false) AS b(a) LOOP + RETURN NEXT regexp_replace(rec.a, E'(^|\n)', E'\\1 ', 'g'); END LOOP; -- Emit the plan. @@ -6401,11 +6401,11 @@ END LOOP; -- Run the shutdown functions. - FOR tap IN SELECT * FROM _runem(shutdown, false) LOOP RETURN NEXT tap; END LOOP; + FOR rec IN SELECT * FROM _runem(shutdown, false) AS b(a) LOOP RETURN NEXT rec.a; END LOOP; -- Finish up. - FOR tap IN SELECT * FROM _finish( COALESCE(_get('curr_test'), 0), 0, tfaild ) LOOP - RETURN NEXT tap; + FOR rec IN SELECT * FROM _finish( COALESCE(_get('curr_test'), 0), 0, tfaild ) AS b(a) LOOP + RETURN NEXT rec.a; END LOOP; -- Clean up and return. @@ -7663,7 +7663,7 @@ DECLARE rec RECORD; BEGIN - EXECUTE _query($1) INTO rec; + FOR rec in EXECUTE _query($1) LOOP END LOOP; IF NOT textin(record_out(rec)) IS DISTINCT FROM textin(record_out($2)) THEN RETURN ok(true, $3); END IF;