]> granicus.if.org Git - postgresql/blob - contrib/cube/expected/cube.out
Remove test of 'inf' since it introduces a platform dependency (some
[postgresql] / contrib / cube / expected / cube.out
1 --
2 --  Test cube datatype
3 --
4 --
5 -- first, define the datatype.  Turn off echoing so that expected file
6 -- does not depend on contents of cube.sql.
7 --
8 \set ECHO none
9 --
10 -- testing the input and output functions
11 --
12 -- Any number (a one-dimensional point)
13 SELECT '1'::cube AS cube;
14  cube 
15 ------
16  (1)
17 (1 row)
18
19 SELECT '-1'::cube AS cube;
20  cube 
21 ------
22  (-1)
23 (1 row)
24
25 SELECT '1.'::cube AS cube;
26  cube 
27 ------
28  (1)
29 (1 row)
30
31 SELECT '-1.'::cube AS cube;
32  cube 
33 ------
34  (-1)
35 (1 row)
36
37 SELECT '.1'::cube AS cube;
38  cube  
39 -------
40  (0.1)
41 (1 row)
42
43 SELECT '-.1'::cube AS cube;
44 ERROR:  parse error, expecting `FLOAT' or `O_PAREN' or `O_BRACKET' at or before position 2, character ('.', \056), input: '-.1'
45
46 SELECT '1.0'::cube AS cube;
47  cube 
48 ------
49  (1)
50 (1 row)
51
52 SELECT '-1.0'::cube AS cube;
53  cube 
54 ------
55  (-1)
56 (1 row)
57
58 SELECT '1e7'::cube AS cube;
59   cube   
60 ---------
61  (1e+07)
62 (1 row)
63
64 SELECT '-1e7'::cube AS cube;
65    cube   
66 ----------
67  (-1e+07)
68 (1 row)
69
70 SELECT '1.0e7'::cube AS cube;
71   cube   
72 ---------
73  (1e+07)
74 (1 row)
75
76 SELECT '-1.0e7'::cube AS cube;
77    cube   
78 ----------
79  (-1e+07)
80 (1 row)
81
82 SELECT '1e+7'::cube AS cube;
83   cube   
84 ---------
85  (1e+07)
86 (1 row)
87
88 SELECT '-1e+7'::cube AS cube;
89    cube   
90 ----------
91  (-1e+07)
92 (1 row)
93
94 SELECT '1.0e+7'::cube AS cube;
95   cube   
96 ---------
97  (1e+07)
98 (1 row)
99
100 SELECT '-1.0e+7'::cube AS cube;
101    cube   
102 ----------
103  (-1e+07)
104 (1 row)
105
106 SELECT '1e-7'::cube AS cube;
107   cube   
108 ---------
109  (1e-07)
110 (1 row)
111
112 SELECT '-1e-7'::cube AS cube;
113    cube   
114 ----------
115  (-1e-07)
116 (1 row)
117
118 SELECT '1.0e-7'::cube AS cube;
119   cube   
120 ---------
121  (1e-07)
122 (1 row)
123
124 SELECT '-1.0e-7'::cube AS cube;
125    cube   
126 ----------
127  (-1e-07)
128 (1 row)
129
130 SELECT '1e-700'::cube AS cube;
131  cube 
132 ------
133  (0)
134 (1 row)
135
136 SELECT '-1e-700'::cube AS cube;
137  cube 
138 ------
139  (0)
140 (1 row)
141
142 -- simple lists (points)
143 SELECT '1,2'::cube AS cube;
144   cube  
145 --------
146  (1, 2)
147 (1 row)
148
149 SELECT '(1,2)'::cube AS cube;
150   cube  
151 --------
152  (1, 2)
153 (1 row)
154
155 SELECT '1,2,3,4,5'::cube AS cube;
156       cube       
157 -----------------
158  (1, 2, 3, 4, 5)
159 (1 row)
160
161 SELECT '(1,2,3,4,5)'::cube AS cube;
162       cube       
163 -----------------
164  (1, 2, 3, 4, 5)
165 (1 row)
166
167 -- double lists (cubes)
168 SELECT '(0),(0)'::cube AS cube;
169  cube 
170 ------
171  (0)
172 (1 row)
173
174 SELECT '(0),(1)'::cube AS cube;
175   cube   
176 ---------
177  (0),(1)
178 (1 row)
179
180 SELECT '[(0),(0)]'::cube AS cube;
181  cube 
182 ------
183  (0)
184 (1 row)
185
186 SELECT '[(0),(1)]'::cube AS cube;
187   cube   
188 ---------
189  (0),(1)
190 (1 row)
191
192 SELECT '(0,0,0,0),(0,0,0,0)'::cube AS cube;
193      cube     
194 --------------
195  (0, 0, 0, 0)
196 (1 row)
197
198 SELECT '(0,0,0,0),(1,0,0,0)'::cube AS cube;
199            cube            
200 ---------------------------
201  (0, 0, 0, 0),(1, 0, 0, 0)
202 (1 row)
203
204 SELECT '[(0,0,0,0),(0,0,0,0)]'::cube AS cube;
205      cube     
206 --------------
207  (0, 0, 0, 0)
208 (1 row)
209
210 SELECT '[(0,0,0,0),(1,0,0,0)]'::cube AS cube;
211            cube            
212 ---------------------------
213  (0, 0, 0, 0),(1, 0, 0, 0)
214 (1 row)
215
216 -- invalid input: parse errors
217 SELECT ''::cube AS cube;
218 ERROR:  cube_in: can't parse an empty string
219 SELECT 'ABC'::cube AS cube;
220 ERROR:  parse error, expecting `FLOAT' or `O_PAREN' or `O_BRACKET' at or before position 1, character ('A', \101), input: 'ABC'
221
222 SELECT '()'::cube AS cube;
223 ERROR:  parse error, expecting `FLOAT' at or before position 2, character (')', \051), input: '()'
224
225 SELECT '[]'::cube AS cube;
226 ERROR:  parse error, expecting `O_PAREN' at or before position 2, character (']', \135), input: '[]'
227
228 SELECT '[()]'::cube AS cube;
229 ERROR:  parse error, expecting `FLOAT' at or before position 3, character (')', \051), input: '[()]'
230
231 SELECT '[(1)]'::cube AS cube;
232 ERROR:  parse error, expecting `COMMA' at or before position 5, character (']', \135), input: '[(1)]'
233
234 SELECT '[(1),]'::cube AS cube;
235 ERROR:  parse error, expecting `O_PAREN' at or before position 6, character (']', \135), input: '[(1),]'
236
237 SELECT '[(1),2]'::cube AS cube;
238 ERROR:  parse error, expecting `O_PAREN' at or before position 7, character (']', \135), input: '[(1),2]'
239
240 SELECT '[(1),(2),(3)]'::cube AS cube;
241 ERROR:  parse error, expecting `C_BRACKET' at or before position 9, character (',', \054), input: '[(1),(2),(3)]'
242
243 SELECT '1,'::cube AS cube;
244 ERROR:  parse error, expecting `FLOAT' at or before position 2, character (',', \054), input: '1,'
245
246 SELECT '1,2,'::cube AS cube;
247 ERROR:  parse error, expecting `FLOAT' at or before position 4, character (',', \054), input: '1,2,'
248
249 SELECT '1,,2'::cube AS cube;
250 ERROR:  parse error, expecting `FLOAT' at or before position 3, character (',', \054), input: '1,,2'
251
252 SELECT '(1,)'::cube AS cube;
253 ERROR:  parse error, expecting `FLOAT' at or before position 4, character (')', \051), input: '(1,)'
254
255 SELECT '(1,2,)'::cube AS cube;
256 ERROR:  parse error, expecting `FLOAT' at or before position 6, character (')', \051), input: '(1,2,)'
257
258 SELECT '(1,,2)'::cube AS cube;
259 ERROR:  parse error, expecting `FLOAT' at or before position 4, character (',', \054), input: '(1,,2)'
260
261 -- invalid input: semantic errors and trailing garbage
262 SELECT '[(1),(2)],'::cube AS cube; -- 0
263 ERROR:  (0) bad cube representation; garbage at or before char 9, (',', \054)
264
265 SELECT '[(1,2,3),(2,3)]'::cube AS cube; -- 1
266 ERROR:  (1) bad cube representation; different point dimensions in (1,2,3) and (2,3)
267
268 SELECT '[(1,2),(1,2,3)]'::cube AS cube; -- 1
269 ERROR:  (1) bad cube representation; different point dimensions in (1,2) and (1,2,3)
270
271 SELECT '(1),(2),'::cube AS cube; -- 2
272 ERROR:  (2) bad cube representation; garbage at or before char 7, (',', \054)
273
274 SELECT '(1,2,3),(2,3)'::cube AS cube; -- 3
275 ERROR:  (3) bad cube representation; different point dimensions in (1,2,3) and (2,3)
276
277 SELECT '(1,2),(1,2,3)'::cube AS cube; -- 3
278 ERROR:  (3) bad cube representation; different point dimensions in (1,2) and (1,2,3)
279
280 SELECT '(1,2,3)ab'::cube AS cube; -- 4
281 ERROR:  (4) bad cube representation; garbage at or before char 8, ('b', \142)
282
283 SELECT '(1,2,3)a'::cube AS cube; -- 5
284 ERROR:  (5) bad cube representation; garbage at or before char 8, ('end of input', \000)
285
286 SELECT '(1,2)('::cube AS cube; -- 5
287 ERROR:  (5) bad cube representation; garbage at or before char 6, ('end of input', \000)
288
289 SELECT '1,2ab'::cube AS cube; -- 6
290 ERROR:  (6) bad cube representation; garbage at or before char 4, ('b', \142)
291
292 SELECT '1 e7'::cube AS cube; -- 6
293 ERROR:  (6) bad cube representation; garbage at or before char 3, ('7', \067)
294
295 SELECT '1,2a'::cube AS cube; -- 7
296 ERROR:  (7) bad cube representation; garbage at or before char 4, ('end of input', \000)
297
298 SELECT '1..2'::cube AS cube; -- 7
299 ERROR:  (7) bad cube representation; garbage at or before char 4, ('end of input', \000)
300
301 --
302 -- testing the  operators
303 --
304 -- equality/inequality:
305 --
306 SELECT '24, 33.20'::cube    =  '24, 33.20'::cube AS bool;
307  bool 
308 ------
309  t
310 (1 row)
311
312 SELECT '24, 33.20'::cube    != '24, 33.20'::cube AS bool;
313  bool 
314 ------
315  f
316 (1 row)
317
318 SELECT '24, 33.20'::cube    =  '24, 33.21'::cube AS bool;
319  bool 
320 ------
321  f
322 (1 row)
323
324 SELECT '24, 33.20'::cube    != '24, 33.21'::cube AS bool;
325  bool 
326 ------
327  t
328 (1 row)
329
330 SELECT '(2,0),(3,1)'::cube  =  '(2,0,0,0,0),(3,1,0,0,0)'::cube AS bool;
331  bool 
332 ------
333  t
334 (1 row)
335
336 SELECT '(2,0),(3,1)'::cube  =  '(2,0,0,0,0),(3,1,0,0,1)'::cube AS bool;
337  bool 
338 ------
339  f
340 (1 row)
341
342 -- "lower than" / "greater than"
343 -- (these operators are not useful for anything but ordering)
344 --
345 SELECT '1'::cube   > '2'::cube AS bool;
346  bool 
347 ------
348  f
349 (1 row)
350
351 SELECT '1'::cube   < '2'::cube AS bool;
352  bool 
353 ------
354  t
355 (1 row)
356
357 SELECT '1,1'::cube > '1,2'::cube AS bool;
358  bool 
359 ------
360  f
361 (1 row)
362
363 SELECT '1,1'::cube < '1,2'::cube AS bool;
364  bool 
365 ------
366  t
367 (1 row)
368
369 SELECT '(2,0),(3,1)'::cube             > '(2,0,0,0,0),(3,1,0,0,1)'::cube AS bool;
370  bool 
371 ------
372  f
373 (1 row)
374
375 SELECT '(2,0),(3,1)'::cube             < '(2,0,0,0,0),(3,1,0,0,1)'::cube AS bool;
376  bool 
377 ------
378  t
379 (1 row)
380
381 SELECT '(2,0),(3,1)'::cube             > '(2,0,0,0,1),(3,1,0,0,0)'::cube AS bool;
382  bool 
383 ------
384  f
385 (1 row)
386
387 SELECT '(2,0),(3,1)'::cube             < '(2,0,0,0,1),(3,1,0,0,0)'::cube AS bool;
388  bool 
389 ------
390  t
391 (1 row)
392
393 SELECT '(2,0),(3,1)'::cube             > '(2,0,0,0,0),(3,1,0,0,0)'::cube AS bool;
394  bool 
395 ------
396  f
397 (1 row)
398
399 SELECT '(2,0),(3,1)'::cube             < '(2,0,0,0,0),(3,1,0,0,0)'::cube AS bool;
400  bool 
401 ------
402  t
403 (1 row)
404
405 SELECT '(2,0,0,0,0),(3,1,0,0,1)'::cube > '(2,0),(3,1)'::cube AS bool;
406  bool 
407 ------
408  t
409 (1 row)
410
411 SELECT '(2,0,0,0,0),(3,1,0,0,1)'::cube < '(2,0),(3,1)'::cube AS bool;
412  bool 
413 ------
414  f
415 (1 row)
416
417 SELECT '(2,0,0,0,1),(3,1,0,0,0)'::cube > '(2,0),(3,1)'::cube AS bool;
418  bool 
419 ------
420  t
421 (1 row)
422
423 SELECT '(2,0,0,0,1),(3,1,0,0,0)'::cube < '(2,0),(3,1)'::cube AS bool;
424  bool 
425 ------
426  f
427 (1 row)
428
429 SELECT '(2,0,0,0,0),(3,1,0,0,0)'::cube > '(2,0),(3,1)'::cube AS bool;
430  bool 
431 ------
432  t
433 (1 row)
434
435 SELECT '(2,0,0,0,0),(3,1,0,0,0)'::cube < '(2,0),(3,1)'::cube AS bool;
436  bool 
437 ------
438  f
439 (1 row)
440
441 -- "overlap"
442 --
443 SELECT '1'::cube && '1'::cube AS bool;
444  bool 
445 ------
446  t
447 (1 row)
448
449 SELECT '1'::cube && '2'::cube AS bool;
450  bool 
451 ------
452  f
453 (1 row)
454
455 SELECT '[(-1,-1,-1),(1,1,1)]'::cube && '0'::cube AS bool;
456  bool 
457 ------
458  t
459 (1 row)
460
461 SELECT '[(-1,-1,-1),(1,1,1)]'::cube && '1'::cube AS bool;
462  bool 
463 ------
464  t
465 (1 row)
466
467 SELECT '[(-1,-1,-1),(1,1,1)]'::cube && '1,1,1'::cube AS bool;
468  bool 
469 ------
470  t
471 (1 row)
472
473 SELECT '[(-1,-1,-1),(1,1,1)]'::cube && '[(1,1,1),(2,2,2)]'::cube AS bool;
474  bool 
475 ------
476  t
477 (1 row)
478
479 SELECT '[(-1,-1,-1),(1,1,1)]'::cube && '[(1,1),(2,2)]'::cube AS bool;
480  bool 
481 ------
482  t
483 (1 row)
484
485 SELECT '[(-1,-1,-1),(1,1,1)]'::cube && '[(2,1,1),(2,2,2)]'::cube AS bool;
486  bool 
487 ------
488  f
489 (1 row)
490
491 -- "overlap on the left" / "overlap on the right"
492 -- (these operators are not useful at all but R-tree seems to be
493 -- sensitive to their presence)
494 --
495 SELECT '1'::cube &< '0'::cube AS bool;
496  bool 
497 ------
498  f
499 (1 row)
500
501 SELECT '1'::cube &< '1'::cube AS bool;
502  bool 
503 ------
504  t
505 (1 row)
506
507 SELECT '1'::cube &< '2'::cube AS bool;
508  bool 
509 ------
510  f
511 (1 row)
512
513 SELECT '(0),(1)'::cube &< '0'::cube AS bool;
514  bool 
515 ------
516  t
517 (1 row)
518
519 SELECT '(0),(1)'::cube &< '1'::cube AS bool;
520  bool 
521 ------
522  f
523 (1 row)
524
525 SELECT '(0),(1)'::cube &< '(0),(0.5)'::cube AS bool;
526  bool 
527 ------
528  t
529 (1 row)
530
531 SELECT '(0),(1)'::cube &< '(0),(1)'::cube AS bool;
532  bool 
533 ------
534  t
535 (1 row)
536
537 SELECT '(0),(1)'::cube &< '(0),(2)'::cube AS bool;
538  bool 
539 ------
540  t
541 (1 row)
542
543 SELECT '(0),(1)'::cube &< '(1),(2)'::cube AS bool;
544  bool 
545 ------
546  f
547 (1 row)
548
549 SELECT '(0),(1)'::cube &< '(2),(3)'::cube AS bool;
550  bool 
551 ------
552  f
553 (1 row)
554
555 SELECT '0'::cube &> '1'::cube AS bool;
556  bool 
557 ------
558  f
559 (1 row)
560
561 SELECT '1'::cube &> '1'::cube AS bool;
562  bool 
563 ------
564  t
565 (1 row)
566
567 SELECT '2'::cube &> '1'::cube AS bool;
568  bool 
569 ------
570  f
571 (1 row)
572
573 SELECT '0'::cube        &> '(0),(1)'::cube AS bool;
574  bool 
575 ------
576  t
577 (1 row)
578
579 SELECT '1'::cube        &> '(0),(1)'::cube AS bool;
580  bool 
581 ------
582  f
583 (1 row)
584
585 SELECT '(0),(0.5)'      &> '(0),(1)'::cube AS bool;
586  bool 
587 ------
588  t
589 (1 row)
590
591 SELECT '(0),(1)'::cube  &> '(0),(1)'::cube AS bool;
592  bool 
593 ------
594  t
595 (1 row)
596
597 SELECT '(0),(2)'::cube  &> '(0),(1)'::cube AS bool;
598  bool 
599 ------
600  t
601 (1 row)
602
603 SELECT '(1),(2)'::cube  &> '(0),(1)'::cube AS bool;
604  bool 
605 ------
606  f
607 (1 row)
608
609 SELECT '(2),(3)'::cube  &> '(0),(1)'::cube AS bool;
610  bool 
611 ------
612  f
613 (1 row)
614
615 -- "left" / "right"
616 -- (these operators are not useful but for 1-D or 2-D cubes, but R-tree
617 -- seems to want them defined)
618 --
619 SELECT '1'::cube << '0'::cube AS bool;
620  bool 
621 ------
622  f
623 (1 row)
624
625 SELECT '1'::cube << '1'::cube AS bool;
626  bool 
627 ------
628  f
629 (1 row)
630
631 SELECT '1'::cube << '2'::cube AS bool;
632  bool 
633 ------
634  t
635 (1 row)
636
637 SELECT '(0),(1)'::cube << '0'::cube AS bool;
638  bool 
639 ------
640  f
641 (1 row)
642
643 SELECT '(0),(1)'::cube << '1'::cube AS bool;
644  bool 
645 ------
646  t
647 (1 row)
648
649 SELECT '(0),(1)'::cube << '(0),(0.5)'::cube AS bool;
650  bool 
651 ------
652  f
653 (1 row)
654
655 SELECT '(0),(1)'::cube << '(0),(1)'::cube AS bool;
656  bool 
657 ------
658  f
659 (1 row)
660
661 SELECT '(0),(1)'::cube << '(0),(2)'::cube AS bool;
662  bool 
663 ------
664  f
665 (1 row)
666
667 SELECT '(0),(1)'::cube << '(1),(2)'::cube AS bool;
668  bool 
669 ------
670  t
671 (1 row)
672
673 SELECT '(0),(1)'::cube << '(2),(3)'::cube AS bool;
674  bool 
675 ------
676  t
677 (1 row)
678
679 SELECT '0'::cube >> '1'::cube AS bool;
680  bool 
681 ------
682  f
683 (1 row)
684
685 SELECT '1'::cube >> '1'::cube AS bool;
686  bool 
687 ------
688  f
689 (1 row)
690
691 SELECT '2'::cube >> '1'::cube AS bool;
692  bool 
693 ------
694  t
695 (1 row)
696
697 SELECT '0'::cube        >> '(0),(1)'::cube AS bool;
698  bool 
699 ------
700  f
701 (1 row)
702
703 SELECT '1'::cube        >> '(0),(1)'::cube AS bool;
704  bool 
705 ------
706  t
707 (1 row)
708
709 SELECT '(0),(0.5)'      >> '(0),(1)'::cube AS bool;
710  bool 
711 ------
712  f
713 (1 row)
714
715 SELECT '(0),(1)'::cube  >> '(0),(1)'::cube AS bool;
716  bool 
717 ------
718  f
719 (1 row)
720
721 SELECT '(0),(2)'::cube  >> '(0),(1)'::cube AS bool;
722  bool 
723 ------
724  f
725 (1 row)
726
727 SELECT '(1),(2)'::cube  >> '(0),(1)'::cube AS bool;
728  bool 
729 ------
730  t
731 (1 row)
732
733 SELECT '(2),(3)'::cube  >> '(0),(1)'::cube AS bool;
734  bool 
735 ------
736  t
737 (1 row)
738
739 -- "contained in" (the left operand is the cube entirely enclosed by
740 -- the right operand):
741 --
742 SELECT '0'::cube                 ~ '0'::cube                        AS bool;
743  bool 
744 ------
745  t
746 (1 row)
747
748 SELECT '0,0,0'::cube             ~ '0,0,0'::cube                    AS bool;
749  bool 
750 ------
751  t
752 (1 row)
753
754 SELECT '0,0'::cube               ~ '0,0,1'::cube                    AS bool;
755  bool 
756 ------
757  t
758 (1 row)
759
760 SELECT '0,0,0'::cube             ~ '0,0,1'::cube                    AS bool;
761  bool 
762 ------
763  f
764 (1 row)
765
766 SELECT '1,0,0'::cube             ~ '0,0,1'::cube                    AS bool;
767  bool 
768 ------
769  f
770 (1 row)
771
772 SELECT '(1,0,0),(0,0,1)'::cube   ~ '(1,0,0),(0,0,1)'::cube          AS bool;
773  bool 
774 ------
775  t
776 (1 row)
777
778 SELECT '(1,0,0),(0,0,1)'::cube   ~ '(-1,-1,-1),(1,1,1)'::cube       AS bool;
779  bool 
780 ------
781  t
782 (1 row)
783
784 SELECT '(1,0,0),(0,0,1)'::cube   ~ '(-1,-1,-1,-1),(1,1,1,1)'::cube  AS bool;
785  bool 
786 ------
787  t
788 (1 row)
789
790 SELECT '0'::cube                 ~ '(-1),(1)'::cube                 AS bool;
791  bool 
792 ------
793  t
794 (1 row)
795
796 SELECT '1'::cube                 ~ '(-1),(1)'::cube                 AS bool;
797  bool 
798 ------
799  t
800 (1 row)
801
802 SELECT '-1'::cube                ~ '(-1),(1)'::cube                 AS bool;
803  bool 
804 ------
805  t
806 (1 row)
807
808 SELECT '(-1),(1)'::cube          ~ '(-1),(1)'::cube                 AS bool;
809  bool 
810 ------
811  t
812 (1 row)
813
814 SELECT '(-1),(1)'::cube          ~ '(-1,-1),(1,1)'::cube            AS bool;
815  bool 
816 ------
817  t
818 (1 row)
819
820 SELECT '(-2),(1)'::cube          ~ '(-1),(1)'::cube                 AS bool;
821  bool 
822 ------
823  f
824 (1 row)
825
826 SELECT '(-2),(1)'::cube          ~ '(-1,-1),(1,1)'::cube            AS bool;
827  bool 
828 ------
829  f
830 (1 row)
831
832 -- "contains" (the left operand is the cube that entirely encloses the
833 -- right operand)
834 --
835 SELECT '0'::cube                        @ '0'::cube                 AS bool;
836  bool 
837 ------
838  t
839 (1 row)
840
841 SELECT '0,0,0'::cube                    @ '0,0,0'::cube             AS bool;
842  bool 
843 ------
844  t
845 (1 row)
846
847 SELECT '0,0,1'::cube                    @ '0,0'::cube               AS bool;
848  bool 
849 ------
850  t
851 (1 row)
852
853 SELECT '0,0,1'::cube                    @ '0,0,0'::cube             AS bool;
854  bool 
855 ------
856  f
857 (1 row)
858
859 SELECT '0,0,1'::cube                    @ '1,0,0'::cube             AS bool;
860  bool 
861 ------
862  f
863 (1 row)
864
865 SELECT '(1,0,0),(0,0,1)'::cube          @ '(1,0,0),(0,0,1)'::cube   AS bool;
866  bool 
867 ------
868  t
869 (1 row)
870
871 SELECT '(-1,-1,-1),(1,1,1)'::cube       @ '(1,0,0),(0,0,1)'::cube   AS bool;
872  bool 
873 ------
874  t
875 (1 row)
876
877 SELECT '(-1,-1,-1,-1),(1,1,1,1)'::cube  @ '(1,0,0),(0,0,1)'::cube   AS bool;
878  bool 
879 ------
880  t
881 (1 row)
882
883 SELECT '(-1),(1)'::cube                 @ '0'::cube                 AS bool;
884  bool 
885 ------
886  t
887 (1 row)
888
889 SELECT '(-1),(1)'::cube                 @ '1'::cube                 AS bool;
890  bool 
891 ------
892  t
893 (1 row)
894
895 SELECT '(-1),(1)'::cube                 @ '-1'::cube                AS bool;
896  bool 
897 ------
898  t
899 (1 row)
900
901 SELECT '(-1),(1)'::cube                 @ '(-1),(1)'::cube          AS bool;
902  bool 
903 ------
904  t
905 (1 row)
906
907 SELECT '(-1,-1),(1,1)'::cube            @ '(-1),(1)'::cube          AS bool;
908  bool 
909 ------
910  t
911 (1 row)
912
913 SELECT '(-1),(1)'::cube                 @ '(-2),(1)'::cube          AS bool;
914  bool 
915 ------
916  f
917 (1 row)
918
919 SELECT '(-1,-1),(1,1)'::cube            @ '(-2),(1)'::cube          AS bool;
920  bool 
921 ------
922  f
923 (1 row)
924
925 -- Load some example data and build the index
926 -- 
927 CREATE TABLE test_cube (c cube);
928 \copy test_cube from 'data/test_cube.data'
929 CREATE INDEX test_cube_ix ON test_cube USING gist (c);
930 SELECT * FROM test_cube WHERE c && '(3000,1000),(0,0)';
931             c             
932 --------------------------
933  (2424, 160),(2424, 81)
934  (759, 187),(662, 163)
935  (1444, 403),(1346, 344)
936  (337, 455),(240, 359)
937  (1594, 1043),(1517, 971)
938 (5 rows)
939
940 -- Test sorting 
941 SELECT * FROM test_cube WHERE c && '(3000,1000),(0,0)' GROUP BY c;
942             c             
943 --------------------------
944  (337, 455),(240, 359)
945  (759, 187),(662, 163)
946  (1444, 403),(1346, 344)
947  (1594, 1043),(1517, 971)
948  (2424, 160),(2424, 81)
949 (5 rows)
950