OSDN Git Service

Fixed regression tests to avoid test failure for 9.1.
[pgdbmsstats/pg_dbms_stats.git] / sql / ut-9.2.sql
1 \pset null '(null)'
2 /*
3  * No.2-1 table definitions.
4  */
5 -- No.2-1-1
6 \d dbms_stats.backup_history
7 -- No.2-1-2
8 \d dbms_stats.column_stats_backup
9 -- No.2-1-3
10 \d dbms_stats.column_stats_locked
11 -- No.2-1-4
12 \d dbms_stats.relation_stats_backup
13 -- No.2-1-5
14 \d dbms_stats.relation_stats_locked
15
16 /*
17  * No.2-2 view definitions.
18  */
19 -- No.2-2-1
20 \dS+ dbms_stats.column_stats_effective
21 -- No.2-2-2
22 \dS+ dbms_stats.relation_stats_effective
23 -- No.2-2-3
24 \dS+ dbms_stats.stats
25 -- No.2-2-4
26 \dS+ dbms_stats.column_stats_locked
27 -- No.2-2-5
28 \dS+ dbms_stats.relation_stats_locked
29
30 /*
31  * No.2-4 dbms_stats.anyarray
32  */
33 -- No.2-4-1
34 SELECT n.nspname, t.typname, t.typlen, t.typbyval, t.typtype,
35        t.typcategory, t.typispreferred, t.typisdefined, t.typdelim,
36        t.typrelid, t.typelem, t.typinput, t.typoutput, t.typreceive,
37        t.typsend, t.typmodin, t.typmodout, t.typanalyze, t.typalign,
38        t.typstorage, t.typnotnull, t.typbasetype, t.typtypmod, t.typndims,
39        t.typcollation, t.typdefaultbin, t.typdefault, t.typacl
40   FROM pg_type t, pg_namespace n
41  WHERE t.typnamespace = n.oid
42    AND n.nspname = 'dbms_stats'
43    AND t.typname = 'anyarray';
44
45 /*
46  * No.5-1 dbms_stats.merge
47  */
48 UPDATE pg_statistic SET
49     stanullfrac = staattnum,
50     stawidth = staattnum,
51     stadistinct = staattnum,
52     stakind1 = 4,
53     stakind2 = 1,
54     stakind3 = 2,
55     stakind4 = 3,
56     stakind5 = 5,
57     staop1 = 14,
58     staop2 = 11,
59     staop3 = 12,
60     staop4 = 13,
61     staop5 = 15,
62     stanumbers1 = ARRAY[staattnum,4],
63     stanumbers2 = ARRAY[staattnum,1],
64     stanumbers3 = ARRAY[staattnum,2],
65     stanumbers4 = ARRAY[staattnum,3],
66     stanumbers5 = ARRAY[staattnum,5],
67     stavalues2 = array_cat(stavalues1,stavalues1),
68     stavalues3 = array_cat(array_cat(stavalues1,stavalues1),stavalues1),
69     stavalues4 = array_cat(array_cat(array_cat(stavalues1,stavalues1),stavalues1),stavalues1)
70    ,stavalues5 = array_cat(array_cat(array_cat(array_cat(stavalues1,stavalues1),stavalues1),stavalues1),stavalues1)
71  WHERE starelid = 'st0'::regclass;
72 SELECT dbms_stats.lock_table_stats('st0');
73 UPDATE dbms_stats.column_stats_locked SET
74     stainherit = 't',
75     stanullfrac = -staattnum,
76     stawidth = -staattnum,
77     stadistinct = -staattnum,
78     stakind1 = 2,
79     stakind2 = 3,
80     stakind3 = 4,
81     stakind4 = 1,
82     stakind5 = 5,
83     staop1 = 22,
84     staop2 = 23,
85     staop3 = 24,
86     staop4 = 21,
87     staop5 = 25,
88     stanumbers1 = ARRAY[-staattnum,22],
89     stanumbers2 = ARRAY[-staattnum,23],
90     stanumbers3 = ARRAY[-staattnum,24],
91     stanumbers4 = ARRAY[-staattnum,21],
92     stanumbers5 = ARRAY[-staattnum,25],
93     stavalues1 = stavalues3,
94     stavalues2 = stavalues2,
95     stavalues3 = stavalues1,
96     stavalues4 = stavalues4
97    ,stavalues5 = stavalues5
98 ;
99
100 /*
101  * Driver function dbms_stats.merge1
102  */
103 CREATE FUNCTION dbms_stats.merge1(
104     lhs dbms_stats.column_stats_locked,
105     rhs pg_catalog.pg_statistic
106 ) RETURNS integer AS
107 '$libdir/pg_dbms_stats', 'dbms_stats_merge'
108 LANGUAGE C STABLE;
109
110 SELECT * FROM columns_locked_v
111  WHERE starelid = 'st0'::regclass;
112 SELECT * FROM plain_columns_statistic_v
113  WHERE starelid = 'st0'::regclass;
114
115 SET client_min_messages TO LOG;
116
117 -- No.5-1-1
118 SELECT (m.merge).starelid::regclass,
119        (m.merge).staattnum,
120        (m.merge).stainherit,
121        (m.merge).stanullfrac,
122        (m.merge).stawidth,
123        (m.merge).stadistinct,
124        (m.merge).stakind1,
125        (m.merge).stakind2,
126        (m.merge).stakind3,
127        (m.merge).stakind4,
128        (m.merge).stakind5,
129        (m.merge).staop1,
130        (m.merge).staop2,
131        (m.merge).staop3,
132        (m.merge).staop4,
133        (m.merge).staop5,
134        (m.merge).stanumbers1,
135        (m.merge).stanumbers2,
136        (m.merge).stanumbers3,
137        (m.merge).stanumbers4,
138        (m.merge).stanumbers5,
139        (m.merge).stavalues1,
140        (m.merge).stavalues2,
141        (m.merge).stavalues3,
142        (m.merge).stavalues4
143       ,(m.merge).stavalues5
144  FROM (SELECT dbms_stats.merge(NULL, s)
145          FROM pg_statistic s
146         WHERE starelid = 'st0'::regclass
147           AND staattnum = '1'::int2) m;
148
149 -- No.5-1-2
150 SELECT (m.merge).starelid::regclass,
151        (m.merge).staattnum,
152        (m.merge).stainherit,
153        (m.merge).stanullfrac,
154        (m.merge).stawidth,
155        (m.merge).stadistinct,
156        (m.merge).stakind1,
157        (m.merge).stakind2,
158        (m.merge).stakind3,
159        (m.merge).stakind4,
160        (m.merge).stakind5,
161        (m.merge).staop1,
162        (m.merge).staop2,
163        (m.merge).staop3,
164        (m.merge).staop4,
165        (m.merge).staop5,
166        (m.merge).stanumbers1,
167        (m.merge).stanumbers2,
168        (m.merge).stanumbers3,
169        (m.merge).stanumbers4,
170        (m.merge).stanumbers5,
171        (m.merge).stavalues1,
172        (m.merge).stavalues2,
173        (m.merge).stavalues3,
174        (m.merge).stavalues4
175       ,(m.merge).stavalues5
176  FROM (SELECT dbms_stats.merge(v, NULL)
177          FROM dbms_stats.column_stats_locked v
178         WHERE starelid = 'st0'::regclass
179           AND staattnum = '2'::int2) m;
180
181 -- No.5-1-3
182 SELECT dbms_stats.merge(NULL, NULL);
183
184 -- No.5-1-4
185 SELECT (m.merge).starelid::regclass,
186        (m.merge).staattnum,
187        (m.merge).stainherit,
188        (m.merge).stanullfrac,
189        (m.merge).stawidth,
190        (m.merge).stadistinct,
191        (m.merge).stakind1,
192        (m.merge).stakind2,
193        (m.merge).stakind3,
194        (m.merge).stakind4,
195        (m.merge).stakind5,
196        (m.merge).staop1,
197        (m.merge).staop2,
198        (m.merge).staop3,
199        (m.merge).staop4,
200        (m.merge).staop5,
201        (m.merge).stanumbers1,
202        (m.merge).stanumbers2,
203        (m.merge).stanumbers3,
204        (m.merge).stanumbers4,
205        (m.merge).stanumbers5,
206        (m.merge).stavalues1,
207        (m.merge).stavalues2,
208        (m.merge).stavalues3,
209        (m.merge).stavalues4
210       ,(m.merge).stavalues5
211  FROM (SELECT dbms_stats.merge(v, s)
212          FROM dbms_stats.column_stats_locked v,
213               pg_statistic s
214         WHERE v.starelid = 'st0'::regclass
215           AND v.staattnum = '2'::int2
216           AND s.starelid = 'st0'::regclass
217           AND s.staattnum = '1'::int2) m;
218
219 -- No.5-1-5
220 SELECT (m.merge).starelid::regclass,
221        (m.merge).staattnum,
222        (m.merge).stainherit,
223        (m.merge).stanullfrac,
224        (m.merge).stawidth,
225        (m.merge).stadistinct,
226        (m.merge).stakind1,
227        (m.merge).stakind2,
228        (m.merge).stakind3,
229        (m.merge).stakind4,
230        (m.merge).stakind5,
231        (m.merge).staop1,
232        (m.merge).staop2,
233        (m.merge).staop3,
234        (m.merge).staop4,
235        (m.merge).staop5,
236        (m.merge).stanumbers1,
237        (m.merge).stanumbers2,
238        (m.merge).stanumbers3,
239        (m.merge).stanumbers4,
240        (m.merge).stanumbers5,
241        (m.merge).stavalues1,
242        (m.merge).stavalues2,
243        (m.merge).stavalues3,
244        (m.merge).stavalues4
245       ,(m.merge).stavalues5
246  FROM (SELECT dbms_stats.merge(v, s)
247          FROM dbms_stats.column_stats_locked v,
248               pg_statistic s
249         WHERE v.starelid = 'st0'::regclass
250           AND v.staattnum = '2'::int2
251           AND s.starelid = 'st0'::regclass
252           AND s.staattnum = '1'::int2) m;
253
254 -- No.5-1-6
255 SELECT dbms_stats.merge1(v, s)
256   FROM dbms_stats.column_stats_locked v,
257        pg_statistic s
258  WHERE v.starelid = 'st0'::regclass
259    AND v.staattnum = '2'::int2
260    AND s.starelid = 'st0'::regclass
261    AND s.staattnum = '1'::int2;
262
263 -- No.5-1-7
264 SELECT dbms_stats.merge(NULL, (
265        s.starelid::regclass, s.staattnum, s.stainherit,
266        s.stanullfrac, s.stawidth, s.stadistinct,
267        s.stakind1, s.stakind2, s.stakind3, s.stakind4,
268        s.stakind5,
269        s.staop1, s.staop2, s.staop3,
270        s.staop4,
271        NULL, s.stanumbers1, s.stanumbers2, s.stanumbers3, s.stanumbers4,
272        s.stanumbers5,
273        s.stavalues1, s.stavalues2, s.stavalues3, s.stavalues4
274       ,s.stavalues5
275        ))
276   FROM pg_statistic s
277  WHERE s.starelid = 'st0'::regclass
278    AND s.staattnum = '1'::int2;
279
280 -- No.5-1-8
281 SELECT (m.merge).starelid::regclass,
282        (m.merge).staattnum,
283        (m.merge).stainherit,
284        (m.merge).stanullfrac,
285        (m.merge).stawidth,
286        (m.merge).stadistinct,
287        (m.merge).stakind1,
288        (m.merge).stakind2,
289        (m.merge).stakind3,
290        (m.merge).stakind4,
291        (m.merge).stakind5,
292        (m.merge).staop1,
293        (m.merge).staop2,
294        (m.merge).staop3,
295        (m.merge).staop4,
296        (m.merge).staop5,
297        (m.merge).stanumbers1,
298        (m.merge).stanumbers2,
299        (m.merge).stanumbers3,
300        (m.merge).stanumbers4,
301        (m.merge).stanumbers5,
302        (m.merge).stavalues1,
303        (m.merge).stavalues2,
304        (m.merge).stavalues3,
305        (m.merge).stavalues4
306       ,(m.merge).stavalues5
307  FROM (SELECT dbms_stats.merge(NULL, (
308               s.starelid::regclass, s.staattnum, s.stainherit,
309               s.stanullfrac, s.stawidth, s.stadistinct,
310               s.stakind1, s.stakind2, s.stakind3, s.stakind4,
311               s.stakind5,
312               s.staop1, s.staop2, s.staop3, s.staop4,
313               s.staop5,
314               NULL, s.stanumbers2, s.stanumbers3, s.stanumbers4,
315               s.stanumbers5,
316               s.stavalues1, s.stavalues2, s.stavalues3, s.stavalues4
317              ,s.stavalues5
318               ))
319          FROM pg_statistic s
320         WHERE s.starelid = 'st0'::regclass
321           AND s.staattnum = '1'::int2) m;
322
323 -- No.5-1-9
324 SELECT dbms_stats.merge((
325        v.starelid::regclass, v.staattnum, v.stainherit,
326        v.stanullfrac, v.stawidth, v.stadistinct,
327        v.stakind1, v.stakind2, v.stakind3, v.stakind4,
328        v.stakind5,
329        v.staop1, v.staop2, v.staop3,
330        v.staop4,
331        NULL, v.stanumbers1, v.stanumbers2, v.stanumbers3, v.stanumbers4,
332        v.stanumbers5,
333        v.stavalues1, v.stavalues2, v.stavalues3, v.stavalues4
334       ,v.stavalues5
335        ), NULL)
336   FROM dbms_stats.column_stats_locked v
337  WHERE v.starelid = 'st0'::regclass
338    AND v.staattnum = '2'::int2;
339
340 -- No.5-1-10
341 SELECT (m.merge).starelid::regclass,
342        (m.merge).staattnum,
343        (m.merge).stainherit,
344        (m.merge).stanullfrac,
345        (m.merge).stawidth,
346        (m.merge).stadistinct,
347        (m.merge).stakind1,
348        (m.merge).stakind2,
349        (m.merge).stakind3,
350        (m.merge).stakind4,
351        (m.merge).stakind5,
352        (m.merge).staop1,
353        (m.merge).staop2,
354        (m.merge).staop3,
355        (m.merge).staop4,
356        (m.merge).staop5,
357        (m.merge).stanumbers1,
358        (m.merge).stanumbers2,
359        (m.merge).stanumbers3,
360        (m.merge).stanumbers4,
361        (m.merge).stanumbers5,
362        (m.merge).stavalues1,
363        (m.merge).stavalues2,
364        (m.merge).stavalues3,
365        (m.merge).stavalues4
366       ,(m.merge).stavalues5
367  FROM (SELECT dbms_stats.merge((
368               v.starelid::regclass, v.staattnum, v.stainherit,
369               v.stanullfrac, v.stawidth, v.stadistinct,
370               v.stakind1, v.stakind2, v.stakind3, v.stakind4,
371               v.stakind5,
372               v.staop1, v.staop2, v.staop3, v.staop4,
373               v.staop5,
374               NULL, v.stanumbers2, v.stanumbers3, v.stanumbers4,
375               v.stanumbers5,
376               v.stavalues1, v.stavalues2, v.stavalues3, v.stavalues4
377              ,v.stavalues5
378               ), NULL)
379          FROM dbms_stats.column_stats_locked v
380         WHERE v.starelid = 'st0'::regclass
381           AND v.staattnum = '2'::int2) m;
382
383 -- No.5-1-11
384 SELECT dbms_stats.merge((
385        v.starelid::regclass, v.staattnum, v.stainherit,
386        v.stanullfrac, v.stawidth, v.stadistinct,
387        v.stakind1, v.stakind2, v.stakind3, v.stakind4,
388        v.stakind5,
389        v.staop1, v.staop2, v.staop3,
390        v.staop4,
391        NULL, v.stanumbers1, v.stanumbers2, v.stanumbers3, v.stanumbers4,
392        v.stanumbers5,
393        v.stavalues1, v.stavalues2, v.stavalues3, v.stavalues4
394       ,v.stavalues5
395        ), (
396        s.starelid::regclass, s.staattnum, s.stainherit,
397        s.stanullfrac, s.stawidth, s.stadistinct,
398        s.stakind1, s.stakind2, s.stakind3, s.stakind4,
399        s.stakind5,
400        s.staop1, s.staop2, s.staop3,
401        s.staop4,
402        NULL, s.stanumbers1, s.stanumbers2, s.stanumbers3, s.stanumbers4,
403        s.stanumbers5,
404        s.stavalues1, s.stavalues2, s.stavalues3, s.stavalues4
405       ,s.stavalues5
406        ))
407   FROM dbms_stats.column_stats_locked v,
408        pg_statistic s
409  WHERE v.starelid = 'st0'::regclass
410    AND v.staattnum = '2'::int2
411    AND s.starelid = 'st0'::regclass
412    AND s.staattnum = '1'::int2;
413
414 -- No.5-1-12
415 SELECT (m.merge).starelid::regclass,
416        (m.merge).staattnum,
417        (m.merge).stainherit,
418        (m.merge).stanullfrac,
419        (m.merge).stawidth,
420        (m.merge).stadistinct,
421        (m.merge).stakind1,
422        (m.merge).stakind2,
423        (m.merge).stakind3,
424        (m.merge).stakind4,
425        (m.merge).stakind5,
426        (m.merge).staop1,
427        (m.merge).staop2,
428        (m.merge).staop3,
429        (m.merge).staop4,
430        (m.merge).staop5,
431        (m.merge).stanumbers1,
432        (m.merge).stanumbers2,
433        (m.merge).stanumbers3,
434        (m.merge).stanumbers4,
435        (m.merge).stanumbers5,
436        (m.merge).stavalues1,
437        (m.merge).stavalues2,
438        (m.merge).stavalues3,
439        (m.merge).stavalues4
440       ,(m.merge).stavalues5
441  FROM (SELECT dbms_stats.merge((
442               v.starelid::regclass, v.staattnum, v.stainherit,
443               v.stanullfrac, v.stawidth, v.stadistinct,
444               v.stakind1, v.stakind2, v.stakind3, v.stakind4,
445               v.stakind5,
446               v.staop1, v.staop2, v.staop3, v.staop4,
447               v.staop5,
448               NULL, v.stanumbers2, v.stanumbers3, v.stanumbers4,
449               v.stanumbers5,
450               v.stavalues1, v.stavalues2, v.stavalues3, v.stavalues4
451              ,v.stavalues5
452               ), (
453               s.starelid::regclass, s.staattnum, s.stainherit,
454               s.stanullfrac, s.stawidth, s.stadistinct,
455               s.stakind1, s.stakind2, s.stakind3, s.stakind4,
456               s.stakind5,
457               s.staop1, s.staop2, s.staop3, s.staop4,
458               s.staop5,
459               NULL, s.stanumbers2, s.stanumbers3, s.stanumbers4,
460               s.stanumbers5,
461               s.stavalues1, s.stavalues2, s.stavalues3, s.stavalues4
462              ,s.stavalues5
463               ))
464          FROM dbms_stats.column_stats_locked v,
465               pg_statistic s
466         WHERE v.starelid = 'st0'::regclass
467           AND v.staattnum = '2'::int2
468           AND s.starelid = 'st0'::regclass
469           AND s.staattnum = '1'::int2) m;
470
471 -- No.5-1-13
472 SELECT (m.merge).starelid::regclass,
473        (m.merge).staattnum,
474        (m.merge).stainherit,
475        (m.merge).stanullfrac,
476        (m.merge).stawidth,
477        (m.merge).stadistinct,
478        (m.merge).stakind1,
479        (m.merge).stakind2,
480        (m.merge).stakind3,
481        (m.merge).stakind4,
482        (m.merge).stakind5,
483        (m.merge).staop1,
484        (m.merge).staop2,
485        (m.merge).staop3,
486        (m.merge).staop4,
487        (m.merge).staop5,
488        (m.merge).stanumbers1,
489        (m.merge).stanumbers2,
490        (m.merge).stanumbers3,
491        (m.merge).stanumbers4,
492        (m.merge).stanumbers5,
493        (m.merge).stavalues1,
494        (m.merge).stavalues2,
495        (m.merge).stavalues3,
496        (m.merge).stavalues4
497       ,(m.merge).stavalues5
498  FROM (SELECT dbms_stats.merge((
499              NULL, NULL, NULL,
500              NULL, NULL, NULL,
501              NULL, NULL, NULL, NULL,
502              NULL, NULL, NULL, NULL,
503              NULL, NULL, NULL, NULL,
504              NULL, NULL, NULL, NULL
505             ,NULL, NULL, NULL, NULL
506              ), s)
507          FROM pg_statistic s
508         WHERE s.starelid = 'st0'::regclass
509           AND s.staattnum = '1'::int2) m;
510
511 -- No.5-1-14
512 SELECT (m.merge).starelid::regclass,
513        (m.merge).staattnum,
514        (m.merge).stainherit,
515        (m.merge).stanullfrac,
516        (m.merge).stawidth,
517        (m.merge).stadistinct,
518        (m.merge).stakind1,
519        (m.merge).stakind2,
520        (m.merge).stakind3,
521        (m.merge).stakind4,
522        (m.merge).stakind5,
523        (m.merge).staop1,
524        (m.merge).staop2,
525        (m.merge).staop3,
526        (m.merge).staop4,
527        (m.merge).staop5,
528        (m.merge).stanumbers1,
529        (m.merge).stanumbers2,
530        (m.merge).stanumbers3,
531        (m.merge).stanumbers4,
532        (m.merge).stanumbers5,
533        (m.merge).stavalues1,
534        (m.merge).stavalues2,
535        (m.merge).stavalues3,
536        (m.merge).stavalues4
537       ,(m.merge).stavalues5
538  FROM (SELECT dbms_stats.merge(v, (
539              NULL, NULL, NULL,
540              NULL, NULL, NULL,
541              NULL, NULL, NULL, NULL,
542              NULL, NULL, NULL, NULL,
543              NULL, NULL, NULL, NULL,
544              NULL, NULL, NULL, NULL,
545              NULL, NULL, NULL, NULL))
546          FROM dbms_stats.column_stats_locked v
547         WHERE v.starelid = 'st0'::regclass
548           AND v.staattnum = '2'::int2) m;
549
550 -- No.5-1-15
551 SELECT (m.merge).starelid::regclass,
552        (m.merge).staattnum,
553        (m.merge).stainherit,
554        (m.merge).stanullfrac,
555        (m.merge).stawidth,
556        (m.merge).stadistinct,
557        (m.merge).stakind1,
558        (m.merge).stakind2,
559        (m.merge).stakind3,
560        (m.merge).stakind4,
561        (m.merge).stakind5,
562        (m.merge).staop1,
563        (m.merge).staop2,
564        (m.merge).staop3,
565        (m.merge).staop4,
566        (m.merge).staop5,
567        (m.merge).stanumbers1,
568        (m.merge).stanumbers2,
569        (m.merge).stanumbers3,
570        (m.merge).stanumbers4,
571        (m.merge).stanumbers5,
572        (m.merge).stavalues1,
573        (m.merge).stavalues2,
574        (m.merge).stavalues3,
575        (m.merge).stavalues4
576       ,(m.merge).stavalues5
577  FROM (SELECT dbms_stats.merge(v, s)
578          FROM dbms_stats.column_stats_locked v,
579               pg_statistic s
580         WHERE v.starelid = 'st0'::regclass
581           AND v.staattnum = '2'::int2
582           AND s.starelid = 'st0'::regclass
583           AND s.staattnum = '1'::int2) m;
584
585 -- No.5-1-16
586 SELECT dbms_stats.merge((
587        v.starelid::regclass, v.staattnum, v.stainherit,
588        v.stanullfrac, v.stawidth, v.stadistinct,
589        NULL, NULL, NULL, NULL,
590        NULL, NULL, NULL, NULL,
591        NULL, NULL, NULL, NULL,
592        NULL, NULL, NULL, NULL
593       ,NULL, NULL, NULL, NULL
594        ), (
595        s.starelid::regclass, s.staattnum, s.stainherit,
596        s.stanullfrac, s.stawidth, s.stadistinct,
597        NULL, NULL, NULL, NULL,
598        NULL, NULL, NULL, NULL,
599        NULL, NULL, NULL, NULL,
600        NULL, NULL, NULL, NULL,
601        NULL, NULL, NULL, NULL))
602   FROM dbms_stats.column_stats_locked v,
603        pg_statistic s
604  WHERE v.starelid = 'st0'::regclass
605    AND v.staattnum = '2'::int2
606    AND s.starelid = 'st0'::regclass
607    AND s.staattnum = '1'::int2;
608
609 -- No.5-1-17
610 SELECT (m.merge).starelid::regclass,
611        (m.merge).staattnum,
612        (m.merge).stainherit,
613        (m.merge).stanullfrac,
614        (m.merge).stawidth,
615        (m.merge).stadistinct,
616        (m.merge).stakind1,
617        (m.merge).stakind2,
618        (m.merge).stakind3,
619        (m.merge).stakind4,
620        (m.merge).stakind5,
621        (m.merge).staop1,
622        (m.merge).staop2,
623        (m.merge).staop3,
624        (m.merge).staop4,
625        (m.merge).staop5,
626        (m.merge).stanumbers1,
627        (m.merge).stanumbers2,
628        (m.merge).stanumbers3,
629        (m.merge).stanumbers4,
630        (m.merge).stanumbers5,
631        (m.merge).stavalues1,
632        (m.merge).stavalues2,
633        (m.merge).stavalues3,
634        (m.merge).stavalues4
635       ,(m.merge).stavalues5
636  FROM (SELECT dbms_stats.merge((
637               v.starelid::regclass, v.staattnum, v.stainherit,
638               v.stanullfrac, v.stawidth, v.stadistinct,
639               v.stakind1, v.stakind2, v.stakind3, v.stakind4,
640               v.stakind5,
641               v.staop1, v.staop2, v.staop3,
642               v.staop4,
643               NULL, v.stanumbers1, v.stanumbers2, v.stanumbers3, v.stanumbers4,
644               v.stanumbers5,
645               v.stavalues1, v.stavalues2, v.stavalues3, v.stavalues4
646              ,v.stavalues5
647               ), (
648               s.starelid::regclass, s.staattnum, s.stainherit,
649               s.stanullfrac, s.stawidth, s.stadistinct,
650               s.stakind1, s.stakind2, s.stakind3, s.stakind4,
651               s.stakind5,
652               s.staop1, s.staop2, s.staop3, s.staop4,
653               s.staop5,
654               s.stanumbers1, s.stanumbers2, s.stanumbers3, s.stanumbers4,
655               s.stanumbers5,
656               s.stavalues1, s.stavalues2, s.stavalues3, s.stavalues4
657              ,s.stavalues5
658               ))
659          FROM dbms_stats.column_stats_locked v,
660               pg_statistic s
661         WHERE v.starelid = 'st0'::regclass
662           AND v.staattnum = '1'::int2
663           AND s.starelid = 'st0'::regclass
664           AND s.staattnum = '1'::int2) m;
665
666 -- No.5-1-18
667 SELECT dbms_stats.merge((
668        v.starelid::regclass, v.staattnum, v.stainherit,
669        v.stanullfrac, v.stawidth, v.stadistinct,
670        v.stakind1, v.stakind2, v.stakind3, v.stakind4,
671        v.stakind5,
672        v.staop1, v.staop2, v.staop3,
673        v.staop4,
674        NULL, v.stanumbers1, v.stanumbers2, v.stanumbers3, v.stanumbers4,
675        v.stanumbers5,
676        v.stavalues1, v.stavalues2, v.stavalues3, v.stavalues4
677       ,v.stavalues5
678        ), (
679        s.starelid::regclass, s.staattnum, s.stainherit,
680        s.stanullfrac, s.stawidth, s.stadistinct,
681        s.stakind1, s.stakind2, s.stakind3, s.stakind4,
682        s.stakind5,
683        s.staop1, s.staop2, s.staop3,
684        s.staop4,
685        NULL, s.stanumbers1, s.stanumbers2, s.stanumbers3, s.stanumbers4,
686        s.stanumbers5,
687        s.stavalues1, s.stavalues2, s.stavalues3, s.stavalues4
688       ,s.stavalues5
689        ))
690   FROM dbms_stats.column_stats_locked v,
691        pg_statistic s
692  WHERE v.starelid = 'st0'::regclass
693    AND v.staattnum = '1'::int2
694    AND s.starelid = 'st0'::regclass
695    AND s.staattnum = '1'::int2;
696
697 -- No.5-1-19
698 SELECT (m.merge).starelid::regclass,
699        (m.merge).staattnum,
700        (m.merge).stainherit,
701        (m.merge).stanullfrac,
702        (m.merge).stawidth,
703        (m.merge).stadistinct,
704        (m.merge).stakind1,
705        (m.merge).stakind2,
706        (m.merge).stakind3,
707        (m.merge).stakind4,
708        (m.merge).stakind5,
709        (m.merge).staop1,
710        (m.merge).staop2,
711        (m.merge).staop3,
712        (m.merge).staop4,
713        (m.merge).staop5,
714        (m.merge).stanumbers1,
715        (m.merge).stanumbers2,
716        (m.merge).stanumbers3,
717        (m.merge).stanumbers4,
718        (m.merge).stanumbers5,
719        (m.merge).stavalues1,
720        (m.merge).stavalues2,
721        (m.merge).stavalues3,
722        (m.merge).stavalues4
723       ,(m.merge).stavalues5
724  FROM (SELECT dbms_stats.merge((
725               v.starelid::regclass, v.staattnum, v.stainherit,
726               v.stanullfrac, v.stawidth, v.stadistinct,
727               '1', '1', '1', '1',
728               '1',
729               v.staop1, v.staop2, v.staop3, v.staop4,
730               v.staop5,
731               v.stanumbers1, v.stanumbers2, v.stanumbers3, v.stanumbers4,
732               v.stanumbers5,
733               v.stavalues1, v.stavalues2, v.stavalues3, v.stavalues4
734              ,v.stavalues5
735               ), (
736               s.starelid::regclass, s.staattnum, s.stainherit,
737               s.stanullfrac, s.stawidth, s.stadistinct,
738               '1', '1', '1', '1',
739               '1',
740               s.staop1, s.staop2, s.staop3, s.staop4,
741               s.staop5,
742               s.stanumbers1, s.stanumbers2, s.stanumbers3, s.stanumbers4,
743               s.stanumbers5,
744               s.stavalues1, s.stavalues2, s.stavalues3, s.stavalues4
745              ,s.stavalues5
746               ))
747          FROM dbms_stats.column_stats_locked v,
748               pg_statistic s
749         WHERE v.starelid = 'st0'::regclass
750           AND v.staattnum = '2'::int2
751           AND s.starelid = 'st0'::regclass
752           AND s.staattnum = '1'::int2) m;
753
754 -- No.5-1-20
755 SELECT (m.merge).starelid::regclass,
756        (m.merge).staattnum,
757        (m.merge).stainherit,
758        (m.merge).stanullfrac,
759        (m.merge).stawidth,
760        (m.merge).stadistinct,
761        (m.merge).stakind1,
762        (m.merge).stakind2,
763        (m.merge).stakind3,
764        (m.merge).stakind4,
765        (m.merge).stakind5,
766        (m.merge).staop1,
767        (m.merge).staop2,
768        (m.merge).staop3,
769        (m.merge).staop4,
770        (m.merge).staop5,
771        (m.merge).stanumbers1,
772        (m.merge).stanumbers2,
773        (m.merge).stanumbers3,
774        (m.merge).stanumbers4,
775        (m.merge).stanumbers5,
776        (m.merge).stavalues1,
777        (m.merge).stavalues2,
778        (m.merge).stavalues3,
779        (m.merge).stavalues4
780       ,(m.merge).stavalues5
781  FROM (SELECT dbms_stats.merge((v.starelid::regclass, v.staattnum, v.stainherit,
782               v.stanullfrac, v.stawidth, v.stadistinct,
783               '2', '2', '2', '2',
784               '2',
785               v.staop1, v.staop2, v.staop3, v.staop4,
786               v.staop5,
787               v.stanumbers1, v.stanumbers2, v.stanumbers3, v.stanumbers4,
788               v.stanumbers5,
789               v.stavalues1, v.stavalues2, v.stavalues3, v.stavalues4
790              ,v.stavalues5
791               ), (
792               s.starelid::regclass, s.staattnum, s.stainherit,
793               s.stanullfrac, s.stawidth, s.stadistinct,
794               '2', '2', '2', '2',
795               '2',
796               s.staop1, s.staop2, s.staop3, s.staop4,
797               s.staop5,
798               s.stanumbers1, s.stanumbers2, s.stanumbers3, s.stanumbers4,
799               s.stanumbers5,
800               s.stavalues1, s.stavalues2, s.stavalues3, s.stavalues4
801              ,s.stavalues5
802               ))
803          FROM dbms_stats.column_stats_locked v,
804               pg_statistic s
805         WHERE v.starelid = 'st0'::regclass
806           AND v.staattnum = '2'::int2
807           AND s.starelid = 'st0'::regclass
808           AND s.staattnum = '1'::int2) m;
809
810 -- No.5-1-21
811 SELECT dbms_stats.merge((v.starelid::regclass, '2', v.stainherit,
812               v.stanullfrac, v.stawidth, v.stadistinct,
813               '1', '1', '1', '1',
814               '1',
815               v.staop1, v.staop2, v.staop3, v.staop4,
816               v.staop5,
817               v.stanumbers1, v.stanumbers2, v.stanumbers3, v.stanumbers4,
818               v.stanumbers5,
819               v.stavalues1, v.stavalues2, v.stavalues3, v.stavalues4
820              ,v.stavalues5
821               ), (
822               s.starelid::regclass, s.staattnum, s.stainherit,
823               s.stanullfrac, s.stawidth, s.stadistinct,
824               '1', '1', '1', '1',
825               '1',
826               s.staop1, s.staop2, s.staop3, s.staop4,
827               s.staop5,
828               s.stanumbers1, s.stanumbers2, s.stanumbers3, s.stanumbers4,
829               s.stanumbers5,
830               s.stavalues1, s.stavalues2, s.stavalues3, s.stavalues4
831              ,s.stavalues5
832               ))
833          FROM dbms_stats.column_stats_locked v,
834               pg_statistic s
835         WHERE v.starelid = 'st0'::regclass
836           AND v.staattnum = '1'::int2
837           AND s.starelid = 'st0'::regclass
838           AND s.staattnum = '1'::int2;
839
840 -- No.5-1-22
841 SELECT dbms_stats.merge((v.starelid::regclass, '2', v.stainherit,
842               v.stanullfrac, v.stawidth, v.stadistinct,
843               '2', '2', '2', '2',
844               '2',
845               v.staop1, v.staop2, v.staop3, v.staop4,
846               v.staop5,
847               v.stanumbers1, v.stanumbers2, v.stanumbers3, v.stanumbers4,
848               v.stanumbers5,
849               v.stavalues1, v.stavalues2, v.stavalues3, v.stavalues4
850              ,v.stavalues5
851               ), (
852               s.starelid::regclass, s.staattnum, s.stainherit,
853               s.stanullfrac, s.stawidth, s.stadistinct,
854               '2', '2', '2', '2',
855               '2',
856               s.staop1, s.staop2, s.staop3, s.staop4,
857               s.staop5,
858               s.stanumbers1, s.stanumbers2, s.stanumbers3, s.stanumbers4,
859               s.stanumbers5,
860               s.stavalues1, s.stavalues2, s.stavalues3, s.stavalues4
861              ,s.stavalues5
862               ))
863          FROM dbms_stats.column_stats_locked v,
864               pg_statistic s
865         WHERE v.starelid = 'st0'::regclass
866           AND v.staattnum = '1'::int2
867           AND s.starelid = 'st0'::regclass
868           AND s.staattnum = '1'::int2;
869 RESET client_min_messages;
870 SELECT dbms_stats.unlock_database_stats();
871
872 /*
873  * No.6-4 dbms_stats.is_target_relkind
874  */
875 -- No.6-4- 10-11
876 SELECT dbms_stats.is_target_relkind(k::"char")
877  FROM (VALUES ('r'), ('i'), ('f'), ('m'),
878                           ('S'), ('t'), ('v'), ('c')) t(k);
879
880 /*
881  * No.7-1 dbms_stats.backup
882  */
883 DELETE FROM dbms_stats.backup_history;
884 INSERT INTO dbms_stats.backup_history(id, time, unit) values(1, '2012-01-01', 'd');
885 -- No.7-1-9
886 SELECT dbms_stats.backup(1, 's0.sft0'::regclass, NULL);
887 SELECT count(*) FROM dbms_stats.relation_stats_backup;
888 SELECT count(*) FROM dbms_stats.column_stats_backup;
889
890 -- No.7-1-10
891 -- #### 9.2 doesn't has materialized views
892 -- DELETE FROM dbms_stats.relation_stats_backup;
893 -- SELECT dbms_stats.backup(1, 's0.smv0'::regclass, NULL);
894 -- SELECT count(*) FROM dbms_stats.relation_stats_backup;
895 -- SELECT count(*) FROM dbms_stats.column_stats_backup;
896
897 -- No.7-1-12
898 DELETE FROM dbms_stats.relation_stats_backup;
899 SELECT dbms_stats.backup(1, NULL, 1::int2);
900 SELECT relid::regclass FROM dbms_stats.relation_stats_backup
901  GROUP BY relid
902  ORDER BY relid;
903 SELECT starelid::regclass, staattnum FROM dbms_stats.column_stats_backup
904  GROUP BY starelid, staattnum
905  ORDER BY starelid, staattnum;
906
907 -- No.7-1-14
908 DELETE FROM dbms_stats.relation_stats_backup;
909 SELECT dbms_stats.backup(1, NULL::regclass, NULL);
910 SELECT relid::regclass FROM dbms_stats.relation_stats_backup
911  GROUP BY relid
912  ORDER BY relid;
913 SELECT starelid::regclass, staattnum FROM dbms_stats.column_stats_backup
914  GROUP BY starelid, staattnum
915  ORDER BY starelid, staattnum;
916
917 -- No.7-1-18
918 DELETE FROM dbms_stats.relation_stats_backup;
919 \! psql contrib_regression -c "SELECT dbms_stats.backup(NULL, 's0.st0'::regclass, NULL)" > results/ut_no2_1_17.out 2>&1
920 SELECT count(*) FROM dbms_stats.relation_stats_backup;
921 SELECT count(*) FROM dbms_stats.column_stats_backup;
922
923 /*
924  * No.8-1 dbms_stats.backup
925  */
926 SELECT setval('dbms_stats.backup_history_id_seq',1, false);
927 /*
928  * Stab function dbms_stats.backup
929  */
930 ALTER FUNCTION dbms_stats.backup(
931     backup_id int8,
932     relid regclass,
933     attnum int2)
934     RENAME TO truth_func_backup;
935
936 CREATE OR REPLACE FUNCTION dbms_stats.backup(
937     backup_id int8,
938     regclass,
939     attnum int2)
940 RETURNS int8 AS
941 $$
942 BEGIN
943     RAISE NOTICE 'arguments are %, %, %', $1, $2, $3;
944     RETURN 1;
945 END;
946 $$
947 LANGUAGE plpgsql;
948
949 -- No.8-1-1
950 DELETE FROM dbms_stats.backup_history;
951 SELECT dbms_stats.backup('s0.st0'::regclass, 'id', 'dummy comment');
952 SELECT id, unit, comment FROM dbms_stats.backup_history;
953
954 -- No.8-1-2
955 DELETE FROM dbms_stats.backup_history;
956 SELECT dbms_stats.backup('s0.st0'::regclass, NULL, 'dummy comment');
957 SELECT id, unit, comment FROM dbms_stats.backup_history;
958
959 -- No.8-1-3
960 DELETE FROM dbms_stats.backup_history;
961 SELECT dbms_stats.backup(NULL::regclass, 'id', 'dummy comment');
962 SELECT id, unit, comment FROM dbms_stats.backup_history;
963
964 -- No.8-1-4
965 DELETE FROM dbms_stats.backup_history;
966 SELECT dbms_stats.backup(NULL::regclass, NULL, 'dummy comment');
967 SELECT id, unit, comment FROM dbms_stats.backup_history;
968
969 -- No.8-1-5
970 DELETE FROM dbms_stats.backup_history;
971 SELECT dbms_stats.backup(0, NULL, 'dummy comment');
972 SELECT id, unit, comment FROM dbms_stats.backup_history;
973
974 -- No.8-1-6
975 DELETE FROM dbms_stats.backup_history;
976 SELECT dbms_stats.backup('s0.st0'::regclass, NULL, 'dummy comment');
977 SELECT id, unit, comment FROM dbms_stats.backup_history;
978
979 -- No.8-1-7
980 DELETE FROM dbms_stats.backup_history;
981 SELECT dbms_stats.backup(
982     'pg_toast.pg_toast_2618'::regclass,
983     NULL,
984     'dummy comment');
985 SELECT id, unit, comment FROM dbms_stats.backup_history;
986
987 -- No.8-1-8
988 DELETE FROM dbms_stats.backup_history;
989 SELECT dbms_stats.backup('s0.st0_idx'::regclass, NULL, 'dummy comment');
990 SELECT id, unit, comment FROM dbms_stats.backup_history;
991
992 -- No.8-1-9
993 DELETE FROM dbms_stats.backup_history;
994 SELECT dbms_stats.backup('s0.ss0'::regclass, NULL, 'dummy comment');
995 SELECT id, unit, comment FROM dbms_stats.backup_history;
996
997 -- No.8-1-10
998 DELETE FROM dbms_stats.backup_history;
999 SELECT dbms_stats.backup('s0.sc0'::regclass, NULL, 'dummy comment');
1000 SELECT id, unit, comment FROM dbms_stats.backup_history;
1001
1002 -- No.8-1-11
1003 DELETE FROM dbms_stats.backup_history;
1004 SELECT dbms_stats.backup('s0.sft0'::regclass, NULL, 'dummy comment');
1005 SELECT id, unit, comment FROM dbms_stats.backup_history;
1006
1007 -- No.8-1-12
1008 -- #### 9.2 doesn't has materialized views
1009 -- DELETE FROM dbms_stats.backup_history;
1010 -- SELECT dbms_stats.backup('s0.smv0'::regclass, NULL, 'dummy comment');
1011 -- SELECT id, unit, comment FROM dbms_stats.backup_history;
1012
1013 -- No.8-1-13
1014 DELETE FROM dbms_stats.backup_history;
1015 SELECT dbms_stats.backup('pg_catalog.pg_class'::regclass, NULL, 'dummy comment');
1016 SELECT id, unit, comment FROM dbms_stats.backup_history;
1017
1018 -- No.8-1-14
1019 DELETE FROM dbms_stats.backup_history;
1020 SELECT dbms_stats.backup('s0.st0'::regclass, 'dummy', 'dummy comment');
1021 SELECT id, unit, comment FROM dbms_stats.backup_history;
1022
1023 -- No.8-1-15
1024 DELETE FROM dbms_stats.backup_history;
1025 DELETE FROM pg_statistic
1026  WHERE starelid = 's0.st0'::regclass
1027    AND staattnum = 1::int2;
1028 SELECT count(*) FROM dbms_stats.column_stats_effective
1029  WHERE starelid = 's0.st0'::regclass
1030    AND staattnum = 1::int2;
1031 SELECT dbms_stats.backup('s0.st0'::regclass, 'id', 'dummy comment');
1032 SELECT id, unit, comment FROM dbms_stats.backup_history;
1033
1034 /*
1035  * Stab function dbms_stats.backup
1036  */
1037 ALTER FUNCTION dbms_stats.backup(
1038     relid regclass,
1039     attname text,
1040     comment text)
1041     RENAME TO truth_func_backup;
1042 CREATE OR REPLACE FUNCTION dbms_stats.backup(
1043     relid regclass DEFAULT NULL,
1044     attname text DEFAULT NULL,
1045     comment text DEFAULT NULL)
1046 RETURNS int8 AS
1047 $$
1048 BEGIN
1049     IF $3 = '<NULL>' THEN
1050         RAISE NOTICE 'third argument is not NULL but string "<NULL>"';
1051     END IF;
1052     RAISE NOTICE 'arguments are %, %, %', $1, $2, $3;
1053     RETURN 1;
1054 END;
1055 $$
1056 LANGUAGE plpgsql;
1057
1058 /*
1059  * No.8-3 dbms_stats.backup_schema_stats
1060  */
1061 SELECT setval('dbms_stats.backup_history_id_seq',9, false);
1062 -- No.8-3-1
1063 SELECT dbms_stats.backup_schema_stats('s0', 'comment');
1064 SELECT id, unit, comment FROM dbms_stats.backup_history
1065  ORDER BY id DESC
1066  LIMIT 1;
1067 -- No.8-3-2
1068 SELECT dbms_stats.backup_schema_stats('s00', 'comment');
1069 SELECT id, unit, comment FROM dbms_stats.backup_history
1070  ORDER BY id DESC
1071  LIMIT 1;
1072 -- No.8-3-3
1073 SELECT dbms_stats.backup_schema_stats('pg_catalog', 'comment');
1074 SELECT id, unit, comment FROM dbms_stats.backup_history
1075  ORDER BY id DESC
1076  LIMIT 1;
1077
1078 /*
1079  * Delete stab function dbms_stats.backup
1080  */
1081 DROP FUNCTION dbms_stats.backup(
1082     backup_id int8,
1083     regclass,
1084     attnum int2);
1085 ALTER FUNCTION dbms_stats.truth_func_backup(
1086     backup_id int8,
1087     regclass,
1088     attnum int2)
1089     RENAME TO backup;
1090 DROP FUNCTION dbms_stats.backup(
1091     regclass,
1092     attname text,
1093     comment text);
1094 ALTER FUNCTION dbms_stats.truth_func_backup(
1095     regclass,
1096     attname text,
1097     comment text)
1098     RENAME TO backup;
1099 VACUUM ANALYZE;
1100
1101 /*
1102  * create backup statistics state A
1103  */
1104 DELETE FROM dbms_stats.backup_history;
1105
1106 INSERT INTO dbms_stats.backup_history(id, time, unit)
1107     VALUES (1, '2012-02-29 23:59:56.999999', 'd');
1108
1109 SELECT setval('dbms_stats.backup_history_id_seq',1);
1110 SELECT dbms_stats.backup();
1111 UPDATE dbms_stats.backup_history
1112    SET time = '2012-02-29 23:59:57'
1113  WHERE id = 2;
1114 SELECT dbms_stats.backup('s0.st0');
1115 UPDATE dbms_stats.backup_history
1116    SET time = '2012-02-29 23:59:57.000001'
1117  WHERE id = 3;
1118 SELECT dbms_stats.backup();
1119 UPDATE dbms_stats.backup_history
1120    SET time = '2012-02-29 23:59:58'
1121  WHERE id = 4;
1122 DELETE FROM dbms_stats.relation_stats_backup
1123  WHERE id = 4;
1124 SELECT dbms_stats.backup('s0.st0', 'id');
1125 UPDATE dbms_stats.backup_history
1126    SET time = '2012-03-01 00:00:00'
1127  WHERE id = 5;
1128 SELECT dbms_stats.backup('s0.st0');
1129 UPDATE dbms_stats.backup_history
1130    SET time = '2012-03-01 00:00:02'
1131  WHERE id = 6;
1132 SELECT dbms_stats.backup('public.st0');
1133 UPDATE dbms_stats.backup_history
1134    SET time = '2012-03-01 00:00:04'
1135  WHERE id = 7;
1136 INSERT INTO dbms_stats.backup_history(time, unit)
1137     VALUES ('2012-03-01 00:00:06', 's');
1138 SELECT dbms_stats.backup(8, c.oid, NULL)
1139   FROM pg_catalog.pg_class c,
1140        pg_catalog.pg_namespace n
1141  WHERE n.nspname = 's0'
1142    AND c.relnamespace = n.oid
1143    AND c.relkind IN ('r', 'i');
1144
1145 SELECT * FROM dbms_stats.backup_history
1146  ORDER BY id;
1147 SELECT * FROM relations_backup_v;
1148 SELECT * FROM columns_backup_v;
1149
1150 VACUUM ANALYZE;
1151
1152 /*
1153  * No.9-1 dbms_stats.restore
1154  */
1155 -- No.9-1-1
1156 DELETE FROM dbms_stats.relation_stats_locked;
1157 VACUUM dbms_stats.relation_stats_locked;  -- in order to avoid auto vacuum
1158 BEGIN;
1159 SELECT * FROM internal_locks;
1160 SELECT dbms_stats.restore(2, 's0.st0', NULL);
1161 SELECT * FROM internal_locks;
1162 COMMIT;
1163 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1164  GROUP BY relid
1165  ORDER BY relid;
1166 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1167
1168 -- No.9-1-2
1169 DELETE FROM dbms_stats.relation_stats_locked;
1170 SELECT dbms_stats.restore(2, 'st0', NULL);
1171 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1172  GROUP BY relid
1173  ORDER BY relid;
1174 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1175
1176 -- No.9-1-3
1177 DELETE FROM dbms_stats.relation_stats_locked;
1178 SELECT dbms_stats.restore(2, 's00.s0', NULL);
1179 SELECT count(*) FROM dbms_stats.column_stats_locked;
1180 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1181
1182 -- No.9-1-4
1183 DELETE FROM dbms_stats.relation_stats_locked;
1184 SELECT dbms_stats.restore(NULL, 's0.st0', NULL);
1185 SELECT count(*) FROM dbms_stats.column_stats_locked;
1186 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1187
1188 -- No.9-1-5
1189 DELETE FROM dbms_stats.relation_stats_locked;
1190 SELECT dbms_stats.restore(2, 's0.st0', 'id');
1191 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1192  GROUP BY relid
1193  ORDER BY relid;
1194 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1195
1196 -- No.9-1-6
1197 DELETE FROM dbms_stats.relation_stats_locked;
1198 SELECT dbms_stats.restore(2, NULL, 'id');
1199 SELECT count(*) FROM dbms_stats.column_stats_locked;
1200 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1201
1202 -- No.9-1-7
1203 DELETE FROM dbms_stats.relation_stats_locked;
1204 SELECT dbms_stats.restore(2, 's0.st0', NULL);
1205 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1206  GROUP BY relid
1207  ORDER BY relid;
1208 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1209
1210 -- No.9-1-8
1211 DELETE FROM dbms_stats.relation_stats_locked;
1212 SELECT dbms_stats.restore(2, NULL, NULL);
1213 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1214  GROUP BY relid
1215  ORDER BY relid;
1216 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1217
1218 -- No.9-1-9
1219 DELETE FROM dbms_stats.relation_stats_locked;
1220 SELECT dbms_stats.restore(0, 's0.st0', NULL);
1221 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1222  GROUP BY relid
1223  ORDER BY relid;
1224 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1225
1226 -- No.9-1-10
1227 DELETE FROM dbms_stats.relation_stats_locked;
1228 SELECT dbms_stats.restore(2, 0, 'id');
1229 SELECT count(*) FROM dbms_stats.column_stats_locked;
1230 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1231
1232 -- No.9-1-11
1233 DELETE FROM dbms_stats.relation_stats_locked;
1234 SELECT dbms_stats.restore(1, 's0.st0', NULL);
1235 SELECT count(*) FROM dbms_stats.column_stats_locked;
1236 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1237
1238 -- No.9-1-12
1239 DELETE FROM dbms_stats.relation_stats_locked;
1240 SELECT dbms_stats.restore(2, 's0.st0', 'dummy');
1241 SELECT count(*) FROM dbms_stats.column_stats_locked;
1242 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1243
1244 -- No.9-1-13
1245 DELETE FROM dbms_stats.relation_stats_locked;
1246 SELECT dbms_stats.restore(1, 's0.st0', 'id');
1247 SELECT count(*) FROM dbms_stats.column_stats_locked;
1248 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1249
1250 -- No.9-1-15
1251 DELETE FROM dbms_stats.relation_stats_locked;
1252 ALTER TABLE s1.st0 DROP COLUMN id;
1253 SELECT dbms_stats.restore(2, 's1.st0', 'id');
1254 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1255  GROUP BY relid
1256  ORDER BY relid;
1257 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1258
1259 -- No.9-1-14
1260 DELETE FROM dbms_stats.relation_stats_locked;
1261 \set s1_st0_oid `psql contrib_regression -tA -c "SELECT c.oid FROM pg_class c, pg_namespace n WHERE c.relnamespace = n.oid AND n.nspname = 's1' AND c.relname = 'st0';"`
1262 DROP TABLE s1.st0;
1263 -- SELECT dbms_stats.restore(2, :s1_st0_oid, NULL);
1264 -- To avoid test unstability caused by relation id alloction, the test
1265 -- above is omitted.
1266
1267 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1268 SELECT count(*) FROM dbms_stats.column_stats_locked;
1269 CREATE TABLE s1.st0(id integer, num integer);
1270 INSERT INTO s1.st0 VALUES (1, 15), (2, 25), (3, 35), (4, 45);
1271 VACUUM ANALYZE;
1272 -- No.9-1-16
1273 DELETE FROM dbms_stats.relation_stats_locked;
1274 SELECT dbms_stats.restore(2, 's0.st0', NULL);
1275 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1276  GROUP BY relid
1277  ORDER BY relid;
1278 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1279
1280 -- No.9-1-17
1281 DELETE FROM dbms_stats.relation_stats_locked;
1282 INSERT INTO dbms_stats.relation_stats_backup(
1283                id, relid, relname, relpages, reltuples,
1284                relallvisible,
1285                curpages)
1286      VALUES (2,
1287              'pg_toast.pg_toast_2618'::regclass,
1288              'pg_toast.pg_toast_2618', 1, 1,
1289              1,
1290              1);
1291 SELECT * FROM relations_backup_v
1292  WHERE id = 2
1293    AND relname = 'pg_toast.pg_toast_2618';
1294 SELECT dbms_stats.restore(2, 'pg_toast.pg_toast_2618', NULL);
1295 SELECT count(*) FROM dbms_stats.column_stats_locked;
1296 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1297 DELETE FROM dbms_stats.relation_stats_backup
1298  WHERE id = 2
1299    AND relname = 'pg_toast.pg_toast_2618';
1300
1301 -- No.9-1-18
1302 DELETE FROM dbms_stats.relation_stats_locked;
1303 SELECT dbms_stats.restore(2, 's0.st0_idx', NULL);
1304 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1305  GROUP BY relid
1306  ORDER BY relid;
1307 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1308
1309 -- No.9-1-19
1310 DELETE FROM dbms_stats.relation_stats_locked;
1311 INSERT INTO dbms_stats.relation_stats_backup(
1312                id, relid, relname, relpages, reltuples,
1313                relallvisible,
1314                curpages)
1315      VALUES (2, 's0.ss0'::regclass, 's0.ss0', 1, 1,
1316              1,
1317              1);
1318 SELECT * FROM relations_backup_v
1319  WHERE id = 2
1320    AND relname = 's0.ss0';
1321 SELECT dbms_stats.restore(2, 's0.ss0', NULL);
1322 SELECT count(*) FROM dbms_stats.column_stats_locked;
1323 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1324 DELETE FROM dbms_stats.relation_stats_backup
1325  WHERE id = 2
1326    AND relname = 's0.ss0';
1327
1328 -- No.9-1-20
1329 DELETE FROM dbms_stats.relation_stats_locked;
1330 INSERT INTO dbms_stats.relation_stats_backup(
1331                id, relid, relname, relpages, reltuples,
1332                relallvisible,
1333                curpages)
1334      VALUES (2, 's0.sc0'::regclass, 's0.sc0', 1, 1,
1335              1,
1336              1);
1337 SELECT * FROM relations_backup_v
1338  WHERE id = 2
1339    AND relname = 's0.sc0';
1340 SELECT dbms_stats.restore(2, 's0.sc0', NULL);
1341 SELECT count(*) FROM dbms_stats.column_stats_locked;
1342 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1343 DELETE FROM dbms_stats.relation_stats_backup
1344  WHERE id = 2
1345    AND relname = 's0.sc0';
1346
1347 -- No.9-1-21
1348 DELETE FROM dbms_stats.relation_stats_locked;
1349 INSERT INTO dbms_stats.relation_stats_backup(
1350                id, relid, relname, relpages, reltuples,
1351                relallvisible,
1352                curpages)
1353      VALUES (3, 's0.sft0'::regclass, 's0.sft0', 1, 1,
1354              1,
1355              1);
1356 SELECT * FROM relations_backup_v
1357  WHERE id = 3
1358    AND relname = 's0.sft0';
1359 SELECT dbms_stats.restore(2, 's0.sft0', NULL);
1360 SELECT count(*) FROM dbms_stats.column_stats_locked;
1361 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1362 DELETE FROM dbms_stats.relation_stats_backup
1363  WHERE id = 3
1364    AND relname = 's0.sft0';
1365
1366 -- No.9-1-22
1367 -- #### 9.2 doesn't has materialized views
1368 -- DELETE FROM dbms_stats.relation_stats_locked;
1369 -- INSERT INTO dbms_stats.relation_stats_backup(
1370 --                id, relid, relname, relpages, reltuples,
1371 --                relallvisible,
1372 --                curpages)
1373 --      VALUES (3, 's0.smv0'::regclass, 's0.smv0', 1, 1,
1374 --              1,
1375 --              1);
1376 -- SELECT * FROM relations_backup_v
1377 --  WHERE id = 3
1378 --    AND relname = 's0.smv0';
1379 -- SELECT dbms_stats.restore(2, 's0.smv0', NULL);
1380 -- SELECT count(*) FROM dbms_stats.column_stats_locked;
1381 -- SELECT count(*) FROM dbms_stats.relation_stats_locked;
1382 -- DELETE FROM dbms_stats.relation_stats_backup
1383 --  WHERE id = 3
1384 --    AND relname = 's0.smv0';
1385
1386 -- No.9-1-23
1387 DELETE FROM dbms_stats.relation_stats_locked;
1388 INSERT INTO dbms_stats.relation_stats_backup(
1389                id, relid, relname, relpages, reltuples,
1390                relallvisible,
1391                curpages)
1392      VALUES (2, 'pg_catalog.pg_class'::regclass, 'pg_catalog.pg_class', 1, 1,
1393              1,
1394              1);
1395 SELECT * FROM relations_backup_v
1396  WHERE id = 2
1397    AND relname = 'pg_catalog.pg_class';
1398 SELECT dbms_stats.restore(2, 'pg_catalog.pg_class', NULL);
1399 SELECT count(*) FROM dbms_stats.column_stats_locked;
1400 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1401 DELETE FROM dbms_stats.relation_stats_backup
1402  WHERE id = 2
1403    AND relname = 'pg_catalog.pg_class';
1404
1405 -- No.9-1-24
1406 DELETE FROM dbms_stats.relation_stats_locked;
1407 INSERT INTO dbms_stats.relation_stats_locked(relid, relname)
1408     VALUES ('s0.st0'::regclass, 's0.st0');
1409 INSERT INTO dbms_stats.column_stats_locked(starelid, staattnum, stainherit)
1410      SELECT starelid::regclass, staattnum, stainherit
1411        FROM dbms_stats.column_stats_effective
1412       WHERE starelid = 's0.st0'::regclass;
1413 SELECT id, unit, comment FROM dbms_stats.backup_history
1414  WHERE id = 2;
1415 SELECT * FROM columns_locked_v;
1416 SELECT * FROM relations_locked_v;
1417 SELECT dbms_stats.restore(2, 's0.st0', NULL);
1418 SELECT * FROM relations_locked_v;
1419 SELECT * FROM columns_locked_v;
1420
1421 -- No.9-1-25
1422 DELETE FROM dbms_stats.relation_stats_locked;
1423 SELECT id, unit, comment FROM dbms_stats.backup_history
1424  WHERE id = 2;
1425 SELECT dbms_stats.restore(2, 's0.st0', NULL);
1426 SELECT * FROM relations_locked_v;
1427 SELECT * FROM columns_locked_v;
1428
1429 /*
1430  * Stab function dbms_stats.restore
1431  */
1432 CREATE OR REPLACE FUNCTION dbms_stats.restore(
1433     backup_id int8,
1434     relid regclass DEFAULT NULL,
1435     attname text DEFAULT NULL)
1436 RETURNS SETOF regclass AS
1437 $$
1438 BEGIN
1439     RAISE NOTICE 'arguments are "%, %, %"', $1, $2, $3;
1440     RETURN QUERY
1441         SELECT c.oid::regclass
1442           FROM pg_class c, dbms_stats.relation_stats_backup b
1443          WHERE (c.oid = $2 OR $2 IS NULL)
1444            AND c.oid = b.relid
1445            AND c.relkind IN ('r', 'i')
1446            AND (b.id <= $1 OR $1 IS NOT NULL)
1447          GROUP BY c.oid
1448          ORDER BY c.oid::regclass::text;
1449 END;
1450 $$
1451 LANGUAGE plpgsql;
1452
1453 /*
1454  * No.10-1 dbms_stats.restore_database_stats
1455  */
1456 -- No.10-1-1
1457 SELECT dbms_stats.restore_database_stats('2012-02-29 23:59:57');
1458 -- No.10-1-2
1459 SELECT dbms_stats.restore_database_stats('2012-02-29 23:59:57.000002');
1460 -- No.10-1-3
1461 SELECT dbms_stats.restore_database_stats('2012-01-01 00:00:00');
1462 --#No.10-1-4 is skipped after lock tests
1463 --#No.10-1-5 is skipped after lock tests
1464 -- No.10-1-6
1465 SELECT dbms_stats.restore_database_stats('2012-02-29 23:59:57');
1466
1467 /*
1468  * No.10-2 dbms_stats.restore_schema_stats
1469  */
1470 -- No.10-2-1
1471 SELECT dbms_stats.restore_schema_stats('s0', '2012-02-29 23:59:57');
1472 -- No.10-2-2
1473 SELECT dbms_stats.restore_schema_stats('s0', '2012-02-29 23:59:57.000002');
1474 -- No.10-2-3
1475 SELECT dbms_stats.restore_schema_stats('s0', '2012-01-01 00:00:00');
1476 --#No.10-2-4 is skipped after lock tests
1477 --#No.10-2-5 is skipped after lock tests
1478 -- No.10-2-6
1479 SELECT dbms_stats.restore_schema_stats('s0', '2012-02-29 23:59:57');
1480 -- No.10-2-7
1481 SELECT dbms_stats.restore_schema_stats('s0', '2012-02-29 23:59:57');
1482 --#No.10-2-8 is skipped after lock tests
1483 -- No.10-2-9
1484 SELECT dbms_stats.restore_schema_stats('s00', '2012-02-29 23:59:57');
1485 -- No.10-2-10
1486 SELECT dbms_stats.restore_schema_stats('pg_catalog', '2012-02-29 23:59:57');
1487
1488 /*
1489  * No.10-7 dbms_stats.restore_stats
1490  */
1491 -- No.10-7-1
1492 DELETE FROM dbms_stats.relation_stats_locked;
1493 SELECT dbms_stats.restore_stats(NULL);
1494
1495 -- No.10-7-2
1496 DELETE FROM dbms_stats.relation_stats_locked;
1497 SELECT dbms_stats.restore_stats(0);
1498
1499 -- No.10-7-3
1500 DELETE FROM dbms_stats.relation_stats_locked;
1501 VACUUM dbms_stats.relation_stats_locked;  -- in order to avoid auto vacuum
1502 BEGIN;
1503 SELECT * FROM internal_locks;
1504 SELECT dbms_stats.restore_stats(2);
1505 SELECT * FROM internal_locks;
1506 COMMIT;
1507 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1508  GROUP BY relid
1509  ORDER BY relid;
1510 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1511
1512 -- No.10-7-4
1513 DELETE FROM dbms_stats.relation_stats_locked;
1514 INSERT INTO dbms_stats.relation_stats_locked(relid, relname)
1515      SELECT relid::regclass, relname
1516        FROM dbms_stats.relation_stats_effective;
1517 INSERT INTO dbms_stats.column_stats_locked(starelid, staattnum, stainherit)
1518      SELECT starelid::regclass, staattnum, stainherit
1519        FROM dbms_stats.column_stats_effective;
1520 SELECT id, unit, comment FROM dbms_stats.backup_history
1521  WHERE id = 8;
1522 SELECT * FROM columns_locked_v;
1523 SELECT * FROM relations_locked_v;
1524 SELECT dbms_stats.restore_stats(8);
1525 SELECT * FROM relations_locked_v;
1526 SELECT * FROM columns_locked_v;
1527
1528 -- No.10-7-5
1529 DELETE FROM dbms_stats.relation_stats_locked;
1530 SELECT id, unit, comment FROM dbms_stats.backup_history
1531  WHERE id = 8;
1532 SELECT dbms_stats.restore_stats(8);
1533 SELECT * FROM relations_locked_v;
1534 SELECT * FROM columns_locked_v;
1535
1536 /*
1537  * No.11-1 dbms_stats.lock(relid, attname)
1538  */
1539 -- No.11-1-1
1540 DELETE FROM dbms_stats.relation_stats_locked;
1541 SELECT dbms_stats.lock(NULL, NULL);
1542 -- No.11-1-2
1543 ALTER FUNCTION dbms_stats.lock(relid regclass)
1544     RENAME TO truth_lock;
1545 CREATE FUNCTION dbms_stats.lock(relid regclass)
1546 RETURNS regclass AS
1547 $$
1548 BEGIN
1549         RAISE NOTICE 'arguments are %', $1;
1550         RETURN $1;
1551 END
1552 $$
1553 LANGUAGE plpgsql;
1554 DELETE FROM dbms_stats.relation_stats_locked;
1555 SELECT dbms_stats.lock('s0.st0', NULL);
1556 DROP FUNCTION dbms_stats.lock(relid regclass);
1557 ALTER FUNCTION dbms_stats.truth_lock(relid regclass)
1558     RENAME TO lock;
1559 -- No.11-1-3
1560 DELETE FROM dbms_stats.relation_stats_locked;
1561 SELECT dbms_stats.lock(NULL, 'id');
1562 -- No.11-1-4
1563 DELETE FROM dbms_stats.relation_stats_locked;
1564 SELECT dbms_stats.lock('s0.st0', 'id');
1565 SELECT * FROM relations_locked_v;
1566 SELECT * FROM columns_locked_v c;
1567 -- No.11-1-5
1568 DELETE FROM dbms_stats.relation_stats_locked;
1569 SELECT dbms_stats.lock(0, 'id');
1570 -- No.11-1-6
1571 DELETE FROM dbms_stats.relation_stats_locked;
1572 SELECT dbms_stats.lock('s0.st0', 'id');
1573 SELECT * FROM relations_locked_v;
1574 SELECT * FROM columns_locked_v c;
1575 -- No.11-1-7
1576 DELETE FROM dbms_stats.relation_stats_locked;
1577 SELECT dbms_stats.lock('pg_toast.pg_toast_2618', 'id');
1578 -- No.11-1-8
1579 DELETE FROM dbms_stats.relation_stats_locked;
1580 SELECT dbms_stats.lock('s0.st0_idx', 'id');
1581 -- No.11-1-9
1582 DELETE FROM dbms_stats.relation_stats_locked;
1583 SELECT dbms_stats.lock('st1_exp', 'lower');
1584 SELECT * FROM relations_locked_v;
1585 SELECT * FROM columns_locked_v c;
1586 DELETE FROM dbms_stats.relation_stats_locked;
1587
1588 -- No.11-1-10
1589 DELETE FROM dbms_stats.relation_stats_locked;
1590 SELECT dbms_stats.lock('s0.ss0', 'id');
1591 -- No.11-1-11
1592 DELETE FROM dbms_stats.relation_stats_locked;
1593 SELECT dbms_stats.lock('s0.sc0', 'id');
1594 -- No.11-1-12
1595 DELETE FROM dbms_stats.relation_stats_locked;
1596 SELECT dbms_stats.lock('s0.sft0', 'id');
1597 SELECT * FROM relations_locked_v;
1598 SELECT * FROM columns_locked_v c;
1599 -- No.11-1-13
1600 -- #### 9.2 doesn't has materialized views
1601 -- DELETE FROM dbms_stats.relation_stats_locked;
1602 -- SELECT dbms_stats.lock('s0.smv0', 'id');
1603 -- SELECT * FROM relations_locked_v;
1604 -- SELECT * FROM columns_locked_v c;
1605 -- No.11-1-14
1606 DELETE FROM dbms_stats.relation_stats_locked;
1607 SELECT dbms_stats.lock('pg_catalog.pg_class', 'id');
1608 -- No.11-1-15
1609 DELETE FROM dbms_stats.relation_stats_locked;
1610 SELECT dbms_stats.lock('s0.st0', 'dummy');
1611 -- No.11-1-16
1612 DELETE FROM dbms_stats.relation_stats_locked;
1613 DELETE FROM pg_statistic
1614  WHERE starelid = 's0.st0'::regclass;
1615 SELECT dbms_stats.lock('s0.st0', 'id');
1616 VACUUM ANALYZE;
1617 -- No.11-1-17
1618 DELETE FROM dbms_stats.relation_stats_locked;
1619 INSERT INTO dbms_stats.relation_stats_locked(
1620     relid, relname, relpages, reltuples,
1621     relallvisible,
1622     curpages)
1623     VALUES('s0.st0'::regclass, 's0.st0', 1, 1640,
1624            1,
1625            1);
1626 SELECT dbms_stats.lock_column_stats('s0.st0','id');
1627 UPDATE dbms_stats.column_stats_locked
1628    SET (stanullfrac, stawidth, stadistinct,
1629         stakind1, stakind2, stakind3, stakind4,
1630         stakind5,
1631         staop1, staop2, staop3, staop4,
1632         staop5,
1633         stanumbers1, stanumbers2, stanumbers3, stanumbers4,
1634         stanumbers5,
1635         stavalues1, stavalues2, stavalues3, stavalues4
1636        ,stavalues5
1637        ) = (
1638         NULL, NULL, NULL,
1639         NULL, NULL, NULL, NULL,
1640         NULL, NULL, NULL, NULL,
1641         NULL, NULL, NULL, NULL,
1642         NULL, NULL, NULL, NULL,
1643         NULL, NULL, NULL, NULL)
1644  WHERE starelid = 's0.st0'::regclass;
1645 SELECT dbms_stats.lock('s0.st0', 'id');
1646 SELECT * FROM relations_locked_v;
1647 SELECT * FROM columns_locked_v c;
1648 -- No.11-1-18
1649 DELETE FROM dbms_stats.relation_stats_locked;
1650 SELECT dbms_stats.lock('s0.st0', 'id');
1651 SELECT * FROM relations_locked_v
1652  WHERE relid = 's0.st0'::regclass;
1653 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1654
1655 /*
1656  * No.11-2 dbms_stats.lock(relid)
1657  */
1658 -- No.11-2-1
1659 DELETE FROM dbms_stats.relation_stats_locked;
1660 VACUUM dbms_stats.relation_stats_locked;  -- in order to avoid auto vacuum
1661 BEGIN;
1662 SELECT * FROM internal_locks;
1663 SELECT dbms_stats.lock('s0.st0');
1664 SELECT * FROM relations_locked_v;
1665 SELECT * FROM columns_locked_v c;
1666 SELECT * FROM internal_locks;
1667 COMMIT;
1668
1669 -- No.11-2-2
1670 DELETE FROM dbms_stats.relation_stats_locked;
1671 SELECT dbms_stats.lock(NULL);
1672 -- No.11-2-3
1673 DELETE FROM dbms_stats.relation_stats_locked;
1674 SELECT dbms_stats.lock('0');
1675 -- No.11-2-4
1676 DELETE FROM dbms_stats.relation_stats_locked;
1677 SELECT dbms_stats.lock('s0.st0');
1678 SELECT * FROM relations_locked_v;
1679 SELECT * FROM columns_locked_v c;
1680 -- No.11-2-5
1681 DELETE FROM dbms_stats.relation_stats_locked;
1682 SELECT dbms_stats.lock('pg_toast.pg_toast_2618');
1683 -- No.11-2-6
1684 DELETE FROM dbms_stats.relation_stats_locked;
1685 SELECT dbms_stats.lock('s0.st0_idx');
1686 SELECT * FROM relations_locked_v;
1687 SELECT * FROM columns_locked_v c;
1688 -- No.11-2-7
1689 DELETE FROM dbms_stats.relation_stats_locked;
1690 SELECT dbms_stats.lock('s0.ss0');
1691 -- No.11-2-8
1692 DELETE FROM dbms_stats.relation_stats_locked;
1693 SELECT dbms_stats.lock('s0.sc0');
1694 -- No.11-2-9
1695 DELETE FROM dbms_stats.relation_stats_locked;
1696 SELECT dbms_stats.lock('s0.sft0');
1697 SELECT * FROM relations_locked_v;
1698 SELECT * FROM columns_locked_v c;
1699 -- No.11-2-10
1700 -- #### 9.2 doesn't has materialized views
1701 -- DELETE FROM dbms_stats.relation_stats_locked;
1702 -- SELECT dbms_stats.lock('s0.smv0');
1703 -- SELECT * FROM relations_locked_v;
1704 -- SELECT * FROM columns_locked_v c;
1705 -- No.11-2-11
1706 DELETE FROM dbms_stats.relation_stats_locked;
1707 SELECT dbms_stats.lock('pg_catalog.pg_class');
1708 -- No.11-2-12
1709 DELETE FROM dbms_stats.relation_stats_locked;
1710 SELECT dbms_stats.lock_table_stats('s0.st0');
1711 UPDATE dbms_stats.relation_stats_locked
1712    SET (relpages, reltuples,
1713         relallvisible,
1714         curpages)
1715      = (NULL, NULL, NULL
1716        ,NULL
1717        )
1718  WHERE relid = 's0.st0'::regclass;
1719 SELECT dbms_stats.lock('s0.st0');
1720 SELECT * FROM relations_locked_v;
1721 SELECT * FROM columns_locked_v c;
1722 -- No.11-2-13
1723 DELETE FROM dbms_stats.relation_stats_locked;
1724 SELECT dbms_stats.lock('s0.st0');
1725 SELECT * FROM relations_locked_v;
1726 SELECT * FROM columns_locked_v c;
1727
1728 /*
1729  * Stab function dbms_stats.lock
1730  */
1731 ALTER FUNCTION dbms_stats.lock(relid regclass)
1732     RENAME TO truth_lock;
1733 CREATE FUNCTION dbms_stats.lock(relid regclass)
1734 RETURNS regclass AS
1735 $$
1736 BEGIN
1737     RAISE NOTICE 'arguments are %', $1;
1738     RETURN $1;
1739 END
1740 $$
1741 LANGUAGE plpgsql;
1742
1743 ALTER FUNCTION dbms_stats.lock(relid regclass, attname text)
1744     RENAME TO truth_lock;
1745 CREATE FUNCTION dbms_stats.lock(
1746     relid regclass,
1747     attname text)
1748 RETURNS regclass AS
1749 $$
1750 BEGIN
1751     RAISE NOTICE 'arguments are %, %', $1, $2;
1752     RETURN $1;
1753 END
1754 $$
1755 LANGUAGE plpgsql;
1756
1757 /*
1758  * No.12-1 dbms_stats.lock_database_stats
1759  */
1760 -- No.12-1-1
1761 SELECT dbms_stats.lock_database_stats();
1762
1763 /*
1764  * No.12-2 dbms_stats.lock_schema_stats
1765  */
1766 -- No.12-2-1
1767 SELECT dbms_stats.lock_schema_stats('s0');
1768 -- No.12-2-2
1769 SELECT dbms_stats.lock_schema_stats('s00');
1770 -- No.12-2-3
1771 SELECT dbms_stats.lock_schema_stats('pg_catalog');
1772
1773 /*
1774  * No.12-3 dbms_stats.lock_table_stats(regclass)
1775  */
1776 -- No.12-3-1
1777 SELECT dbms_stats.lock_table_stats('s0.st0');
1778 -- No.12-3-2
1779 SELECT dbms_stats.lock_table_stats('st0');
1780 -- No.12-3-3
1781 SELECT dbms_stats.lock_table_stats('s00.s0');
1782
1783 /*
1784  * No.12-4 dbms_stats.lock_table_stats(schemaname, tablename)
1785  */
1786 -- No.12-4-1
1787 SELECT dbms_stats.lock_table_stats('s0', 'st0');
1788
1789 /*
1790  * No.12-5 dbms_stats.lock_column_stats(regclass, attname)
1791  */
1792 -- No.12-5-1
1793 SELECT dbms_stats.lock_column_stats('s0.st0', 'id');
1794 -- No.12-5-2
1795 SELECT dbms_stats.lock_column_stats('st0', 'id');
1796 -- No.12-5-3
1797 SELECT dbms_stats.lock_column_stats('s00.s0', 'id');
1798
1799 /*
1800  * No.12-6 dbms_stats.lock_column_stats(schemaname, tablename, int2)
1801  */
1802 -- No.12-6-1
1803 SELECT dbms_stats.lock_column_stats('s0', 'st0', 'id');
1804
1805 /*
1806  * Delete Stab function lock
1807  */
1808 DROP FUNCTION dbms_stats.lock(relid regclass);
1809 ALTER FUNCTION dbms_stats.truth_lock(relid regclass)
1810     RENAME TO lock;
1811 DROP FUNCTION dbms_stats.lock(relid regclass, attname text);
1812 ALTER FUNCTION dbms_stats.truth_lock(relid regclass, attname text)
1813     RENAME TO lock;
1814
1815 /*
1816  * No.13-1 dbms_stats.unlock
1817  */
1818 -- No.13-1-1
1819 DELETE FROM dbms_stats.relation_stats_locked;
1820 SELECT dbms_stats.lock_database_stats();
1821 SELECT * FROM dbms_stats.backup_history
1822  ORDER BY id;
1823 SELECT count(*) FROM dbms_stats.relation_stats_backup;
1824 SELECT count(*) FROM dbms_stats.column_stats_backup;
1825 SELECT dbms_stats.unlock();
1826 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1827 SELECT count(*) FROM dbms_stats.column_stats_locked;
1828 SELECT * FROM dbms_stats.backup_history
1829  ORDER BY id;
1830 SELECT count(*) FROM dbms_stats.relation_stats_backup;
1831 SELECT count(*) FROM dbms_stats.column_stats_backup;
1832
1833 -- No.13-1-2
1834 DELETE FROM dbms_stats.relation_stats_locked;
1835 SELECT dbms_stats.lock_database_stats();
1836 SELECT dbms_stats.unlock();
1837 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1838 SELECT count(*) FROM dbms_stats.column_stats_locked;
1839
1840 -- No.13-1-3
1841 DELETE FROM dbms_stats.relation_stats_locked;
1842 SELECT dbms_stats.lock_database_stats();
1843 DELETE FROM dbms_stats.column_stats_locked;
1844 SELECT dbms_stats.unlock();
1845 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1846 SELECT count(*) FROM dbms_stats.column_stats_locked;
1847
1848 -- No.13-1-4
1849 DELETE FROM dbms_stats.relation_stats_locked;
1850 SELECT dbms_stats.unlock();
1851 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1852 SELECT count(*) FROM dbms_stats.column_stats_locked;
1853
1854 -- No.13-1-5
1855 DELETE FROM dbms_stats.relation_stats_locked;
1856 SELECT dbms_stats.lock_database_stats();
1857 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1858  GROUP BY relid
1859  ORDER BY relid;
1860 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
1861  GROUP BY starelid
1862  ORDER BY starelid;
1863 SELECT dbms_stats.unlock('s0.st0');
1864 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1865  GROUP BY relid
1866  ORDER BY relid;
1867 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
1868  GROUP BY starelid
1869  ORDER BY starelid;
1870
1871 -- No.13-1-6
1872 DELETE FROM dbms_stats.relation_stats_locked;
1873 SELECT dbms_stats.lock_database_stats();
1874 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1875  GROUP BY relid
1876  ORDER BY relid;
1877 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
1878  GROUP BY starelid
1879  ORDER BY starelid;
1880 SELECT dbms_stats.unlock('st0');
1881 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1882  GROUP BY relid
1883  ORDER BY relid;
1884 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
1885  GROUP BY starelid
1886  ORDER BY starelid;
1887
1888 -- No.13-1-7
1889 DELETE FROM dbms_stats.relation_stats_locked;
1890 SELECT dbms_stats.lock_database_stats();
1891 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1892 SELECT count(*) FROM dbms_stats.column_stats_locked;
1893 SELECT dbms_stats.unlock('s00.s0');
1894 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1895 SELECT count(*) FROM dbms_stats.column_stats_locked;
1896
1897 -- No.13-1-8
1898 DELETE FROM dbms_stats.relation_stats_locked;
1899 SELECT dbms_stats.lock_database_stats();
1900 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1901  GROUP BY relid
1902  ORDER BY relid;
1903 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1904 SELECT dbms_stats.unlock('s0.st0', 'id');
1905 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1906  GROUP BY relid
1907  ORDER BY relid;
1908 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1909
1910 -- No.13-1-9
1911 DELETE FROM dbms_stats.relation_stats_locked;
1912 SELECT dbms_stats.lock_database_stats();
1913 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1914  GROUP BY relid
1915  ORDER BY relid;
1916 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1917 SELECT dbms_stats.unlock('s0.st0', 'dummy');
1918 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1919  GROUP BY relid
1920  ORDER BY relid;
1921 SELECT starelid, attname, stainherit FROM columns_locked_v c;
1922
1923 -- No.13-1-10
1924 DELETE FROM dbms_stats.relation_stats_locked;
1925 SELECT dbms_stats.lock_database_stats();
1926 DELETE FROM dbms_stats.column_stats_locked;
1927 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1928  GROUP BY relid
1929  ORDER BY relid;
1930 SELECT dbms_stats.unlock('s0.st0', 'id');
1931 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1932  GROUP BY relid
1933  ORDER BY relid;
1934 SELECT starelid::regclass, staattnum FROM dbms_stats.column_stats_locked
1935  GROUP BY starelid, staattnum
1936  ORDER BY starelid, staattnum;
1937
1938 -- No.13-1-11
1939 DELETE FROM dbms_stats.relation_stats_locked;
1940 SELECT dbms_stats.lock_database_stats();
1941 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1942  GROUP BY relid
1943  ORDER BY relid;
1944 SELECT starelid::regclass, staattnum FROM dbms_stats.column_stats_locked
1945  GROUP BY starelid, staattnum
1946  ORDER BY starelid, staattnum;
1947 SELECT dbms_stats.unlock(NULL, 'id');
1948 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1949  GROUP BY relid
1950  ORDER BY relid;
1951 SELECT starelid::regclass, staattnum FROM dbms_stats.column_stats_locked
1952  GROUP BY starelid, staattnum
1953  ORDER BY starelid, staattnum;
1954
1955 -- No.13-1-12
1956 DELETE FROM dbms_stats.relation_stats_locked;
1957 SELECT dbms_stats.lock_database_stats();
1958 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1959  GROUP BY relid
1960  ORDER BY relid;
1961 SELECT starelid::regclass, staattnum FROM dbms_stats.column_stats_locked
1962  GROUP BY starelid, staattnum
1963  ORDER BY starelid, staattnum;
1964 SELECT dbms_stats.unlock('s0.st0', NULL);
1965 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
1966  GROUP BY relid
1967  ORDER BY relid;
1968 SELECT starelid::regclass, staattnum FROM dbms_stats.column_stats_locked
1969  GROUP BY starelid, staattnum
1970  ORDER BY starelid, staattnum;
1971
1972 -- No.13-1-13
1973 DELETE FROM dbms_stats.relation_stats_locked;
1974 VACUUM dbms_stats.relation_stats_locked;  -- in order to avoid auto vacuum
1975 SELECT dbms_stats.lock_database_stats();
1976 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1977 SELECT count(*) FROM dbms_stats.column_stats_locked;
1978 BEGIN;
1979 SELECT * FROM internal_locks;
1980 SELECT dbms_stats.unlock();
1981 SELECT * FROM internal_locks;
1982 COMMIT;
1983 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1984 SELECT count(*) FROM dbms_stats.column_stats_locked;
1985
1986 /*
1987  * No.14-1 dbms_stats.unlock_database_stats
1988  */
1989 -- No.14-1-1
1990 DELETE FROM dbms_stats.relation_stats_locked;
1991 SELECT dbms_stats.lock_database_stats();
1992 SELECT * FROM dbms_stats.backup_history
1993  ORDER BY id;
1994 SELECT count(*) FROM dbms_stats.relation_stats_backup;
1995 SELECT count(*) FROM dbms_stats.column_stats_backup;
1996 SELECT count(*) FROM dbms_stats.relation_stats_locked;
1997 SELECT count(*) FROM dbms_stats.column_stats_locked;
1998 SELECT dbms_stats.unlock_database_stats();
1999 SELECT count(*) FROM dbms_stats.relation_stats_locked;
2000 SELECT count(*) FROM dbms_stats.column_stats_locked;
2001 SELECT * FROM dbms_stats.backup_history
2002  ORDER BY id;
2003 SELECT count(*) FROM dbms_stats.relation_stats_backup;
2004 SELECT count(*) FROM dbms_stats.column_stats_backup;
2005
2006 -- No.14-1-2
2007 DELETE FROM dbms_stats.relation_stats_locked;
2008 SELECT dbms_stats.lock_database_stats();
2009 DELETE FROM dbms_stats.column_stats_locked;
2010 SELECT count(*) FROM dbms_stats.relation_stats_locked;
2011 SELECT dbms_stats.unlock_database_stats();
2012 SELECT count(*) FROM dbms_stats.relation_stats_locked;
2013 SELECT count(*) FROM dbms_stats.column_stats_locked;
2014
2015 -- No.14-1-3
2016 DELETE FROM dbms_stats.relation_stats_locked;
2017 SELECT dbms_stats.unlock_database_stats();
2018 SELECT count(*) FROM dbms_stats.relation_stats_locked;
2019 SELECT count(*) FROM dbms_stats.column_stats_locked;
2020
2021 -- No.14-1-4
2022 DELETE FROM dbms_stats.relation_stats_locked;
2023 VACUUM dbms_stats.relation_stats_locked;  -- in order to avoid auto vacuum
2024 SELECT dbms_stats.lock_database_stats();
2025 SELECT count(*) FROM dbms_stats.relation_stats_locked;
2026 SELECT count(*) FROM dbms_stats.column_stats_locked;
2027 BEGIN;
2028 SELECT * FROM internal_locks;
2029 SELECT dbms_stats.unlock_database_stats();
2030 SELECT * FROM internal_locks;
2031 COMMIT;
2032 SELECT count(*) FROM dbms_stats.relation_stats_locked;
2033 SELECT count(*) FROM dbms_stats.column_stats_locked;
2034
2035 /*
2036  * No.14-2 dbms_stats.unlock_schema_stats
2037  */
2038 -- No.14-2-1
2039 DELETE FROM dbms_stats.relation_stats_locked;
2040 SELECT dbms_stats.lock_database_stats();
2041 SELECT * FROM dbms_stats.backup_history
2042  ORDER BY id;
2043 SELECT count(*) FROM dbms_stats.relation_stats_backup;
2044 SELECT count(*) FROM dbms_stats.column_stats_backup;
2045 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2046  GROUP BY relid
2047  ORDER BY relid;
2048 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2049  GROUP BY starelid
2050  ORDER BY starelid;
2051 SELECT dbms_stats.unlock_schema_stats('s0');
2052 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2053  GROUP BY relid
2054  ORDER BY relid;
2055 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2056  GROUP BY starelid
2057  ORDER BY starelid;
2058 SELECT * FROM dbms_stats.backup_history
2059  ORDER BY id;
2060 SELECT count(*) FROM dbms_stats.relation_stats_backup;
2061 SELECT count(*) FROM dbms_stats.column_stats_backup;
2062
2063 -- No.14-2-2
2064 DELETE FROM dbms_stats.relation_stats_locked;
2065 SELECT dbms_stats.lock_database_stats();
2066 DELETE FROM dbms_stats.column_stats_locked;
2067 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2068  GROUP BY relid
2069  ORDER BY relid;
2070 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2071  GROUP BY starelid
2072  ORDER BY starelid;
2073 SELECT dbms_stats.unlock_schema_stats('s0');
2074 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2075  GROUP BY relid
2076  ORDER BY relid;
2077 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2078  GROUP BY starelid
2079  ORDER BY starelid;
2080
2081 -- No.14-2-3
2082 DELETE FROM dbms_stats.relation_stats_locked;
2083 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2084  GROUP BY relid
2085  ORDER BY relid;
2086 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2087  GROUP BY starelid
2088  ORDER BY starelid;
2089 SELECT dbms_stats.unlock_schema_stats('s0');
2090 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2091  GROUP BY relid
2092  ORDER BY relid;
2093 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2094  GROUP BY starelid
2095  ORDER BY starelid;
2096
2097 -- No.14-2-4
2098 DELETE FROM dbms_stats.relation_stats_locked;
2099 SELECT dbms_stats.lock_database_stats();
2100 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2101  GROUP BY relid
2102  ORDER BY relid;
2103 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2104  GROUP BY starelid
2105  ORDER BY starelid;
2106 SELECT dbms_stats.unlock_schema_stats('s0');
2107 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2108  GROUP BY relid
2109  ORDER BY relid;
2110 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2111  GROUP BY starelid
2112  ORDER BY starelid;
2113
2114 -- No.14-2-5
2115 DELETE FROM dbms_stats.relation_stats_locked;
2116 SELECT dbms_stats.lock_database_stats();
2117 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2118  GROUP BY relid
2119  ORDER BY relid;
2120 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2121  GROUP BY starelid
2122  ORDER BY starelid;
2123 SELECT dbms_stats.unlock_schema_stats('s00');
2124 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2125  GROUP BY relid
2126  ORDER BY relid;
2127 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2128  GROUP BY starelid
2129  ORDER BY starelid;
2130
2131 -- No.14-2-6
2132 DELETE FROM dbms_stats.relation_stats_locked;
2133 SELECT dbms_stats.lock_database_stats();
2134 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2135  GROUP BY relid
2136  ORDER BY relid;
2137 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2138  GROUP BY starelid
2139  ORDER BY starelid;
2140 SELECT dbms_stats.unlock_schema_stats('pg_catalog');
2141 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2142  GROUP BY relid
2143  ORDER BY relid;
2144 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2145  GROUP BY starelid
2146  ORDER BY starelid;
2147
2148 -- No.14-2-7
2149 DELETE FROM dbms_stats.relation_stats_locked;
2150 SELECT dbms_stats.lock_database_stats();
2151 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2152  GROUP BY relid
2153  ORDER BY relid;
2154 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2155  GROUP BY starelid
2156  ORDER BY starelid;
2157 SELECT dbms_stats.unlock_schema_stats(NULL);
2158 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2159  GROUP BY relid
2160  ORDER BY relid;
2161 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2162  GROUP BY starelid
2163  ORDER BY starelid;
2164
2165 -- No.14-2-8
2166 DELETE FROM dbms_stats.relation_stats_locked;
2167 VACUUM dbms_stats.relation_stats_locked;  -- in order to avoid auto vacuum
2168 SELECT dbms_stats.lock_database_stats();
2169 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2170  GROUP BY relid
2171  ORDER BY relid;
2172 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2173  GROUP BY starelid
2174  ORDER BY starelid;
2175 BEGIN;
2176 SELECT * FROM internal_locks;
2177 SELECT dbms_stats.unlock_schema_stats('s0');
2178 SELECT * FROM internal_locks;
2179 COMMIT;
2180 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2181  GROUP BY relid
2182  ORDER BY relid;
2183 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2184  GROUP BY starelid
2185  ORDER BY starelid;
2186
2187 /*
2188  * No.14-3 dbms_stats.unlock_table_stats(regclass)
2189  */
2190 -- No.14-3-1
2191 DELETE FROM dbms_stats.relation_stats_locked;
2192 SELECT dbms_stats.lock_database_stats();
2193 SELECT * FROM dbms_stats.backup_history
2194  ORDER BY id;
2195 SELECT count(*) FROM dbms_stats.relation_stats_backup;
2196 SELECT count(*) FROM dbms_stats.column_stats_backup;
2197 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2198  GROUP BY relid
2199  ORDER BY relid;
2200 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2201  GROUP BY starelid
2202  ORDER BY starelid;
2203 SELECT dbms_stats.unlock_table_stats('s0.st0');
2204 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2205  GROUP BY relid
2206  ORDER BY relid;
2207 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2208  GROUP BY starelid
2209  ORDER BY starelid;
2210 SELECT * FROM dbms_stats.backup_history
2211  ORDER BY id;
2212 SELECT count(*) FROM dbms_stats.relation_stats_backup;
2213 SELECT count(*) FROM dbms_stats.column_stats_backup;
2214
2215 -- No.14-3-2
2216 DELETE FROM dbms_stats.relation_stats_locked;
2217 SELECT dbms_stats.lock_database_stats();
2218 DELETE FROM dbms_stats.column_stats_locked;
2219 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2220  GROUP BY relid
2221  ORDER BY relid;
2222 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2223  GROUP BY starelid
2224  ORDER BY starelid;
2225 SELECT dbms_stats.unlock_table_stats('s0.st0');
2226 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2227  GROUP BY relid
2228  ORDER BY relid;
2229 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2230  GROUP BY starelid
2231  ORDER BY starelid;
2232
2233 -- No.14-3-3
2234 DELETE FROM dbms_stats.relation_stats_locked;
2235 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2236  GROUP BY relid
2237  ORDER BY relid;
2238 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2239  GROUP BY starelid
2240  ORDER BY starelid;
2241 SELECT dbms_stats.unlock_table_stats('s0.st0');
2242 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2243  GROUP BY relid
2244  ORDER BY relid;
2245 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2246  GROUP BY starelid
2247  ORDER BY starelid;
2248
2249 -- No.14-3-4
2250 DELETE FROM dbms_stats.relation_stats_locked;
2251 SELECT dbms_stats.lock_database_stats();
2252 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2253  GROUP BY relid
2254  ORDER BY relid;
2255 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2256  GROUP BY starelid
2257  ORDER BY starelid;
2258 SELECT dbms_stats.unlock_table_stats('s0.st0');
2259 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2260  GROUP BY relid
2261  ORDER BY relid;
2262 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2263  GROUP BY starelid
2264  ORDER BY starelid;
2265
2266 -- No.14-3-5
2267 DELETE FROM dbms_stats.relation_stats_locked;
2268 SELECT dbms_stats.lock_database_stats();
2269 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2270  GROUP BY relid
2271  ORDER BY relid;
2272 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2273  GROUP BY starelid
2274  ORDER BY starelid;
2275 SELECT dbms_stats.unlock_table_stats('st0');
2276 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2277  GROUP BY relid
2278  ORDER BY relid;
2279 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2280  GROUP BY starelid
2281  ORDER BY starelid;
2282
2283 -- No.14-3-6
2284 DELETE FROM dbms_stats.relation_stats_locked;
2285 SELECT dbms_stats.lock_database_stats();
2286 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2287  GROUP BY relid
2288  ORDER BY relid;
2289 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2290  GROUP BY starelid
2291  ORDER BY starelid;
2292 SELECT dbms_stats.unlock_table_stats('s00.s0');
2293 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2294  GROUP BY relid
2295  ORDER BY relid;
2296 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2297  GROUP BY starelid
2298  ORDER BY starelid;
2299
2300 -- No.14-3-7
2301 DELETE FROM dbms_stats.relation_stats_locked;
2302 SELECT dbms_stats.lock_database_stats();
2303 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2304  GROUP BY relid
2305  ORDER BY relid;
2306 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2307  GROUP BY starelid
2308  ORDER BY starelid;
2309 SELECT dbms_stats.unlock_table_stats(NULL);
2310 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2311  GROUP BY relid
2312  ORDER BY relid;
2313 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2314  GROUP BY starelid
2315  ORDER BY starelid;
2316
2317 -- No.14-3-8
2318 DELETE FROM dbms_stats.relation_stats_locked;
2319 VACUUM dbms_stats.relation_stats_locked;  -- in order to avoid auto vacuum
2320 SELECT dbms_stats.lock_database_stats();
2321 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2322  GROUP BY relid
2323  ORDER BY relid;
2324 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2325  GROUP BY starelid
2326  ORDER BY starelid;
2327 BEGIN;
2328 SELECT * FROM internal_locks;
2329 SELECT dbms_stats.unlock_table_stats('s0.st0');
2330 SELECT * FROM internal_locks;
2331 COMMIT;
2332 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2333  GROUP BY relid
2334  ORDER BY relid;
2335 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2336  GROUP BY starelid
2337  ORDER BY starelid;
2338
2339 /*
2340  * No.14-4 dbms_stats.unlock_table_stats(schemaname, tablename)
2341  */
2342 -- No.14-4-1
2343 DELETE FROM dbms_stats.relation_stats_locked;
2344 SELECT dbms_stats.lock_database_stats();
2345 SELECT * FROM dbms_stats.backup_history
2346  ORDER BY id;
2347 SELECT count(*) FROM dbms_stats.relation_stats_backup;
2348 SELECT count(*) FROM dbms_stats.column_stats_backup;
2349 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2350  GROUP BY relid
2351  ORDER BY relid;
2352 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2353  GROUP BY starelid
2354  ORDER BY starelid;
2355 SELECT dbms_stats.unlock_table_stats('s0','st0');
2356 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2357  GROUP BY relid
2358  ORDER BY relid;
2359 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2360  GROUP BY starelid
2361  ORDER BY starelid;
2362 SELECT * FROM dbms_stats.backup_history
2363  ORDER BY id;
2364 SELECT count(*) FROM dbms_stats.relation_stats_backup;
2365 SELECT count(*) FROM dbms_stats.column_stats_backup;
2366
2367 -- No.14-4-2
2368 DELETE FROM dbms_stats.relation_stats_locked;
2369 SELECT dbms_stats.lock_database_stats();
2370 DELETE FROM dbms_stats.column_stats_locked;
2371 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2372  GROUP BY relid
2373  ORDER BY relid;
2374 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2375  GROUP BY starelid
2376  ORDER BY starelid;
2377 SELECT dbms_stats.unlock_table_stats('s0', 'st0');
2378 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2379  GROUP BY relid
2380  ORDER BY relid;
2381 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2382  GROUP BY starelid
2383  ORDER BY starelid;
2384
2385 -- No.14-4-3
2386 DELETE FROM dbms_stats.relation_stats_locked;
2387 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2388  GROUP BY relid
2389  ORDER BY relid;
2390 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2391  GROUP BY starelid
2392  ORDER BY starelid;
2393 SELECT dbms_stats.unlock_table_stats('s0', 'st0');
2394 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2395  GROUP BY relid
2396  ORDER BY relid;
2397 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2398  GROUP BY starelid
2399  ORDER BY starelid;
2400
2401 -- No.14-4-4
2402 DELETE FROM dbms_stats.relation_stats_locked;
2403 SELECT dbms_stats.lock_database_stats();
2404 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2405  GROUP BY relid
2406  ORDER BY relid;
2407 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2408  GROUP BY starelid
2409  ORDER BY starelid;
2410 SELECT dbms_stats.unlock_table_stats('s0', 'st0');
2411 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2412  GROUP BY relid
2413  ORDER BY relid;
2414 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2415  GROUP BY starelid
2416  ORDER BY starelid;
2417
2418 -- No.14-4-5
2419 DELETE FROM dbms_stats.relation_stats_locked;
2420 SELECT dbms_stats.lock_database_stats();
2421 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2422  GROUP BY relid
2423  ORDER BY relid;
2424 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2425  GROUP BY starelid
2426  ORDER BY starelid;
2427 SELECT dbms_stats.unlock_table_stats('s00', 's0');
2428 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2429  GROUP BY relid
2430  ORDER BY relid;
2431 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2432  GROUP BY starelid
2433  ORDER BY starelid;
2434
2435 -- No.14-4-6
2436 DELETE FROM dbms_stats.relation_stats_locked;
2437 SELECT dbms_stats.lock_database_stats();
2438 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2439  GROUP BY relid
2440  ORDER BY relid;
2441 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2442  GROUP BY starelid
2443  ORDER BY starelid;
2444 SELECT dbms_stats.unlock_table_stats(NULL, 'st0');
2445 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2446  GROUP BY relid
2447  ORDER BY relid;
2448 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2449  GROUP BY starelid
2450  ORDER BY starelid;
2451
2452 -- No.14-4-7
2453 DELETE FROM dbms_stats.relation_stats_locked;
2454 SELECT dbms_stats.lock_database_stats();
2455 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2456  GROUP BY relid
2457  ORDER BY relid;
2458 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2459  GROUP BY starelid
2460  ORDER BY starelid;
2461 SELECT dbms_stats.unlock_table_stats('s0', NULL);
2462 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2463  GROUP BY relid
2464  ORDER BY relid;
2465 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2466  GROUP BY starelid
2467  ORDER BY starelid;
2468
2469 -- No.14-4-8
2470 DELETE FROM dbms_stats.relation_stats_locked;
2471 VACUUM dbms_stats.relation_stats_locked;  -- in order to avoid auto vacuum
2472 SELECT dbms_stats.lock_database_stats();
2473 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2474  GROUP BY relid
2475  ORDER BY relid;
2476 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2477  GROUP BY starelid
2478  ORDER BY starelid;
2479 BEGIN;
2480 SELECT * FROM internal_locks;
2481 SELECT dbms_stats.unlock_table_stats('s0', 'st0');
2482 SELECT * FROM internal_locks;
2483 COMMIT;
2484 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2485  GROUP BY relid
2486  ORDER BY relid;
2487 SELECT starelid::regclass, count(*) FROM dbms_stats.column_stats_locked
2488  GROUP BY starelid
2489  ORDER BY starelid;
2490
2491 /*
2492  * No.14-5 dbms_stats.unlock_column_stats(regclass, attname)
2493  */
2494 -- No.14-5-1
2495 DELETE FROM dbms_stats.relation_stats_locked;
2496 SELECT dbms_stats.lock_database_stats();
2497 SELECT * FROM dbms_stats.backup_history
2498  ORDER BY id;
2499 SELECT count(*) FROM dbms_stats.relation_stats_backup;
2500 SELECT count(*) FROM dbms_stats.column_stats_backup;
2501 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2502  GROUP BY relid
2503  ORDER BY relid;
2504 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2505 SELECT dbms_stats.unlock_column_stats('s0.st0', 'id');
2506 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2507 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2508  GROUP BY relid
2509  ORDER BY relid;
2510 SELECT * FROM dbms_stats.backup_history
2511  ORDER BY id;
2512 SELECT count(*) FROM dbms_stats.relation_stats_backup;
2513 SELECT count(*) FROM dbms_stats.column_stats_backup;
2514
2515 -- No.14-5-2
2516 DELETE FROM dbms_stats.relation_stats_locked;
2517 SELECT dbms_stats.lock_database_stats();
2518 DELETE FROM dbms_stats.column_stats_locked;
2519 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2520  GROUP BY relid
2521  ORDER BY relid;
2522 SELECT dbms_stats.unlock_column_stats('s0.st0', 'id');
2523 SELECT count(*) FROM dbms_stats.column_stats_locked;
2524 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2525  GROUP BY relid
2526  ORDER BY relid;
2527
2528 -- No.14-5-3
2529 DELETE FROM dbms_stats.relation_stats_locked;
2530 SELECT dbms_stats.lock_database_stats();
2531 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2532  GROUP BY relid
2533  ORDER BY relid;
2534 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2535 SELECT dbms_stats.unlock_column_stats('s0.st0', 'id');
2536 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2537 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2538  GROUP BY relid
2539  ORDER BY relid;
2540
2541 -- No.14-5-4
2542 DELETE FROM dbms_stats.relation_stats_locked;
2543 SELECT dbms_stats.lock_database_stats();
2544 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2545  GROUP BY relid
2546  ORDER BY relid;
2547 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2548 SELECT dbms_stats.unlock_column_stats('st0', 'id');
2549 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2550 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2551  GROUP BY relid
2552  ORDER BY relid;
2553
2554 -- No.14-5-5
2555 DELETE FROM dbms_stats.relation_stats_locked;
2556 SELECT dbms_stats.lock_database_stats();
2557 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2558  GROUP BY relid
2559  ORDER BY relid;
2560 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2561 SELECT dbms_stats.unlock_column_stats('s0.st0', 'dummy');
2562 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2563 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2564  GROUP BY relid
2565  ORDER BY relid;
2566
2567 -- No.14-5-6
2568 DELETE FROM dbms_stats.relation_stats_locked;
2569 SELECT dbms_stats.lock_database_stats();
2570 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2571  GROUP BY relid
2572  ORDER BY relid;
2573 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2574 SELECT dbms_stats.unlock_column_stats('s00.s0', 'id');
2575 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2576 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2577  GROUP BY relid
2578  ORDER BY relid;
2579
2580 -- No.14-5-7
2581 DELETE FROM dbms_stats.relation_stats_locked;
2582 SELECT dbms_stats.lock_database_stats();
2583 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2584  GROUP BY relid
2585  ORDER BY relid;
2586 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2587 SELECT dbms_stats.unlock_column_stats(NULL, 'id');
2588 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2589 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2590  GROUP BY relid
2591  ORDER BY relid;
2592
2593 -- No.14-5-8
2594 DELETE FROM dbms_stats.relation_stats_locked;
2595 SELECT dbms_stats.lock_database_stats();
2596 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2597  GROUP BY relid
2598  ORDER BY relid;
2599 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2600 SELECT dbms_stats.unlock_column_stats('s0.st0', NULL);
2601 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2602 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2603  GROUP BY relid
2604  ORDER BY relid;
2605
2606 -- No.14-5-9
2607 DELETE FROM dbms_stats.relation_stats_locked;
2608 VACUUM dbms_stats.relation_stats_locked;  -- in order to avoid auto vacuum
2609 SELECT dbms_stats.lock_database_stats();
2610 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2611  GROUP BY relid
2612  ORDER BY relid;
2613 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2614 BEGIN;
2615 SELECT * FROM internal_locks;
2616 SELECT dbms_stats.unlock_column_stats('s0.st0', 'id');
2617 SELECT * FROM internal_locks;
2618 COMMIT;
2619 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2620 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2621  GROUP BY relid
2622  ORDER BY relid;
2623
2624 /*
2625  * No.14-6 dbms_stats.unlock_column_stats(schemaname, tablename, attname)
2626  */
2627 -- No.14-6-1
2628 DELETE FROM dbms_stats.relation_stats_locked;
2629 SELECT dbms_stats.lock_database_stats();
2630 SELECT * FROM dbms_stats.backup_history
2631  ORDER BY id;
2632 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2633  GROUP BY relid
2634  ORDER BY relid;
2635 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2636 SELECT dbms_stats.unlock_column_stats('s0', 'st0', 'id');
2637 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2638 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2639  GROUP BY relid
2640  ORDER BY relid;
2641 SELECT * FROM dbms_stats.backup_history
2642  ORDER BY id;
2643 SELECT count(*) FROM dbms_stats.relation_stats_backup;
2644 SELECT count(*) FROM dbms_stats.column_stats_backup;
2645
2646 -- No.14-6-2
2647 DELETE FROM dbms_stats.relation_stats_locked;
2648 SELECT dbms_stats.lock_database_stats();
2649 DELETE FROM dbms_stats.column_stats_locked;
2650 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2651  GROUP BY relid
2652  ORDER BY relid;
2653 SELECT dbms_stats.unlock_column_stats('s0', 'st0', 'id');
2654 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2655 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2656  GROUP BY relid
2657  ORDER BY relid;
2658
2659 -- No.14-6-3
2660 DELETE FROM dbms_stats.relation_stats_locked;
2661 SELECT dbms_stats.lock_database_stats();
2662 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2663  GROUP BY relid
2664  ORDER BY relid;
2665 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2666 SELECT dbms_stats.unlock_column_stats('s0', 'st0', 'id');
2667 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2668 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2669  GROUP BY relid
2670  ORDER BY relid;
2671
2672 -- No.14-6-4
2673 DELETE FROM dbms_stats.relation_stats_locked;
2674 SELECT dbms_stats.lock_database_stats();
2675 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2676  GROUP BY relid
2677  ORDER BY relid;
2678 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2679 SELECT dbms_stats.unlock_column_stats('s0', 'st0', 'dummy');
2680 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2681 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2682  GROUP BY relid
2683  ORDER BY relid;
2684
2685 -- No.14-6-5
2686 DELETE FROM dbms_stats.relation_stats_locked;
2687 SELECT dbms_stats.lock_database_stats();
2688 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2689  GROUP BY relid
2690  ORDER BY relid;
2691 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2692 SELECT dbms_stats.unlock_column_stats(NULL, 'st0', 'id');
2693 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2694 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2695  GROUP BY relid
2696  ORDER BY relid;
2697
2698 -- No.14-6-6
2699 DELETE FROM dbms_stats.relation_stats_locked;
2700 SELECT dbms_stats.lock_database_stats();
2701 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2702  GROUP BY relid
2703  ORDER BY relid;
2704 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2705 SELECT dbms_stats.unlock_column_stats('s0', NULL, 'id');
2706 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2707 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2708  GROUP BY relid
2709  ORDER BY relid;
2710
2711 -- No.14-6-7
2712 DELETE FROM dbms_stats.relation_stats_locked;
2713 SELECT dbms_stats.lock_database_stats();
2714 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2715  GROUP BY relid
2716  ORDER BY relid;
2717 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2718 SELECT dbms_stats.unlock_column_stats('s0', 'st0', NULL);
2719 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2720 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2721  GROUP BY relid
2722  ORDER BY relid;
2723
2724 -- No.14-6-8
2725 DELETE FROM dbms_stats.relation_stats_locked;
2726 VACUUM dbms_stats.relation_stats_locked;  -- in order to avoid auto vacuum
2727 SELECT dbms_stats.lock_database_stats();
2728 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2729  GROUP BY relid
2730  ORDER BY relid;
2731 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2732 BEGIN;
2733 SELECT * FROM internal_locks;
2734 SELECT dbms_stats.unlock_column_stats('s0', 'st0', 'id');
2735 SELECT * FROM internal_locks;
2736 COMMIT;
2737 SELECT starelid, attname, stainherit FROM columns_locked_v c;
2738 SELECT relid::regclass FROM dbms_stats.relation_stats_locked
2739  GROUP BY relid
2740  ORDER BY relid;
2741
2742 -- No.15 error description. -- abnormal case.
2743 RESET SESSION AUTHORIZATION;
2744 CREATE TABLE s0.st4 (a int, b text);
2745 CREATE VIEW s0.vst4 AS select * FROM s0.st4;
2746 GRANT SELECT ON s0.vst4 TO regular_user;
2747
2748 ALTER TABLE dbms_stats.relation_stats_locked OWNER TO regular_user;
2749 /* reconnection needed to flush cache */
2750 \c - regular_user
2751
2752 EXPLAIN (COSTS OFF) SELECT * FROM s0.vst4 WHERE a = 1;
2753
2754 \c - super_user
2755 ALTER TABLE dbms_stats.relation_stats_locked OWNER TO super_user;
2756 DROP TABLE s0.st4 CASCADE;