PolarDB-for-PostgreSQL
698 строк · 10.4 Кб
1CREATE EXTENSION intarray;
2-- Check whether any of our opclasses fail amvalidate
3SELECT amname, opcname
4FROM pg_opclass opc LEFT JOIN pg_am am ON am.oid = opcmethod
5WHERE opc.oid >= 16384 AND NOT amvalidate(opc.oid);
6amname | opcname
7--------+---------
8(0 rows)
9
10SELECT intset(1234);
11intset
12--------
13{1234}
14(1 row)
15
16SELECT icount('{1234234,234234}');
17icount
18--------
192
20(1 row)
21
22SELECT sort('{1234234,-30,234234}');
23sort
24----------------------
25{-30,234234,1234234}
26(1 row)
27
28SELECT sort('{1234234,-30,234234}','asc');
29sort
30----------------------
31{-30,234234,1234234}
32(1 row)
33
34SELECT sort('{1234234,-30,234234}','desc');
35sort
36----------------------
37{1234234,234234,-30}
38(1 row)
39
40SELECT sort_asc('{1234234,-30,234234}');
41sort_asc
42----------------------
43{-30,234234,1234234}
44(1 row)
45
46SELECT sort_desc('{1234234,-30,234234}');
47sort_desc
48----------------------
49{1234234,234234,-30}
50(1 row)
51
52SELECT uniq('{1234234,-30,-30,234234,-30}');
53uniq
54--------------------------
55{1234234,-30,234234,-30}
56(1 row)
57
58SELECT uniq(sort_asc('{1234234,-30,-30,234234,-30}'));
59uniq
60----------------------
61{-30,234234,1234234}
62(1 row)
63
64SELECT idx('{1234234,-30,-30,234234,-30}',-30);
65idx
66-----
672
68(1 row)
69
70SELECT subarray('{1234234,-30,-30,234234,-30}',2,3);
71subarray
72------------------
73{-30,-30,234234}
74(1 row)
75
76SELECT subarray('{1234234,-30,-30,234234,-30}',-1,1);
77subarray
78----------
79{-30}
80(1 row)
81
82SELECT subarray('{1234234,-30,-30,234234,-30}',0,-1);
83subarray
84--------------------------
85{1234234,-30,-30,234234}
86(1 row)
87
88SELECT #'{1234234,234234}'::int[];
89?column?
90----------
912
92(1 row)
93
94SELECT '{123,623,445}'::int[] + 1245;
95?column?
96--------------------
97{123,623,445,1245}
98(1 row)
99
100SELECT '{123,623,445}'::int[] + 445;
101?column?
102-------------------
103{123,623,445,445}
104(1 row)
105
106SELECT '{123,623,445}'::int[] + '{1245,87,445}';
107?column?
108---------------------------
109{123,623,445,1245,87,445}
110(1 row)
111
112SELECT '{123,623,445}'::int[] - 623;
113?column?
114-----------
115{123,445}
116(1 row)
117
118SELECT '{123,623,445}'::int[] - '{1623,623}';
119?column?
120-----------
121{123,445}
122(1 row)
123
124SELECT '{123,623,445}'::int[] | 623;
125?column?
126---------------
127{123,445,623}
128(1 row)
129
130SELECT '{123,623,445}'::int[] | 1623;
131?column?
132--------------------
133{123,445,623,1623}
134(1 row)
135
136SELECT '{123,623,445}'::int[] | '{1623,623}';
137?column?
138--------------------
139{123,445,623,1623}
140(1 row)
141
142SELECT '{123,623,445}'::int[] & '{1623,623}';
143?column?
144----------
145{623}
146(1 row)
147
148SELECT '{-1,3,1}'::int[] & '{1,2}';
149?column?
150----------
151{1}
152(1 row)
153
154SELECT '{1}'::int[] & '{2}'::int[];
155?column?
156----------
157{}
158(1 row)
159
160SELECT array_dims('{1}'::int[] & '{2}'::int[]);
161array_dims
162------------
163
164(1 row)
165
166SELECT ('{1}'::int[] & '{2}'::int[]) = '{}'::int[];
167?column?
168----------
169t
170(1 row)
171
172SELECT ('{}'::int[] & '{}'::int[]) = '{}'::int[];
173?column?
174----------
175t
176(1 row)
177
178--test query_int
179SELECT '1'::query_int;
180query_int
181-----------
1821
183(1 row)
184
185SELECT ' 1'::query_int;
186query_int
187-----------
1881
189(1 row)
190
191SELECT '1 '::query_int;
192query_int
193-----------
1941
195(1 row)
196
197SELECT ' 1 '::query_int;
198query_int
199-----------
2001
201(1 row)
202
203SELECT ' ! 1 '::query_int;
204query_int
205-----------
206!1
207(1 row)
208
209SELECT '!1'::query_int;
210query_int
211-----------
212!1
213(1 row)
214
215SELECT '1|2'::query_int;
216query_int
217-----------
2181 | 2
219(1 row)
220
221SELECT '1|!2'::query_int;
222query_int
223-----------
2241 | !2
225(1 row)
226
227SELECT '!1|2'::query_int;
228query_int
229-----------
230!1 | 2
231(1 row)
232
233SELECT '!1|!2'::query_int;
234query_int
235-----------
236!1 | !2
237(1 row)
238
239SELECT '!(!1|!2)'::query_int;
240query_int
241--------------
242!( !1 | !2 )
243(1 row)
244
245SELECT '!(!1|2)'::query_int;
246query_int
247-------------
248!( !1 | 2 )
249(1 row)
250
251SELECT '!(1|!2)'::query_int;
252query_int
253-------------
254!( 1 | !2 )
255(1 row)
256
257SELECT '!(1|2)'::query_int;
258query_int
259------------
260!( 1 | 2 )
261(1 row)
262
263SELECT '1&2'::query_int;
264query_int
265-----------
2661 & 2
267(1 row)
268
269SELECT '!1&2'::query_int;
270query_int
271-----------
272!1 & 2
273(1 row)
274
275SELECT '1&!2'::query_int;
276query_int
277-----------
2781 & !2
279(1 row)
280
281SELECT '!1&!2'::query_int;
282query_int
283-----------
284!1 & !2
285(1 row)
286
287SELECT '(1&2)'::query_int;
288query_int
289-----------
2901 & 2
291(1 row)
292
293SELECT '1&(2)'::query_int;
294query_int
295-----------
2961 & 2
297(1 row)
298
299SELECT '!(1)&2'::query_int;
300query_int
301-----------
302!1 & 2
303(1 row)
304
305SELECT '!(1&2)'::query_int;
306query_int
307------------
308!( 1 & 2 )
309(1 row)
310
311SELECT '1|2&3'::query_int;
312query_int
313-----------
3141 | 2 & 3
315(1 row)
316
317SELECT '1|(2&3)'::query_int;
318query_int
319-----------
3201 | 2 & 3
321(1 row)
322
323SELECT '(1|2)&3'::query_int;
324query_int
325---------------
326( 1 | 2 ) & 3
327(1 row)
328
329SELECT '1|2&!3'::query_int;
330query_int
331------------
3321 | 2 & !3
333(1 row)
334
335SELECT '1|!2&3'::query_int;
336query_int
337------------
3381 | !2 & 3
339(1 row)
340
341SELECT '!1|2&3'::query_int;
342query_int
343------------
344!1 | 2 & 3
345(1 row)
346
347SELECT '!1|(2&3)'::query_int;
348query_int
349------------
350!1 | 2 & 3
351(1 row)
352
353SELECT '!(1|2)&3'::query_int;
354query_int
355----------------
356!( 1 | 2 ) & 3
357(1 row)
358
359SELECT '(!1|2)&3'::query_int;
360query_int
361----------------
362( !1 | 2 ) & 3
363(1 row)
364
365SELECT '1|(2|(4|(5|6)))'::query_int;
366query_int
367-------------------------------
3681 | ( 2 | ( 4 | ( 5 | 6 ) ) )
369(1 row)
370
371SELECT '1|2|4|5|6'::query_int;
372query_int
373-------------------------------
374( ( ( 1 | 2 ) | 4 ) | 5 ) | 6
375(1 row)
376
377SELECT '1&(2&(4&(5&6)))'::query_int;
378query_int
379-------------------
3801 & 2 & 4 & 5 & 6
381(1 row)
382
383SELECT '1&2&4&5&6'::query_int;
384query_int
385-------------------
3861 & 2 & 4 & 5 & 6
387(1 row)
388
389SELECT '1&(2&(4&(5|6)))'::query_int;
390query_int
391-----------------------
3921 & 2 & 4 & ( 5 | 6 )
393(1 row)
394
395SELECT '1&(2&(4&(5|!6)))'::query_int;
396query_int
397------------------------
3981 & 2 & 4 & ( 5 | !6 )
399(1 row)
400
401CREATE TABLE test__int( a int[] );
402\copy test__int from 'data/test__int.data'
403ANALYZE test__int;
404SELECT count(*) from test__int WHERE a && '{23,50}';
405count
406-------
407403
408(1 row)
409
410SELECT count(*) from test__int WHERE a @@ '23|50';
411count
412-------
413403
414(1 row)
415
416SELECT count(*) from test__int WHERE a @> '{23,50}';
417count
418-------
41912
420(1 row)
421
422SELECT count(*) from test__int WHERE a @@ '23&50';
423count
424-------
42512
426(1 row)
427
428SELECT count(*) from test__int WHERE a @> '{20,23}';
429count
430-------
43112
432(1 row)
433
434SELECT count(*) from test__int WHERE a <@ '{73,23,20}';
435count
436-------
43710
438(1 row)
439
440SELECT count(*) from test__int WHERE a = '{73,23,20}';
441count
442-------
4431
444(1 row)
445
446SELECT count(*) from test__int WHERE a @@ '50&68';
447count
448-------
4499
450(1 row)
451
452SELECT count(*) from test__int WHERE a @> '{20,23}' or a @> '{50,68}';
453count
454-------
45521
456(1 row)
457
458SELECT count(*) from test__int WHERE a @@ '(20&23)|(50&68)';
459count
460-------
46121
462(1 row)
463
464SELECT count(*) from test__int WHERE a @@ '20 | !21';
465count
466-------
4676566
468(1 row)
469
470SELECT count(*) from test__int WHERE a @@ '!20 & !21';
471count
472-------
4736343
474(1 row)
475
476SET enable_seqscan = off; -- not all of these would use index by default
477CREATE INDEX text_idx on test__int using gist ( a gist__int_ops );
478SELECT count(*) from test__int WHERE a && '{23,50}';
479count
480-------
481403
482(1 row)
483
484SELECT count(*) from test__int WHERE a @@ '23|50';
485count
486-------
487403
488(1 row)
489
490SELECT count(*) from test__int WHERE a @> '{23,50}';
491count
492-------
49312
494(1 row)
495
496SELECT count(*) from test__int WHERE a @@ '23&50';
497count
498-------
49912
500(1 row)
501
502SELECT count(*) from test__int WHERE a @> '{20,23}';
503count
504-------
50512
506(1 row)
507
508SELECT count(*) from test__int WHERE a <@ '{73,23,20}';
509count
510-------
51110
512(1 row)
513
514SELECT count(*) from test__int WHERE a = '{73,23,20}';
515count
516-------
5171
518(1 row)
519
520SELECT count(*) from test__int WHERE a @@ '50&68';
521count
522-------
5239
524(1 row)
525
526SELECT count(*) from test__int WHERE a @> '{20,23}' or a @> '{50,68}';
527count
528-------
52921
530(1 row)
531
532SELECT count(*) from test__int WHERE a @@ '(20&23)|(50&68)';
533count
534-------
53521
536(1 row)
537
538SELECT count(*) from test__int WHERE a @@ '20 | !21';
539count
540-------
5416566
542(1 row)
543
544SELECT count(*) from test__int WHERE a @@ '!20 & !21';
545count
546-------
5476343
548(1 row)
549
550DROP INDEX text_idx;
551CREATE INDEX text_idx on test__int using gist ( a gist__intbig_ops );
552SELECT count(*) from test__int WHERE a && '{23,50}';
553count
554-------
555403
556(1 row)
557
558SELECT count(*) from test__int WHERE a @@ '23|50';
559count
560-------
561403
562(1 row)
563
564SELECT count(*) from test__int WHERE a @> '{23,50}';
565count
566-------
56712
568(1 row)
569
570SELECT count(*) from test__int WHERE a @@ '23&50';
571count
572-------
57312
574(1 row)
575
576SELECT count(*) from test__int WHERE a @> '{20,23}';
577count
578-------
57912
580(1 row)
581
582SELECT count(*) from test__int WHERE a <@ '{73,23,20}';
583count
584-------
58510
586(1 row)
587
588SELECT count(*) from test__int WHERE a = '{73,23,20}';
589count
590-------
5911
592(1 row)
593
594SELECT count(*) from test__int WHERE a @@ '50&68';
595count
596-------
5979
598(1 row)
599
600SELECT count(*) from test__int WHERE a @> '{20,23}' or a @> '{50,68}';
601count
602-------
60321
604(1 row)
605
606SELECT count(*) from test__int WHERE a @@ '(20&23)|(50&68)';
607count
608-------
60921
610(1 row)
611
612SELECT count(*) from test__int WHERE a @@ '20 | !21';
613count
614-------
6156566
616(1 row)
617
618SELECT count(*) from test__int WHERE a @@ '!20 & !21';
619count
620-------
6216343
622(1 row)
623
624DROP INDEX text_idx;
625CREATE INDEX text_idx on test__int using gin ( a gin__int_ops );
626SELECT count(*) from test__int WHERE a && '{23,50}';
627count
628-------
629403
630(1 row)
631
632SELECT count(*) from test__int WHERE a @@ '23|50';
633count
634-------
635403
636(1 row)
637
638SELECT count(*) from test__int WHERE a @> '{23,50}';
639count
640-------
64112
642(1 row)
643
644SELECT count(*) from test__int WHERE a @@ '23&50';
645count
646-------
64712
648(1 row)
649
650SELECT count(*) from test__int WHERE a @> '{20,23}';
651count
652-------
65312
654(1 row)
655
656SELECT count(*) from test__int WHERE a <@ '{73,23,20}';
657count
658-------
65910
660(1 row)
661
662SELECT count(*) from test__int WHERE a = '{73,23,20}';
663count
664-------
6651
666(1 row)
667
668SELECT count(*) from test__int WHERE a @@ '50&68';
669count
670-------
6719
672(1 row)
673
674SELECT count(*) from test__int WHERE a @> '{20,23}' or a @> '{50,68}';
675count
676-------
67721
678(1 row)
679
680SELECT count(*) from test__int WHERE a @@ '(20&23)|(50&68)';
681count
682-------
68321
684(1 row)
685
686SELECT count(*) from test__int WHERE a @@ '20 | !21';
687count
688-------
6896566
690(1 row)
691
692SELECT count(*) from test__int WHERE a @@ '!20 & !21';
693count
694-------
6956343
696(1 row)
697
698RESET enable_seqscan;
699