OSDN Git Service

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