OSDN Git Service

Properly change the state of parallel hints.
[pghintplan/pg_hint_plan.git] / expected / ut-W.out
1 LOAD 'pg_hint_plan';
2 ALTER SYSTEM SET session_preload_libraries TO 'pg_hint_plan';
3 SET pg_hint_plan.enable_hint TO on;
4 SET pg_hint_plan.debug_print TO on;
5 SET client_min_messages TO LOG;
6 SET search_path TO public;
7 SET max_parallel_workers_per_gather TO 0;
8 SET enable_indexscan to false;
9 SET enable_bitmapscan to false;
10 SET parallel_setup_cost to 0;
11 SET parallel_tuple_cost to 0;
12 SET min_parallel_relation_size to 0;
13 SET max_parallel_workers_per_gather to 0;
14 CREATE TABLE s1.tl (a int);
15 INSERT INTO s1.tl (SELECT a FROM generate_series(0, 100000) a);
16 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
17    QUERY PLAN   
18 ----------------
19  Seq Scan on t1
20 (1 row)
21
22 /*+Parallel(t1 10)*/
23 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
24 LOG:  pg_hint_plan:
25 used hint:
26 Parallel(t1 10 soft)
27 not used hint:
28 duplication hint:
29 error hint:
30
31           QUERY PLAN           
32 -------------------------------
33  Gather
34    Workers Planned: 2
35    ->  Parallel Seq Scan on t1
36 (3 rows)
37
38 /*+Parallel(t1 10 soft)*/
39 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
40 LOG:  pg_hint_plan:
41 used hint:
42 Parallel(t1 10 soft)
43 not used hint:
44 duplication hint:
45 error hint:
46
47           QUERY PLAN           
48 -------------------------------
49  Gather
50    Workers Planned: 2
51    ->  Parallel Seq Scan on t1
52 (3 rows)
53
54 /*+Parallel(t1 10 hard)*/
55 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
56 LOG:  pg_hint_plan:
57 used hint:
58 Parallel(t1 10 hard)
59 not used hint:
60 duplication hint:
61 error hint:
62
63           QUERY PLAN           
64 -------------------------------
65  Gather
66    Workers Planned: 10
67    ->  Parallel Seq Scan on t1
68 (3 rows)
69
70 -- Inheritnce tables
71 /*+Parallel(p1 10 soft)*/
72 EXPLAIN (COSTS false) SELECT * FROM p1;
73 LOG:  pg_hint_plan:
74 used hint:
75 Parallel(p1 10 soft)
76 not used hint:
77 duplication hint:
78 error hint:
79
80                 QUERY PLAN                 
81 -------------------------------------------
82  Gather
83    Workers Planned: 1
84    ->  Append
85          ->  Parallel Seq Scan on p1
86          ->  Parallel Seq Scan on p1_c1
87          ->  Parallel Seq Scan on p1_c2
88          ->  Parallel Seq Scan on p1_c3
89          ->  Parallel Seq Scan on p1_c4
90          ->  Parallel Seq Scan on p1_c1_c1
91          ->  Parallel Seq Scan on p1_c1_c2
92          ->  Parallel Seq Scan on p1_c3_c1
93          ->  Parallel Seq Scan on p1_c3_c2
94 (12 rows)
95
96 /*+Parallel(p1 10 hard)*/
97 EXPLAIN (COSTS false) SELECT * FROM p1;
98 LOG:  pg_hint_plan:
99 used hint:
100 Parallel(p1 10 hard)
101 not used hint:
102 duplication hint:
103 error hint:
104
105                 QUERY PLAN                 
106 -------------------------------------------
107  Gather
108    Workers Planned: 10
109    ->  Append
110          ->  Parallel Seq Scan on p1
111          ->  Parallel Seq Scan on p1_c1
112          ->  Parallel Seq Scan on p1_c2
113          ->  Parallel Seq Scan on p1_c3
114          ->  Parallel Seq Scan on p1_c4
115          ->  Parallel Seq Scan on p1_c1_c1
116          ->  Parallel Seq Scan on p1_c1_c2
117          ->  Parallel Seq Scan on p1_c3_c1
118          ->  Parallel Seq Scan on p1_c3_c2
119 (12 rows)
120
121 -- Joins
122 EXPLAIN (COSTS false) SELECT * FROM p1_c1 join p2_c1 on p1_c1.id = p2_c1.id;
123                QUERY PLAN               
124 ----------------------------------------
125  Hash Join
126    Hash Cond: (p1_c1.id = p2_c1.id)
127    ->  Append
128          ->  Seq Scan on p1_c1
129          ->  Seq Scan on p1_c1_c1
130          ->  Seq Scan on p1_c1_c2
131    ->  Hash
132          ->  Append
133                ->  Seq Scan on p2_c1
134                ->  Seq Scan on p2_c1_c1
135                ->  Seq Scan on p2_c1_c2
136 (11 rows)
137
138 /*+Parallel(p1_c1 10 hard)*/
139 EXPLAIN (COSTS false) SELECT * FROM p1_c1 join p2_c1 on p1_c1.id = p2_c1.id;
140 LOG:  pg_hint_plan:
141 used hint:
142 Parallel(p1_c1 10 hard)
143 not used hint:
144 duplication hint:
145 error hint:
146
147                    QUERY PLAN                    
148 -------------------------------------------------
149  Gather
150    Workers Planned: 10
151    ->  Hash Join
152          Hash Cond: (p1_c1.id = p2_c1.id)
153          ->  Append
154                ->  Parallel Seq Scan on p1_c1
155                ->  Parallel Seq Scan on p1_c1_c1
156                ->  Parallel Seq Scan on p1_c1_c2
157          ->  Hash
158                ->  Append
159                      ->  Seq Scan on p2_c1
160                      ->  Seq Scan on p2_c1_c1
161                      ->  Seq Scan on p2_c1_c2
162 (13 rows)
163
164 /*+Parallel(p2_c1 10 hard)*/
165 EXPLAIN (COSTS false) SELECT * FROM p1_c1 join p2_c1 on p1_c1.id = p2_c1.id;
166 LOG:  pg_hint_plan:
167 used hint:
168 Parallel(p2_c1 10 hard)
169 not used hint:
170 duplication hint:
171 error hint:
172
173                    QUERY PLAN                    
174 -------------------------------------------------
175  Gather
176    Workers Planned: 10
177    ->  Hash Join
178          Hash Cond: (p2_c1.id = p1_c1.id)
179          ->  Append
180                ->  Parallel Seq Scan on p2_c1
181                ->  Parallel Seq Scan on p2_c1_c1
182                ->  Parallel Seq Scan on p2_c1_c2
183          ->  Hash
184                ->  Append
185                      ->  Seq Scan on p1_c1
186                      ->  Seq Scan on p1_c1_c1
187                      ->  Seq Scan on p1_c1_c2
188 (13 rows)
189
190 /*+Parallel(p1_c1 10 hard) Parallel(p2_c1 10 hard)*/
191 EXPLAIN (COSTS false) SELECT * FROM p1_c1 join p2_c1 on p1_c1.id = p2_c1.id;
192 LOG:  pg_hint_plan:
193 used hint:
194 Parallel(p1_c1 10 hard)
195 Parallel(p2_c1 10 hard)
196 not used hint:
197 duplication hint:
198 error hint:
199
200                       QUERY PLAN                       
201 -------------------------------------------------------
202  Hash Join
203    Hash Cond: (p1_c1.id = p2_c1.id)
204    ->  Gather
205          Workers Planned: 10
206          ->  Append
207                ->  Parallel Seq Scan on p1_c1
208                ->  Parallel Seq Scan on p1_c1_c1
209                ->  Parallel Seq Scan on p1_c1_c2
210    ->  Hash
211          ->  Gather
212                Workers Planned: 10
213                ->  Append
214                      ->  Parallel Seq Scan on p2_c1
215                      ->  Parallel Seq Scan on p2_c1_c1
216                      ->  Parallel Seq Scan on p2_c1_c2
217 (15 rows)
218
219 -- Joins on inheritance tables
220 /*+Parallel(p1 10)*/
221 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
222 LOG:  pg_hint_plan:
223 used hint:
224 Parallel(p1 10 soft)
225 not used hint:
226 duplication hint:
227 error hint:
228
229                    QUERY PLAN                    
230 -------------------------------------------------
231  Gather
232    Workers Planned: 1
233    ->  Hash Join
234          Hash Cond: (p1.id = p2.id)
235          ->  Append
236                ->  Parallel Seq Scan on p1
237                ->  Parallel Seq Scan on p1_c1
238                ->  Parallel Seq Scan on p1_c2
239                ->  Parallel Seq Scan on p1_c3
240                ->  Parallel Seq Scan on p1_c4
241                ->  Parallel Seq Scan on p1_c1_c1
242                ->  Parallel Seq Scan on p1_c1_c2
243                ->  Parallel Seq Scan on p1_c3_c1
244                ->  Parallel Seq Scan on p1_c3_c2
245          ->  Hash
246                ->  Append
247                      ->  Seq Scan on p2
248                      ->  Seq Scan on p2_c1
249                      ->  Seq Scan on p2_c2
250                      ->  Seq Scan on p2_c3
251                      ->  Seq Scan on p2_c4
252                      ->  Seq Scan on p2_c1_c1
253                      ->  Seq Scan on p2_c1_c2
254                      ->  Seq Scan on p2_c3_c1
255                      ->  Seq Scan on p2_c3_c2
256 (25 rows)
257
258 /*+Parallel(p2 10 hard)*/
259 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
260 LOG:  pg_hint_plan:
261 used hint:
262 Parallel(p2 10 hard)
263 not used hint:
264 duplication hint:
265 error hint:
266
267                    QUERY PLAN                    
268 -------------------------------------------------
269  Gather
270    Workers Planned: 10
271    ->  Hash Join
272          Hash Cond: (p2.id = p1.id)
273          ->  Append
274                ->  Parallel Seq Scan on p2
275                ->  Parallel Seq Scan on p2_c1
276                ->  Parallel Seq Scan on p2_c2
277                ->  Parallel Seq Scan on p2_c3
278                ->  Parallel Seq Scan on p2_c4
279                ->  Parallel Seq Scan on p2_c1_c1
280                ->  Parallel Seq Scan on p2_c1_c2
281                ->  Parallel Seq Scan on p2_c3_c1
282                ->  Parallel Seq Scan on p2_c3_c2
283          ->  Hash
284                ->  Append
285                      ->  Seq Scan on p1
286                      ->  Seq Scan on p1_c1
287                      ->  Seq Scan on p1_c2
288                      ->  Seq Scan on p1_c3
289                      ->  Seq Scan on p1_c4
290                      ->  Seq Scan on p1_c1_c1
291                      ->  Seq Scan on p1_c1_c2
292                      ->  Seq Scan on p1_c3_c1
293                      ->  Seq Scan on p1_c3_c2
294 (25 rows)
295
296 /*+Parallel(p2 10 hard) Parallel(p1 5 hard) */
297 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
298 LOG:  pg_hint_plan:
299 used hint:
300 Parallel(p1 5 hard)
301 Parallel(p2 10 hard)
302 not used hint:
303 duplication hint:
304 error hint:
305
306                       QUERY PLAN                       
307 -------------------------------------------------------
308  Hash Join
309    Hash Cond: (p1.id = p2.id)
310    ->  Gather
311          Workers Planned: 5
312          ->  Append
313                ->  Parallel Seq Scan on p1
314                ->  Parallel Seq Scan on p1_c1
315                ->  Parallel Seq Scan on p1_c2
316                ->  Parallel Seq Scan on p1_c3
317                ->  Parallel Seq Scan on p1_c4
318                ->  Parallel Seq Scan on p1_c1_c1
319                ->  Parallel Seq Scan on p1_c1_c2
320                ->  Parallel Seq Scan on p1_c3_c1
321                ->  Parallel Seq Scan on p1_c3_c2
322    ->  Hash
323          ->  Gather
324                Workers Planned: 10
325                ->  Append
326                      ->  Parallel Seq Scan on p2
327                      ->  Parallel Seq Scan on p2_c1
328                      ->  Parallel Seq Scan on p2_c2
329                      ->  Parallel Seq Scan on p2_c3
330                      ->  Parallel Seq Scan on p2_c4
331                      ->  Parallel Seq Scan on p2_c1_c1
332                      ->  Parallel Seq Scan on p2_c1_c2
333                      ->  Parallel Seq Scan on p2_c3_c1
334                      ->  Parallel Seq Scan on p2_c3_c2
335 (27 rows)
336
337 -- Negative hint
338 SET max_parallel_workers_per_gather to 5;
339 EXPLAIN (COSTS false) SELECT * FROM p1;
340                 QUERY PLAN                 
341 -------------------------------------------
342  Gather
343    Workers Planned: 1
344    ->  Append
345          ->  Parallel Seq Scan on p1
346          ->  Parallel Seq Scan on p1_c1
347          ->  Parallel Seq Scan on p1_c2
348          ->  Parallel Seq Scan on p1_c3
349          ->  Parallel Seq Scan on p1_c4
350          ->  Parallel Seq Scan on p1_c1_c1
351          ->  Parallel Seq Scan on p1_c1_c2
352          ->  Parallel Seq Scan on p1_c3_c1
353          ->  Parallel Seq Scan on p1_c3_c2
354 (12 rows)
355
356 /*+Parallel(p1 0 hard)*/
357 EXPLAIN (COSTS false) SELECT * FROM p1;
358 LOG:  pg_hint_plan:
359 used hint:
360 Parallel(p1 0 hard)
361 not used hint:
362 duplication hint:
363 error hint:
364
365          QUERY PLAN         
366 ----------------------------
367  Append
368    ->  Seq Scan on p1
369    ->  Seq Scan on p1_c1
370    ->  Seq Scan on p1_c2
371    ->  Seq Scan on p1_c3
372    ->  Seq Scan on p1_c4
373    ->  Seq Scan on p1_c1_c1
374    ->  Seq Scan on p1_c1_c2
375    ->  Seq Scan on p1_c3_c1
376    ->  Seq Scan on p1_c3_c2
377 (10 rows)
378
379 ALTER SYSTEM SET session_preload_libraries TO DEFAULT;
380 SELECT pg_reload_conf();
381  pg_reload_conf 
382 ----------------
383  t
384 (1 row)
385