From 0f74fbbd3fdb9f526427b29f11fb99a7a0b7b338 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Tue, 24 Feb 2015 08:59:45 +0000 Subject: [PATCH] Fix scan type detection function to work with nested nodes git-svn-id: http://svn.osgeo.org/postgis/trunk@13277 b70326c6-7e19-0410-871a-916f4a2858ee --- regress/regress_index.sql | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/regress/regress_index.sql b/regress/regress_index.sql index 0b27132d6..582cca543 100644 --- a/regress/regress_index.sql +++ b/regress/regress_index.sql @@ -3,14 +3,25 @@ --- test some of the searching capabilities -CREATE FUNCTION qnodes(q text) RETURNS text +CREATE OR REPLACE FUNCTION qnodes(q text) RETURNS text LANGUAGE 'plpgsql' AS $$ DECLARE exp TEXT; + mat TEXT[]; + ret TEXT[]; BEGIN - EXECUTE 'EXPLAIN ' || q INTO exp; - RETURN (regexp_matches(exp, ' *(.*Scan)'))[1]; + FOR exp IN EXECUTE 'EXPLAIN ' || q + LOOP + --RAISE NOTICE 'EXP: %', exp; + mat := regexp_matches(exp, ' *(?:-> *)?(.*Scan)'); + --RAISE NOTICE 'MAT: %', mat; + IF mat IS NOT NULL THEN + ret := array_append(ret, mat[1]); + END IF; + --RAISE NOTICE 'RET: %', ret; + END LOOP; + RETURN array_to_string(ret,','); END; $$; -- 2.50.1