--- sql/pgtap.sql +++ sql/pgtap.sql @@ -2258,13 +2258,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'; @@ -2282,13 +2282,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'; @@ -6158,7 +6158,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; @@ -6166,8 +6166,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; @@ -6236,7 +6236,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; @@ -6246,7 +6246,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. @@ -6285,18 +6285,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. @@ -6352,11 +6352,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. @@ -7614,7 +7614,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;