All pastes #709298 Raw Edit

Untitled

public text v1 · immutable
#709298 ·published 2007-09-24 15:30 UTC
rendered paste body
CREATE OR REPLACE FUNCTION getBlogsFromMostPopularTagsAndSite (
	site_id	INTEGER) RETURNS SETOF RECORD AS $$
DECLARE 
	tag_row RECORD;
	blog_row RECORD;
BEGIN

	-- requete de selection des tags
	
	FOR tag_row IN 
		SELECT 	tag
		FROM	_freetag_blog
		JOIN   _freetagged_object_blog
			ON (_freetag_blog.id = _freetagged_object_blog.tag_id)
		WHERE  	_freetagged_object_blog.object_tree <@ '0.1'
		AND  	(_freetag_blog.rating & (1 << (1 - 1))) = 0 
		AND  	(_freetagged_object_blog.rating & (1 << (1 - 1))) = 0 
		GROUP BY tag
		ORDER BY COUNT (tag) DESC, tag ASC
		OFFSET 0
		LIMIT 10 LOOP

			FOR blog_row IN
				SELECT tag, _blog.id
				FROM   _blog
				JOIN   _freetagged_object_blog
					ON (_blog.path = _freetagged_object_blog.object_tree)	
				JOIN   _freetag_blog
					ON (_freetag_blog.id = _freetagged_object_blog.tag_id)
				LEFT JOIN _top_blog
					ON (_blog.id = _top_blog.id )
				WHERE _blog.path <@ '0.1'
				AND (_blog.rating & (1 << (1 - 1))) = 0
				GROUP BY _blog.id, tag, rank  
				HAVING tag = tag_row.tag
				ORDER BY tag, rank DESC
				OFFSET 0
				LIMIT 5 LOOP
				
				RETURN NEXT blog_row;	
				
			END LOOP;
	END LOOP;
	
END;
$$ LANGUAGE plpgsql;

----------------

ob2=# SELECT * FROM getBlogsFromMostPopularTagsAndSite (1)  AS (tag TEXT, id INT8);
ERROR:  wrong record type supplied in RETURN NEXT
CONTEXT:  PL/pgSQL function "getblogsfrommostpopulartagsandsite" line 38 at return next