OSDN Git Service

A-11-1-4,5 A-12-4:-*の試験を追加した。
authorMitsuru Hasegawa <hasegawa@metrosystems.co.jp>
Fri, 24 Aug 2012 12:48:24 +0000 (21:48 +0900)
committerMitsuru Hasegawa <hasegawa@metrosystems.co.jp>
Fri, 24 Aug 2012 12:48:24 +0000 (21:48 +0900)
expected/ut-A.out
sql/ut-A.sql

index 2af69bf..fb994f8 100644 (file)
@@ -3142,6 +3142,119 @@ error hint:
 (6 rows)
 
 ----
+---- No. A-11-1 psql command
+----
+SELECT count(*) FROM s1.t1 WHERE t1.c1 = 1;
+ count 
+-------
+     1
+(1 row)
+
+/*+SeqScan(t1)*/
+SELECT count(*) FROM s1.t1 WHERE t1.c1 = 1;
+LOG:  pg_hint_plan:
+used hint:
+SeqScan(t1)
+not used hint:
+duplication hint:
+error hint:
+
+ count 
+-------
+     1
+(1 row)
+
+-- No. A-11-1-4
+\set FETCH_COUNT 0
+/*+SeqScan(t1)*/
+SELECT count(*) FROM s1.t1 WHERE t1.c1 = 1;
+LOG:  pg_hint_plan:
+used hint:
+SeqScan(t1)
+not used hint:
+duplication hint:
+error hint:
+
+ count 
+-------
+     1
+(1 row)
+
+-- No. A-11-1-5
+\set FETCH_COUNT 1
+/*+SeqScan(t1)*/
+SELECT count(*) FROM s1.t1 WHERE t1.c1 = 1;
+ count 
+-------
+     1
+(1 row)
+
+\unset FETCH_COUNT
+----
+---- No. A-12-4 PL/pgSQL function
+----
+-- No. A-12-4-1
+CREATE OR REPLACE FUNCTION f1() RETURNS SETOF text LANGUAGE plpgsql AS $$
+DECLARE
+    r text;
+BEGIN
+    FOR r IN EXPLAIN SELECT c4 FROM s1.t1 WHERE t1.c1 = 1
+    LOOP
+        RETURN NEXT r; -- return current row of SELECT
+    END LOOP;
+    RETURN;
+END
+$$;
+SELECT f1();
+                               f1                               
+----------------------------------------------------------------
+ Index Scan using t1_i1 on t1  (cost=0.00..8.27 rows=1 width=3)
+   Index Cond: (c1 = 1)
+(2 rows)
+
+/*+SeqScan(t1)*/
+SELECT f1();
+LOG:  pg_hint_plan:
+used hint:
+not used hint:
+SeqScan(t1)
+duplication hint:
+error hint:
+
+LOG:  pg_hint_plan:
+used hint:
+SeqScan(t1)
+not used hint:
+duplication hint:
+error hint:
+
+CONTEXT:  PL/pgSQL function "f1" line 5 at FOR over SELECT rows
+                        f1                         
+---------------------------------------------------
+ Seq Scan on t1  (cost=0.00..18.50 rows=1 width=3)
+   Filter: (c1 = 1)
+(2 rows)
+
+-- No. A-12-4-2
+/*+SeqScan(t1)*/CREATE OR REPLACE FUNCTION f1() RETURNS SETOF text LANGUAGE plpgsql AS $$
+DECLARE
+    r text;
+BEGIN
+    /*+SeqScan(t1)*/FOR r IN EXPLAIN /*+SeqScan(t1)*/SELECT c4 FROM s1.t1 WHERE t1.c1 = 1
+    LOOP
+        /*+SeqScan(t1)*/RETURN NEXT r; -- return current row of SELECT
+    END LOOP;
+    /*+SeqScan(t1)*/RETURN;
+END
+$$;
+SELECT f1();
+                               f1                               
+----------------------------------------------------------------
+ Index Scan using t1_i1 on t1  (cost=0.00..8.27 rows=1 width=3)
+   Index Cond: (c1 = 1)
+(2 rows)
+
+----
 ---- No. A-12-1 reset of global variable of core at the error
 ---- No. A-12-2 reset of global variable of original at the error
 ----
index 14f3ec9..5f288e5 100644 (file)
@@ -832,6 +832,57 @@ EXPLAIN (COSTS false) SELECT * FROM s1.r4 t1, s1.r5 t2 WHERE t1.c1 = t2.c1;
 EXPLAIN (COSTS false) SELECT * FROM s1.r4 t1, s1.r5 t2 WHERE t1.c1 = t2.c1;
 
 ----
+---- No. A-11-1 psql command
+----
+
+SELECT count(*) FROM s1.t1 WHERE t1.c1 = 1;
+/*+SeqScan(t1)*/
+SELECT count(*) FROM s1.t1 WHERE t1.c1 = 1;
+-- No. A-11-1-4
+\set FETCH_COUNT 0
+/*+SeqScan(t1)*/
+SELECT count(*) FROM s1.t1 WHERE t1.c1 = 1;
+-- No. A-11-1-5
+\set FETCH_COUNT 1
+/*+SeqScan(t1)*/
+SELECT count(*) FROM s1.t1 WHERE t1.c1 = 1;
+\unset FETCH_COUNT
+
+----
+---- No. A-12-4 PL/pgSQL function
+----
+
+-- No. A-12-4-1
+CREATE OR REPLACE FUNCTION f1() RETURNS SETOF text LANGUAGE plpgsql AS $$
+DECLARE
+    r text;
+BEGIN
+    FOR r IN EXPLAIN SELECT c4 FROM s1.t1 WHERE t1.c1 = 1
+    LOOP
+        RETURN NEXT r; -- return current row of SELECT
+    END LOOP;
+    RETURN;
+END
+$$;
+SELECT f1();
+/*+SeqScan(t1)*/
+SELECT f1();
+
+-- No. A-12-4-2
+/*+SeqScan(t1)*/CREATE OR REPLACE FUNCTION f1() RETURNS SETOF text LANGUAGE plpgsql AS $$
+DECLARE
+    r text;
+BEGIN
+    /*+SeqScan(t1)*/FOR r IN EXPLAIN /*+SeqScan(t1)*/SELECT c4 FROM s1.t1 WHERE t1.c1 = 1
+    LOOP
+        /*+SeqScan(t1)*/RETURN NEXT r; -- return current row of SELECT
+    END LOOP;
+    /*+SeqScan(t1)*/RETURN;
+END
+$$;
+SELECT f1();
+
+----
 ---- No. A-12-1 reset of global variable of core at the error
 ---- No. A-12-2 reset of global variable of original at the error
 ----