1-- 2-- Test seg datatype 3-- 4CREATE EXTENSION seg; 5-- Check whether any of our opclasses fail amvalidate 6SELECT amname, opcname 7FROM pg_opclass opc LEFT JOIN pg_am am ON am.oid = opcmethod 8WHERE opc.oid >= 16384 AND NOT amvalidate(opc.oid); 9 amname | opcname 10--------+--------- 11(0 rows) 12 13-- 14-- testing the input and output functions 15-- 16-- Any number 17SELECT '1'::seg AS seg; 18 seg 19----- 20 1 21(1 row) 22 23SELECT '-1'::seg AS seg; 24 seg 25----- 26 -1 27(1 row) 28 29SELECT '1.0'::seg AS seg; 30 seg 31----- 32 1.0 33(1 row) 34 35SELECT '-1.0'::seg AS seg; 36 seg 37------ 38 -1.0 39(1 row) 40 41SELECT '1e7'::seg AS seg; 42 seg 43-------- 44 1e+007 45(1 row) 46 47SELECT '-1e7'::seg AS seg; 48 seg 49--------- 50 -1e+007 51(1 row) 52 53SELECT '1.0e7'::seg AS seg; 54 seg 55---------- 56 1.0e+007 57(1 row) 58 59SELECT '-1.0e7'::seg AS seg; 60 seg 61----------- 62 -1.0e+007 63(1 row) 64 65SELECT '1e+7'::seg AS seg; 66 seg 67-------- 68 1e+007 69(1 row) 70 71SELECT '-1e+7'::seg AS seg; 72 seg 73--------- 74 -1e+007 75(1 row) 76 77SELECT '1.0e+7'::seg AS seg; 78 seg 79---------- 80 1.0e+007 81(1 row) 82 83SELECT '-1.0e+7'::seg AS seg; 84 seg 85----------- 86 -1.0e+007 87(1 row) 88 89SELECT '1e-7'::seg AS seg; 90 seg 91-------- 92 1e-007 93(1 row) 94 95SELECT '-1e-7'::seg AS seg; 96 seg 97--------- 98 -1e-007 99(1 row) 100 101SELECT '1.0e-7'::seg AS seg; 102 seg 103---------- 104 1.0e-007 105(1 row) 106 107SELECT '-1.0e-7'::seg AS seg; 108 seg 109----------- 110 -1.0e-007 111(1 row) 112 113SELECT '2e-6'::seg AS seg; 114 seg 115-------- 116 2e-006 117(1 row) 118 119SELECT '2e-5'::seg AS seg; 120 seg 121-------- 122 2e-005 123(1 row) 124 125SELECT '2e-4'::seg AS seg; 126 seg 127-------- 128 0.0002 129(1 row) 130 131SELECT '2e-3'::seg AS seg; 132 seg 133------- 134 0.002 135(1 row) 136 137SELECT '2e-2'::seg AS seg; 138 seg 139------ 140 0.02 141(1 row) 142 143SELECT '2e-1'::seg AS seg; 144 seg 145----- 146 0.2 147(1 row) 148 149SELECT '2e-0'::seg AS seg; 150 seg 151----- 152 2 153(1 row) 154 155SELECT '2e+0'::seg AS seg; 156 seg 157----- 158 2 159(1 row) 160 161SELECT '2e+1'::seg AS seg; 162 seg 163----- 164 2e1 165(1 row) 166 167SELECT '2e+2'::seg AS seg; 168 seg 169----- 170 2e2 171(1 row) 172 173SELECT '2e+3'::seg AS seg; 174 seg 175----- 176 2e3 177(1 row) 178 179SELECT '2e+4'::seg AS seg; 180 seg 181----- 182 2e4 183(1 row) 184 185SELECT '2e+5'::seg AS seg; 186 seg 187-------- 188 2e+005 189(1 row) 190 191SELECT '2e+6'::seg AS seg; 192 seg 193-------- 194 2e+006 195(1 row) 196 197-- Significant digits preserved 198SELECT '1'::seg AS seg; 199 seg 200----- 201 1 202(1 row) 203 204SELECT '1.0'::seg AS seg; 205 seg 206----- 207 1.0 208(1 row) 209 210SELECT '1.00'::seg AS seg; 211 seg 212------ 213 1.00 214(1 row) 215 216SELECT '1.000'::seg AS seg; 217 seg 218------- 219 1.000 220(1 row) 221 222SELECT '1.0000'::seg AS seg; 223 seg 224-------- 225 1.0000 226(1 row) 227 228SELECT '1.00000'::seg AS seg; 229 seg 230--------- 231 1.00000 232(1 row) 233 234SELECT '1.000000'::seg AS seg; 235 seg 236--------- 237 1.00000 238(1 row) 239 240SELECT '0.000000120'::seg AS seg; 241 seg 242----------- 243 1.20e-007 244(1 row) 245 246SELECT '3.400e5'::seg AS seg; 247 seg 248------------ 249 3.400e+005 250(1 row) 251 252-- Digits truncated 253SELECT '12.34567890123456'::seg AS seg; 254 seg 255--------- 256 12.3457 257(1 row) 258 259-- Numbers with certainty indicators 260SELECT '~6.5'::seg AS seg; 261 seg 262------ 263 ~6.5 264(1 row) 265 266SELECT '<6.5'::seg AS seg; 267 seg 268------ 269 <6.5 270(1 row) 271 272SELECT '>6.5'::seg AS seg; 273 seg 274------ 275 >6.5 276(1 row) 277 278SELECT '~ 6.5'::seg AS seg; 279 seg 280------ 281 ~6.5 282(1 row) 283 284SELECT '< 6.5'::seg AS seg; 285 seg 286------ 287 <6.5 288(1 row) 289 290SELECT '> 6.5'::seg AS seg; 291 seg 292------ 293 >6.5 294(1 row) 295 296-- Open intervals 297SELECT '0..'::seg AS seg; 298 seg 299------ 300 0 .. 301(1 row) 302 303SELECT '0...'::seg AS seg; 304 seg 305------ 306 0 .. 307(1 row) 308 309SELECT '0 ..'::seg AS seg; 310 seg 311------ 312 0 .. 313(1 row) 314 315SELECT '0 ...'::seg AS seg; 316 seg 317------ 318 0 .. 319(1 row) 320 321SELECT '..0'::seg AS seg; 322 seg 323------ 324 .. 0 325(1 row) 326 327SELECT '...0'::seg AS seg; 328 seg 329------ 330 .. 0 331(1 row) 332 333SELECT '.. 0'::seg AS seg; 334 seg 335------ 336 .. 0 337(1 row) 338 339SELECT '... 0'::seg AS seg; 340 seg 341------ 342 .. 0 343(1 row) 344 345-- Finite intervals 346SELECT '0 .. 1'::seg AS seg; 347 seg 348-------- 349 0 .. 1 350(1 row) 351 352SELECT '-1 .. 0'::seg AS seg; 353 seg 354--------- 355 -1 .. 0 356(1 row) 357 358SELECT '-1 .. 1'::seg AS seg; 359 seg 360--------- 361 -1 .. 1 362(1 row) 363 364-- (+/-) intervals 365SELECT '0(+-)1'::seg AS seg; 366 seg 367--------- 368 -1 .. 1 369(1 row) 370 371SELECT '0(+-)1.0'::seg AS seg; 372 seg 373------------- 374 -1.0 .. 1.0 375(1 row) 376 377SELECT '1.0(+-)0.005'::seg AS seg; 378 seg 379---------------- 380 0.995 .. 1.005 381(1 row) 382 383SELECT '101(+-)1'::seg AS seg; 384 seg 385------------------ 386 1.00e2 .. 1.02e2 387(1 row) 388 389-- incorrect number of significant digits in 99.0: 390SELECT '100(+-)1'::seg AS seg; 391 seg 392---------------- 393 99.0 .. 1.01e2 394(1 row) 395 396-- invalid input 397SELECT ''::seg AS seg; 398ERROR: bad seg representation 399LINE 1: SELECT ''::seg AS seg; 400 ^ 401DETAIL: syntax error at end of input 402SELECT 'ABC'::seg AS seg; 403ERROR: bad seg representation 404LINE 1: SELECT 'ABC'::seg AS seg; 405 ^ 406DETAIL: syntax error at or near "A" 407SELECT '1ABC'::seg AS seg; 408ERROR: bad seg representation 409LINE 1: SELECT '1ABC'::seg AS seg; 410 ^ 411DETAIL: syntax error at or near "A" 412SELECT '1.'::seg AS seg; 413ERROR: bad seg representation 414LINE 1: SELECT '1.'::seg AS seg; 415 ^ 416DETAIL: syntax error at or near "." 417SELECT '1.....'::seg AS seg; 418ERROR: bad seg representation 419LINE 1: SELECT '1.....'::seg AS seg; 420 ^ 421DETAIL: syntax error at or near ".." 422SELECT '.1'::seg AS seg; 423ERROR: bad seg representation 424LINE 1: SELECT '.1'::seg AS seg; 425 ^ 426DETAIL: syntax error at or near "." 427SELECT '1..2.'::seg AS seg; 428ERROR: bad seg representation 429LINE 1: SELECT '1..2.'::seg AS seg; 430 ^ 431DETAIL: syntax error at or near "." 432SELECT '1 e7'::seg AS seg; 433ERROR: bad seg representation 434LINE 1: SELECT '1 e7'::seg AS seg; 435 ^ 436DETAIL: syntax error at or near "e" 437SELECT '1e700'::seg AS seg; 438ERROR: "1e700" is out of range for type real 439LINE 1: SELECT '1e700'::seg AS seg; 440 ^ 441-- 442-- testing the operators 443-- 444-- equality/inequality: 445-- 446SELECT '24 .. 33.20'::seg = '24 .. 33.20'::seg AS bool; 447 bool 448------ 449 t 450(1 row) 451 452SELECT '24 .. 33.20'::seg = '24 .. 33.21'::seg AS bool; 453 bool 454------ 455 f 456(1 row) 457 458SELECT '24 .. 33.20'::seg != '24 .. 33.20'::seg AS bool; 459 bool 460------ 461 f 462(1 row) 463 464SELECT '24 .. 33.20'::seg != '24 .. 33.21'::seg AS bool; 465 bool 466------ 467 t 468(1 row) 469 470-- overlap 471-- 472SELECT '1'::seg && '1'::seg AS bool; 473 bool 474------ 475 t 476(1 row) 477 478SELECT '1'::seg && '2'::seg AS bool; 479 bool 480------ 481 f 482(1 row) 483 484SELECT '0 ..'::seg && '0 ..'::seg AS bool; 485 bool 486------ 487 t 488(1 row) 489 490SELECT '0 .. 1'::seg && '0 .. 1'::seg AS bool; 491 bool 492------ 493 t 494(1 row) 495 496SELECT '..0'::seg && '0..'::seg AS bool; 497 bool 498------ 499 t 500(1 row) 501 502SELECT '-1 .. 0.1'::seg && '0 .. 1'::seg AS bool; 503 bool 504------ 505 t 506(1 row) 507 508SELECT '-1 .. 0'::seg && '0 .. 1'::seg AS bool; 509 bool 510------ 511 t 512(1 row) 513 514SELECT '-1 .. -0.0001'::seg && '0 .. 1'::seg AS bool; 515 bool 516------ 517 f 518(1 row) 519 520SELECT '0 ..'::seg && '1'::seg AS bool; 521 bool 522------ 523 t 524(1 row) 525 526SELECT '0 .. 1'::seg && '1'::seg AS bool; 527 bool 528------ 529 t 530(1 row) 531 532SELECT '0 .. 1'::seg && '2'::seg AS bool; 533 bool 534------ 535 f 536(1 row) 537 538SELECT '0 .. 2'::seg && '1'::seg AS bool; 539 bool 540------ 541 t 542(1 row) 543 544SELECT '1'::seg && '0 .. 1'::seg AS bool; 545 bool 546------ 547 t 548(1 row) 549 550SELECT '2'::seg && '0 .. 1'::seg AS bool; 551 bool 552------ 553 f 554(1 row) 555 556SELECT '1'::seg && '0 .. 2'::seg AS bool; 557 bool 558------ 559 t 560(1 row) 561 562-- overlap on the left 563-- 564SELECT '1'::seg &< '0'::seg AS bool; 565 bool 566------ 567 f 568(1 row) 569 570SELECT '1'::seg &< '1'::seg AS bool; 571 bool 572------ 573 t 574(1 row) 575 576SELECT '1'::seg &< '2'::seg AS bool; 577 bool 578------ 579 t 580(1 row) 581 582SELECT '0 .. 1'::seg &< '0'::seg AS bool; 583 bool 584------ 585 f 586(1 row) 587 588SELECT '0 .. 1'::seg &< '1'::seg AS bool; 589 bool 590------ 591 t 592(1 row) 593 594SELECT '0 .. 1'::seg &< '2'::seg AS bool; 595 bool 596------ 597 t 598(1 row) 599 600SELECT '0 .. 1'::seg &< '0 .. 0.5'::seg AS bool; 601 bool 602------ 603 f 604(1 row) 605 606SELECT '0 .. 1'::seg &< '0 .. 1'::seg AS bool; 607 bool 608------ 609 t 610(1 row) 611 612SELECT '0 .. 1'::seg &< '0 .. 2'::seg AS bool; 613 bool 614------ 615 t 616(1 row) 617 618SELECT '0 .. 1'::seg &< '1 .. 2'::seg AS bool; 619 bool 620------ 621 t 622(1 row) 623 624SELECT '0 .. 1'::seg &< '2 .. 3'::seg AS bool; 625 bool 626------ 627 t 628(1 row) 629 630-- overlap on the right 631-- 632SELECT '0'::seg &> '1'::seg AS bool; 633 bool 634------ 635 f 636(1 row) 637 638SELECT '1'::seg &> '1'::seg AS bool; 639 bool 640------ 641 t 642(1 row) 643 644SELECT '2'::seg &> '1'::seg AS bool; 645 bool 646------ 647 t 648(1 row) 649 650SELECT '0'::seg &> '0 .. 1'::seg AS bool; 651 bool 652------ 653 t 654(1 row) 655 656SELECT '1'::seg &> '0 .. 1'::seg AS bool; 657 bool 658------ 659 t 660(1 row) 661 662SELECT '2'::seg &> '0 .. 1'::seg AS bool; 663 bool 664------ 665 t 666(1 row) 667 668SELECT '0 .. 0.5'::seg &> '0 .. 1'::seg AS bool; 669 bool 670------ 671 t 672(1 row) 673 674SELECT '0 .. 1'::seg &> '0 .. 1'::seg AS bool; 675 bool 676------ 677 t 678(1 row) 679 680SELECT '0 .. 2'::seg &> '0 .. 2'::seg AS bool; 681 bool 682------ 683 t 684(1 row) 685 686SELECT '1 .. 2'::seg &> '0 .. 1'::seg AS bool; 687 bool 688------ 689 t 690(1 row) 691 692SELECT '2 .. 3'::seg &> '0 .. 1'::seg AS bool; 693 bool 694------ 695 t 696(1 row) 697 698-- left 699-- 700SELECT '1'::seg << '0'::seg AS bool; 701 bool 702------ 703 f 704(1 row) 705 706SELECT '1'::seg << '1'::seg AS bool; 707 bool 708------ 709 f 710(1 row) 711 712SELECT '1'::seg << '2'::seg AS bool; 713 bool 714------ 715 t 716(1 row) 717 718SELECT '0 .. 1'::seg << '0'::seg AS bool; 719 bool 720------ 721 f 722(1 row) 723 724SELECT '0 .. 1'::seg << '1'::seg AS bool; 725 bool 726------ 727 f 728(1 row) 729 730SELECT '0 .. 1'::seg << '2'::seg AS bool; 731 bool 732------ 733 t 734(1 row) 735 736SELECT '0 .. 1'::seg << '0 .. 0.5'::seg AS bool; 737 bool 738------ 739 f 740(1 row) 741 742SELECT '0 .. 1'::seg << '0 .. 1'::seg AS bool; 743 bool 744------ 745 f 746(1 row) 747 748SELECT '0 .. 1'::seg << '0 .. 2'::seg AS bool; 749 bool 750------ 751 f 752(1 row) 753 754SELECT '0 .. 1'::seg << '1 .. 2'::seg AS bool; 755 bool 756------ 757 f 758(1 row) 759 760SELECT '0 .. 1'::seg << '2 .. 3'::seg AS bool; 761 bool 762------ 763 t 764(1 row) 765 766-- right 767-- 768SELECT '0'::seg >> '1'::seg AS bool; 769 bool 770------ 771 f 772(1 row) 773 774SELECT '1'::seg >> '1'::seg AS bool; 775 bool 776------ 777 f 778(1 row) 779 780SELECT '2'::seg >> '1'::seg AS bool; 781 bool 782------ 783 t 784(1 row) 785 786SELECT '0'::seg >> '0 .. 1'::seg AS bool; 787 bool 788------ 789 f 790(1 row) 791 792SELECT '1'::seg >> '0 .. 1'::seg AS bool; 793 bool 794------ 795 f 796(1 row) 797 798SELECT '2'::seg >> '0 .. 1'::seg AS bool; 799 bool 800------ 801 t 802(1 row) 803 804SELECT '0 .. 0.5'::seg >> '0 .. 1'::seg AS bool; 805 bool 806------ 807 f 808(1 row) 809 810SELECT '0 .. 1'::seg >> '0 .. 1'::seg AS bool; 811 bool 812------ 813 f 814(1 row) 815 816SELECT '0 .. 2'::seg >> '0 .. 2'::seg AS bool; 817 bool 818------ 819 f 820(1 row) 821 822SELECT '1 .. 2'::seg >> '0 .. 1'::seg AS bool; 823 bool 824------ 825 f 826(1 row) 827 828SELECT '2 .. 3'::seg >> '0 .. 1'::seg AS bool; 829 bool 830------ 831 t 832(1 row) 833 834-- "contained in" (the left value belongs within the interval specified in the right value): 835-- 836SELECT '0'::seg <@ '0'::seg AS bool; 837 bool 838------ 839 t 840(1 row) 841 842SELECT '0'::seg <@ '0 ..'::seg AS bool; 843 bool 844------ 845 t 846(1 row) 847 848SELECT '0'::seg <@ '.. 0'::seg AS bool; 849 bool 850------ 851 t 852(1 row) 853 854SELECT '0'::seg <@ '-1 .. 1'::seg AS bool; 855 bool 856------ 857 t 858(1 row) 859 860SELECT '0'::seg <@ '-1 .. 1'::seg AS bool; 861 bool 862------ 863 t 864(1 row) 865 866SELECT '-1'::seg <@ '-1 .. 1'::seg AS bool; 867 bool 868------ 869 t 870(1 row) 871 872SELECT '1'::seg <@ '-1 .. 1'::seg AS bool; 873 bool 874------ 875 t 876(1 row) 877 878SELECT '-1 .. 1'::seg <@ '-1 .. 1'::seg AS bool; 879 bool 880------ 881 t 882(1 row) 883 884-- "contains" (the left value contains the interval specified in the right value): 885-- 886SELECT '0'::seg @> '0'::seg AS bool; 887 bool 888------ 889 t 890(1 row) 891 892SELECT '0 .. '::seg <@ '0'::seg AS bool; 893 bool 894------ 895 f 896(1 row) 897 898SELECT '.. 0'::seg <@ '0'::seg AS bool; 899 bool 900------ 901 f 902(1 row) 903 904SELECT '-1 .. 1'::seg <@ '0'::seg AS bool; 905 bool 906------ 907 f 908(1 row) 909 910SELECT '0'::seg <@ '-1 .. 1'::seg AS bool; 911 bool 912------ 913 t 914(1 row) 915 916SELECT '-1'::seg <@ '-1 .. 1'::seg AS bool; 917 bool 918------ 919 t 920(1 row) 921 922SELECT '1'::seg <@ '-1 .. 1'::seg AS bool; 923 bool 924------ 925 t 926(1 row) 927 928-- Load some example data and build the index 929-- 930CREATE TABLE test_seg (s seg); 931\copy test_seg from 'data/test_seg.data' 932CREATE INDEX test_seg_ix ON test_seg USING gist (s); 933SELECT count(*) FROM test_seg WHERE s @> '11..11.3'; 934 count 935------- 936 143 937(1 row) 938 939-- Test sorting 940SELECT * FROM test_seg WHERE s @> '11..11.3' GROUP BY s; 941 s 942----------------- 943 .. 4.0e1 944 .. >8.2e1 945 .. 9.0e1 946 <1.0 .. >13.0 947 1.3 .. 12.0 948 2.0 .. 11.5 949 2.1 .. 11.8 950 <2.3 .. 951 >2.3 .. 952 2.4 .. 11.3 953 2.5 .. 11.5 954 2.5 .. 11.8 955 2.6 .. 956 2.7 .. 12.0 957 <3.0 .. 958 3 .. 5.8e1 959 3.1 .. 11.5 960 3.5 .. 11.5 961 3.5 .. 12.2 962 <4.0 .. >1.2e1 963 <4.0 .. 964 4 .. 1.2e1 965 4.0 .. 11.7 966 4.0 .. 12.5 967 4.0 .. 13.0 968 4.0 .. 6.0e1 969 4.0 .. 970 4.2 .. 11.5 971 4.2 .. 11.7 972 <4.5 .. >1.2e1 973 4.5 .. 11.5 974 4.5 .. <1.2e1 975 4.5 .. >1.2e1 976 4.5 .. 12.5 977 4.5 .. 1.15e2 978 4.7 .. 11.8 979 4.8 .. 11.5 980 4.8 .. 11.6 981 4.8 .. 12.5 982 4.8 .. 983 4.9 .. >1.2e1 984 4.9 .. 985 5 .. 11.5 986 5 .. 1.2e1 987 5 .. 3.0e1 988 5.0 .. 11.4 989 5.0 .. 11.5 990 5.0 .. 11.6 991 5.0 .. 11.7 992 5.0 .. 12.0 993 5.0 .. >12.0 994 5.0 .. >1.2e1 995 5.2 .. 11.5 996 5.2 .. >1.2e1 997 5.25 .. >1.2e1 998 5.3 .. 11.5 999 5.3 .. 1.3e1 1000 5.3 .. >9.0e1 1001 5.3 .. 1002 5.4 .. 1003 5.5 .. 11.5 1004 5.5 .. 11.7 1005 5.5 .. 1.2e1 1006 5.5 .. >1.2e1 1007 5.5 .. 12.5 1008 5.5 .. 13.5 1009 5.5 .. 1010 >5.5 .. 1011 5.7 .. 1012 5.9 .. 1013 6 .. 11.5 1014 6 .. >1.2e1 1015 6.0 .. 11.5 1016 6.0 .. 1.3e1 1017 >6.0 .. <11.5 1018 6.1 .. >1.2e1 1019 6.1 .. 1020 6.2 .. >11.5 1021 6.3 .. 1022 6.5 .. 11.5 1023 6.5 .. 12.0 1024 6.5 .. >12.0 1025 6.5 .. 1026 6.6 .. 1027 6.7 .. 11.5 1028 6.7 .. 1029 6.75 .. 1030 6.8 .. 1031 6.9 .. 12.2 1032 6.9 .. >9.0e1 1033 6.9 .. 1034 <7.0 .. >11.5 1035 7.0 .. 11.5 1036 7.0 .. >11.5 1037 7.0 .. 1038 >7.15 .. 1039 7.2 .. 13.5 1040 7.3 .. >9.0e1 1041 7.3 .. 1042 >7.3 .. 1043 7.4 .. 12.1 1044 7.4 .. 1045 7.5 .. 11.5 1046 7.5 .. 12.0 1047 7.5 .. 1048 7.7 .. 11.5 1049 7.7 .. 1050 7.75 .. 1051 8.0 .. 11.7 1052 8.0 .. 12.0 1053 8.0 .. >13.0 1054 8.2 .. 1055 8.3 .. 1056 8.5 .. >11.5 1057 8.5 .. 12.5 1058 8.5 .. 1059 8.6 .. >9.9e1 1060 8.7 .. 11.3 1061 8.7 .. 11.7 1062 8.9 .. 11.5 1063 9 .. >1.2e1 1064 9.0 .. 11.3 1065 9.0 .. 11.5 1066 9.0 .. 1.2e1 1067 9.0 .. 1068 9.2 .. 1.2e1 1069 9.4 .. 12.2 1070 <9.5 .. 1.2e1 1071 <9.5 .. >12.2 1072 9.5 .. 1073 9.6 .. 11.5 1074 9.7 .. 11.5 1075 9.7 .. >1.2e1 1076 9.8 .. >12.5 1077 <1.0e1 .. >11.6 1078 10.0 .. 11.5 1079 10.0 .. 12.5 1080 10.0 .. >12.5 1081 10.2 .. 11.8 1082 <10.5 .. 11.5 1083 10.5 .. 11.5 1084 10.5 .. <13.5 1085 10.7 .. 12.3 1086(143 rows) 1087 1088-- Test functions 1089SELECT seg_lower(s), seg_center(s), seg_upper(s) 1090FROM test_seg WHERE s @> '11.2..11.3' OR s IS NULL ORDER BY s; 1091 seg_lower | seg_center | seg_upper 1092-----------+------------+----------- 1093 -Infinity | -Infinity | 40 1094 -Infinity | -Infinity | 82 1095 -Infinity | -Infinity | 90 1096 1 | 7 | 13 1097 1.3 | 6.65 | 12 1098 2 | 6.75 | 11.5 1099 2.1 | 6.95 | 11.8 1100 2.3 | Infinity | Infinity 1101 2.3 | Infinity | Infinity 1102 2.4 | 6.85 | 11.3 1103 2.5 | 7 | 11.5 1104 2.5 | 7.15 | 11.8 1105 2.6 | Infinity | Infinity 1106 2.7 | 7.35 | 12 1107 3 | Infinity | Infinity 1108 3 | 30.5 | 58 1109 3.1 | 7.3 | 11.5 1110 3.5 | 7.5 | 11.5 1111 3.5 | 7.85 | 12.2 1112 4 | 8 | 12 1113 4 | Infinity | Infinity 1114 4 | 8 | 12 1115 4 | 7.85 | 11.7 1116 4 | 8.25 | 12.5 1117 4 | 8.5 | 13 1118 4 | 32 | 60 1119 4 | Infinity | Infinity 1120 4.2 | 7.85 | 11.5 1121 4.2 | 7.95 | 11.7 1122 4.5 | 8.25 | 12 1123 4.5 | 8 | 11.5 1124 4.5 | 8.25 | 12 1125 4.5 | 8.25 | 12 1126 4.5 | 8.5 | 12.5 1127 4.5 | 59.75 | 115 1128 4.7 | 8.25 | 11.8 1129 4.8 | 8.15 | 11.5 1130 4.8 | 8.2 | 11.6 1131 4.8 | 8.65 | 12.5 1132 4.8 | Infinity | Infinity 1133 4.9 | 8.45 | 12 1134 4.9 | Infinity | Infinity 1135 5 | 8.25 | 11.5 1136 5 | 8.5 | 12 1137 5 | 17.5 | 30 1138 5 | 8.2 | 11.4 1139 5 | 8.25 | 11.5 1140 5 | 8.3 | 11.6 1141 5 | 8.35 | 11.7 1142 5 | 8.5 | 12 1143 5 | 8.5 | 12 1144 5 | 8.5 | 12 1145 5.2 | 8.35 | 11.5 1146 5.2 | 8.6 | 12 1147 5.25 | 8.625 | 12 1148 5.3 | 8.4 | 11.5 1149 5.3 | 9.15 | 13 1150 5.3 | 47.65 | 90 1151 5.3 | Infinity | Infinity 1152 5.4 | Infinity | Infinity 1153 5.5 | 8.5 | 11.5 1154 5.5 | 8.6 | 11.7 1155 5.5 | 8.75 | 12 1156 5.5 | 8.75 | 12 1157 5.5 | 9 | 12.5 1158 5.5 | 9.5 | 13.5 1159 5.5 | Infinity | Infinity 1160 5.5 | Infinity | Infinity 1161 5.7 | Infinity | Infinity 1162 5.9 | Infinity | Infinity 1163 6 | 8.75 | 11.5 1164 6 | 9 | 12 1165 6 | 8.75 | 11.5 1166 6 | 9.5 | 13 1167 6 | 8.75 | 11.5 1168 6.1 | 9.05 | 12 1169 6.1 | Infinity | Infinity 1170 6.2 | 8.85 | 11.5 1171 6.3 | Infinity | Infinity 1172 6.5 | 9 | 11.5 1173 6.5 | 9.25 | 12 1174 6.5 | 9.25 | 12 1175 6.5 | Infinity | Infinity 1176 6.6 | Infinity | Infinity 1177 6.7 | 9.1 | 11.5 1178 6.7 | Infinity | Infinity 1179 6.75 | Infinity | Infinity 1180 6.8 | Infinity | Infinity 1181 6.9 | 9.55 | 12.2 1182 6.9 | 48.45 | 90 1183 6.9 | Infinity | Infinity 1184 7 | 9.25 | 11.5 1185 7 | 9.25 | 11.5 1186 7 | 9.25 | 11.5 1187 7 | Infinity | Infinity 1188 7.15 | Infinity | Infinity 1189 7.2 | 10.35 | 13.5 1190 7.3 | 48.65 | 90 1191 7.3 | Infinity | Infinity 1192 7.3 | Infinity | Infinity 1193 7.4 | 9.75 | 12.1 1194 7.4 | Infinity | Infinity 1195 7.5 | 9.5 | 11.5 1196 7.5 | 9.75 | 12 1197 7.5 | Infinity | Infinity 1198 7.7 | 9.6 | 11.5 1199 7.7 | Infinity | Infinity 1200 7.75 | Infinity | Infinity 1201 8 | 9.85 | 11.7 1202 8 | 10 | 12 1203 8 | 10.5 | 13 1204 8.2 | Infinity | Infinity 1205 8.3 | Infinity | Infinity 1206 8.5 | 10 | 11.5 1207 8.5 | 10.5 | 12.5 1208 8.5 | Infinity | Infinity 1209 8.6 | 53.8 | 99 1210 8.7 | 10 | 11.3 1211 8.7 | 10.2 | 11.7 1212 8.9 | 10.2 | 11.5 1213 9 | 10.5 | 12 1214 9 | 10.15 | 11.3 1215 9 | 10.25 | 11.5 1216 9 | 10.5 | 12 1217 9 | Infinity | Infinity 1218 9.2 | 10.6 | 12 1219 9.4 | 10.8 | 12.2 1220 9.5 | 10.75 | 12 1221 9.5 | 10.85 | 12.2 1222 9.5 | Infinity | Infinity 1223 9.6 | 10.55 | 11.5 1224 9.7 | 10.6 | 11.5 1225 9.7 | 10.85 | 12 1226 9.8 | 11.15 | 12.5 1227 10 | 10.8 | 11.6 1228 10 | 10.75 | 11.5 1229 10 | 11.25 | 12.5 1230 10 | 11.25 | 12.5 1231 10.2 | 11 | 11.8 1232 10.5 | 11 | 11.5 1233 10.5 | 11 | 11.5 1234 10.5 | 12 | 13.5 1235 10.7 | 11.5 | 12.3 1236 | | 1237(144 rows) 1238 1239