github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/sql/logictest/testdata/logic_test/inet (about) 1 # Basic IPv4 tests 2 3 query T 4 SELECT '192.168.1.2/24':::INET; 5 ---- 6 192.168.1.2/24 7 8 query T 9 SELECT '192.168.1.2/32':::INET; 10 ---- 11 192.168.1.2 12 13 query T 14 SELECT '192.168.1.2':::INET; 15 ---- 16 192.168.1.2 17 18 query T 19 SELECT '192.168.1.2/24':::INET; 20 ---- 21 192.168.1.2/24 22 23 query T 24 SELECT '0.0.0.0':::INET; 25 ---- 26 0.0.0.0 27 28 query T 29 SELECT '::/0'::inet::text::inet; 30 ---- 31 ::/0 32 33 # Basic IPv6 tests 34 35 query T 36 SELECT '::ffff:192.168.1.2':::INET; 37 ---- 38 ::ffff:192.168.1.2 39 40 query T 41 SELECT '::ffff:192.168.1.2/120':::INET; 42 ---- 43 ::ffff:192.168.1.2/120 44 45 query T 46 SELECT '::ffff':::INET; 47 ---- 48 ::ffff 49 50 query T 51 SELECT '2001:4f8:3:ba:2e0:81ff:fe22:d1f1/120':::INET; 52 ---- 53 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/120 54 55 query T 56 SELECT '2001:4f8:3:ba:2e0:81ff:fe22:d1f1':::INET; 57 ---- 58 2001:4f8:3:ba:2e0:81ff:fe22:d1f1 59 60 # Test casting 61 62 query T 63 SELECT '192.168.1.2/24'::INET; 64 ---- 65 192.168.1.2/24 66 67 68 query T 69 SELECT '192.168.1.200/10':::INET 70 ---- 71 192.168.1.200/10 72 73 # Test for less than 4 octets with mask 74 75 query T 76 SELECT '192.168.1/10':::INET 77 ---- 78 192.168.1.0/10 79 80 query T 81 SELECT '192.168/10':::INET 82 ---- 83 192.168.0.0/10 84 85 query T 86 SELECT '192/10':::INET 87 ---- 88 192.0.0.0/10 89 90 # Test for preservation of masked bits 91 92 query T 93 SELECT '255/10':::INET 94 ---- 95 255.0.0.0/10 96 97 # Test that less than 4 octets requires a mask 98 99 statement error could not parse 100 SELECT '192':::INET 101 102 statement error could not parse 103 SELECT '19.0':::INET 104 105 # Test that the mask can't be larger than the provided octet bits 106 107 statement error could not parse 108 SELECT '19.0/32':::INET 109 110 statement error could not parse 111 SELECT '19/32':::INET 112 113 statement error could not parse 114 SELECT '19/16':::INET 115 116 query T 117 SELECT '19/15':::INET 118 ---- 119 19.0.0.0/15 120 121 # Misc tests 122 123 statement error could not parse 124 SELECT '192.168/24/1':::INET 125 126 statement error could not parse 127 SELECT '':::INET 128 129 statement error could not parse 130 SELECT '0':::INET 131 132 query T 133 SELECT '0.0.0.0':::INET 134 ---- 135 0.0.0.0 136 137 # Testing equivilance 138 139 query B 140 SELECT '::ffff:192.168.0.1/24'::INET = '::ffff:192.168.0.1/24'::INET 141 ---- 142 true 143 144 query B 145 SELECT '::ffff:192.168.0.1/24'::INET = '::ffff:192.168.0.1/25'::INET 146 ---- 147 false 148 149 query B 150 SELECT '::ffff:192.168.0.1/24'::INET = '::ffff:192.168.0.1'::INET 151 ---- 152 false 153 154 query B 155 SELECT '::ffff:192.168.0.1'::INET = '::ffff:192.168.0.1'::INET 156 ---- 157 true 158 159 # Ensure IPv4-mapped IPv6 is not equal to its mapped IPv4 160 161 query B 162 SELECT '::ffff:192.168.0.1'::INET = '192.168.0.1'::INET 163 ---- 164 false 165 166 query B 167 SELECT '192.168.0.1'::INET = '192.168.0.1'::INET 168 ---- 169 true 170 171 query B 172 SELECT '192.168.0.1/0'::INET = '192.168.0.1'::INET 173 ---- 174 false 175 176 query B 177 SELECT '192.168.0.1/0'::INET = '192.168.0.1/0'::INET 178 ---- 179 true 180 181 query B 182 SELECT '192.168.0.1/0'::INET = '192.168.0.1/0'::INET 183 ---- 184 true 185 186 # Testing basic comparisons 187 188 query B 189 SELECT '192.168.0.2/24'::INET < '192.168.0.1/25'::INET 190 ---- 191 true 192 193 query B 194 SELECT '1.2.3.4':::INET < '1.2.3.5':::INET 195 ---- 196 true 197 198 query B 199 SELECT '192.168.0.1/0'::INET > '192.168.0.1/0'::INET 200 ---- 201 false 202 203 query B 204 SELECT '192.168.0.0'::INET > '192.168.0.1/0'::INET 205 ---- 206 true 207 208 query B 209 SELECT '::ffff:1.2.3.4':::INET > '1.2.3.4':::INET 210 ---- 211 true 212 213 # Testing contains/contained by logic 214 215 query B 216 SELECT '192.168.200.95/17'::INET >> '192.168.162.1'::INET 217 ---- 218 true 219 220 query B 221 SELECT '192.168.200.95/8'::INET >> '192.168.2.1/8'::INET 222 ---- 223 false 224 225 query B 226 SELECT '2001:0db8:0000:0000:0500:5000:0000:0001/50'::INET >> '2001:0db8:0000:0000:0500:5000:0000:0001/50'::INET 227 ---- 228 false 229 230 query B 231 SELECT '2001:0db8:0500:0000:0500:5000:0000:0001/50'::INET >> '2001:0db8:0000:0000:0000:0000:0000:0001/100'::INET 232 ---- 233 false 234 235 query B 236 SELECT '192.168.200.95/8'::INET >>= '192.168.2.1/8'::INET 237 ---- 238 true 239 240 query B 241 SELECT '192.168.200.95/17'::INET >>= '192.168.2.1/24'::INET 242 ---- 243 false 244 245 query B 246 SELECT '192.168.200.95/8'::INET >>= '192.168.2.1/8'::INET 247 ---- 248 true 249 250 query B 251 SELECT '2001:0db8:0500:0000:0500:5000:0000:0001/50'::INET >>= '2001:0db8:0000:0000:0000:0000:0000:0001/100'::INET 252 ---- 253 false 254 255 query B 256 SELECT '2001:0db8:0000:0000:0500:5000:0000:0001/50'::INET >>= '2001:0db8:0000:0000:0500:5000:0000:0001/50'::INET 257 ---- 258 true 259 260 query B 261 SELECT '192.168.200.95'::INET << '192.168.2.1/8'::INET 262 ---- 263 true 264 265 query B 266 SELECT '192.168.200.95/8'::INET << '192.168.2.1/8'::INET 267 ---- 268 false 269 270 query B 271 SELECT '192.168.200.95'::INET <<= '192.168.2.1/8'::INET 272 ---- 273 true 274 275 query B 276 SELECT '192.168.200.95/8'::INET <<= '192.168.2.1/8'::INET 277 ---- 278 true 279 280 query B 281 SELECT '2001:0db8:0000:0000:0500:5000:0000:0001/50'::INET << '2001:0db8:0000:0000:0000:0000:0000:0001/100'::INET 282 ---- 283 false 284 285 query B 286 SELECT '2001:0db8:0000:0000:0500:5000:0000:0001/50'::INET << '2001:0db8:0000:0000:0500:5000:0000:0001/50'::INET 287 ---- 288 false 289 290 query B 291 SELECT '2001:0db8:0000:0000:0500:5000:0000:0001/50'::INET <<= '2001:0db8:0000:0000:0000:0000:0000:0001/100'::INET 292 ---- 293 false 294 295 query B 296 SELECT '2001:0db8:0000:0000:0500:5000:0000:0001/50'::INET <<= '2001:0db8:0000:0000:0500:5000:0000:0001/50'::INET 297 ---- 298 true 299 300 query B 301 SELECT '192.168.200.95/16'::INET && '192.168.2.1/24'::INET 302 ---- 303 true 304 305 query B 306 SELECT '192.168.200.95/17'::INET && '192.168.2.1/24'::INET 307 ---- 308 false 309 310 query B 311 SELECT '2001:0db8:0500:0000:0500:5000:0000:0001/50'::INET && '2001:0db8:0000:0000:0000:0000:0000:0001/100'::INET 312 ---- 313 false 314 315 query B 316 SELECT '2001:0db8:0000:0000:0500:5000:0000:0001/50'::INET && '2001:0db8:0000:0000:0000:0000:0000:0001/100'::INET 317 ---- 318 true 319 320 query B 321 SELECT '2001:0db8:0500:0000:0500:5000:0000:0001/50'::INET >> '192.168.2.1/8'::INET 322 ---- 323 false 324 325 query B 326 SELECT '2001:0db8:0500:0000:0500:5000:0000:0001/50'::INET >>= '192.168.2.1/8'::INET 327 ---- 328 false 329 330 query B 331 SELECT '2001:0db8:0500:0000:0500:5000:0000:0001/50'::INET << '192.168.2.1/8'::INET 332 ---- 333 false 334 335 query B 336 SELECT '2001:0db8:0500:0000:0500:5000:0000:0001/50'::INET <<= '192.168.2.1/8'::INET 337 ---- 338 false 339 340 query B 341 SELECT '2001:0db8:0500:0000:0500:5000:0000:0001/50'::INET && '192.168.2.1/8'::INET 342 ---- 343 false 344 345 query B 346 SELECT '192.168.2.1/8'::INET >> '2001:0db8:0500:0000:0500:5000:0000:0001/50'::INET 347 ---- 348 false 349 350 query B 351 SELECT '192.168.2.1/8'::INET >>= '2001:0db8:0500:0000:0500:5000:0000:0001/50'::INET 352 ---- 353 false 354 355 query B 356 SELECT '192.168.2.1/8'::INET << '2001:0db8:0500:0000:0500:5000:0000:0001/50'::INET 357 ---- 358 false 359 360 query B 361 SELECT '192.168.2.1/8'::INET <<= '2001:0db8:0500:0000:0500:5000:0000:0001/50'::INET 362 ---- 363 false 364 365 query B 366 SELECT '192.168.2.1/8'::INET && '2001:0db8:0500:0000:0500:5000:0000:0001/50'::INET 367 ---- 368 false 369 370 # Binary operations 371 372 query T 373 SELECT ~'192.168.1.2/10':::INET 374 ---- 375 63.87.254.253/10 376 377 query T 378 SELECT ~'192.168.1.2/0':::INET 379 ---- 380 63.87.254.253/0 381 382 query T 383 SELECT ~'2001:4f8:3:ba::/64':::INET 384 ---- 385 dffe:fb07:fffc:ff45:ffff:ffff:ffff:ffff/64 386 387 query T 388 SELECT '255.255.255.250/2':::INET & '0.5.0.5/17':::INET 389 ---- 390 0.5.0.0/17 391 392 query T 393 SELECT '0000:0564:0000:0aab:0000:0000:0060:0005/23':::INET & 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:0005/123':::INET 394 ---- 395 0:564:0:aab::60:5/123 396 397 query T 398 SELECT '192.168.1.2/1':::INET | '192.168.1.3/17':::INET 399 ---- 400 192.168.1.3/17 401 402 query T 403 SELECT '6e32:8a01:373b:c9ce:8ed5:9f7f:dc7e:5cfc/99':::INET | 'c33e:9867:5c98:f0a2:2b2:abf9:c7a5:67d':::INET 404 ---- 405 ef3e:9a67:7fbb:f9ee:8ef7:bfff:dfff:5efd 406 407 statement error pq: cannot AND inet values of different sizes 408 SELECT '0000:0564:0000:0aab:0000:0000:0060:0005/23':::INET & '192.168.1.2/1':::INET 409 410 statement error pq: cannot OR inet values of different sizes 411 SELECT '0000:0564:0000:0aab:0000:0000:0060:0005/23':::INET | '192.168.1.2/1':::INET 412 413 # Addition and Subtraction 414 415 query T 416 SELECT '192.168.1.2':::INET + 184836468 417 ---- 418 203.172.98.118 419 420 query T 421 SELECT '0.0.0.5':::INET - 5 422 ---- 423 0.0.0.0 424 425 query T 426 SELECT '203.172.98.118/23':::INET - 184836468 427 ---- 428 192.168.1.2/23 429 430 query T 431 SELECT '0.0.0.5':::INET - -5 432 ---- 433 0.0.0.10 434 435 query T 436 SELECT '::4104:4066:5de7:b1fa':::INET - 4684658846864486648 437 ---- 438 ::ffff:192.168.1.2 439 440 query T 441 SELECT '::4104:4066:5de7:b1fa/121':::INET + -4684658846864486648 442 ---- 443 ::ffff:192.168.1.2/121 444 445 query T 446 SELECT '::4104:4066:5de7:b1fa/101':::INET + 2 447 ---- 448 ::4104:4066:5de7:b1fc/101 449 450 query T 451 SELECT '::5/128':::INET - -2 452 ---- 453 ::7 454 455 query I 456 SELECT '203.172.98.118/17':::INET - '192.168.1.2/1':::INET 457 ---- 458 184836468 459 460 query I 461 SELECT '::4104:4066:5de7:b1fa/79':::INET - '::ffff:192.168.1.2/44':::INET 462 ---- 463 4684658846864486648 464 465 statement error pq: result out of range 466 SELECT '255.255.0.5':::INET + 2000000000 467 468 statement error pq: result out of range 469 SELECT '0.0.0.5':::INET - 10 470 471 statement error pq: result out of range 472 SELECT '::5/128':::INET - 10 473 474 statement error pq: result out of range 475 SELECT 'ff00:5::/128':::INET - '::ff00:5/128':::INET 476 477 # Edge case: postgres compatibility 478 479 query T 480 SELECT '0.0.0.0.':::INET 481 ---- 482 0.0.0.0 483 484 statement error could not parse 485 SELECT '.0.0.0.0.':::INET 486 487 statement error could not parse 488 SELECT '0.0.0.0.0':::INET 489 490 # Test storage round-trip 491 492 statement ok 493 CREATE TABLE u (ip inet PRIMARY KEY, 494 ip2 inet) 495 496 statement ok 497 INSERT INTO u VALUES ('192.168.0.1', '192.168.0.1') 498 499 statement error duplicate key value 500 INSERT INTO u VALUES ('192.168.0.1', '192.168.0.2') 501 502 statement ok 503 INSERT INTO u VALUES ('192.168.0.2', '192.168.0.2') 504 505 statement ok 506 INSERT INTO u VALUES ('192.168.0.5/24', '192.168.0.5') 507 508 statement ok 509 INSERT INTO u VALUES ('192.168.0.1/31', '192.168.0.1') 510 511 statement ok 512 INSERT INTO u VALUES ('192.168.0.0', '192.168.0.1') 513 514 statement ok 515 INSERT INTO u VALUES ('192.0.0.0', '127.0.0.1') 516 517 statement ok 518 INSERT INTO u (ip) VALUES ('::1') 519 520 statement ok 521 INSERT INTO u (ip) VALUES ('::ffff:1.2.3.4') 522 523 query TT 524 SELECT * FROM u ORDER BY ip 525 ---- 526 192.168.0.5/24 192.168.0.5 527 192.168.0.1/31 192.168.0.1 528 192.0.0.0 127.0.0.1 529 192.168.0.0 192.168.0.1 530 192.168.0.1 192.168.0.1 531 192.168.0.2 192.168.0.2 532 ::1 NULL 533 ::ffff:1.2.3.4 NULL 534 535 statement ok 536 CREATE TABLE arrays (ips INET[]) 537 538 statement ok 539 INSERT INTO arrays VALUES 540 (ARRAY[]), 541 (ARRAY['192.168.0.1/10', '::1']), 542 (ARRAY['192.168.0.1', '192.168.0.1/10', '::1', '::ffff:1.2.3.4']) 543 544 query T rowsort 545 SELECT * FROM arrays 546 ---- 547 {} 548 {192.168.0.1/10,::1} 549 {192.168.0.1,192.168.0.1/10,::1,::ffff:1.2.3.4} 550 551 552 # Testing builtins 553 554 # Test abbrev 555 # For INET, abbev has the same output as ::string. This is not the case for 556 # CIDR. The input string is not always equal to the output string, e.g. 557 # abbrev('10.0/16'::inet) => '10.0.0.0/16' 558 559 query T 560 SELECT abbrev('10.1.0.0/16'::INET) 561 ---- 562 10.1.0.0/16 563 564 query T 565 SELECT abbrev('192.168.0.1/16'::INET) 566 ---- 567 192.168.0.1/16 568 569 query T 570 SELECT abbrev('192.168.0.1'::INET) 571 ---- 572 192.168.0.1 573 574 query T 575 SELECT abbrev('192.168.0.1/32'::INET) 576 ---- 577 192.168.0.1 578 579 query T 580 SELECT abbrev('10.0/16'::INET) 581 ---- 582 10.0.0.0/16 583 584 query T 585 SELECT abbrev('::ffff:192.168.0.1'::INET) 586 ---- 587 ::ffff:192.168.0.1 588 589 query T 590 SELECT abbrev('::ffff:192.168.0.1/24'::INET) 591 ---- 592 ::ffff:192.168.0.1/24 593 594 # Test broadcast 595 596 query T 597 SELECT broadcast('10.1.0.0/16'::INET) 598 ---- 599 10.1.255.255/16 600 601 query T 602 SELECT broadcast('192.168.0.1/16'::INET) 603 ---- 604 192.168.255.255/16 605 606 query T 607 SELECT broadcast('192.168.0.1'::INET) 608 ---- 609 192.168.0.1 610 611 query T 612 SELECT broadcast('192.168.0.1/32'::INET) 613 ---- 614 192.168.0.1 615 616 query T 617 SELECT broadcast('::ffff:192.168.0.1'::INET) 618 ---- 619 ::ffff:192.168.0.1 620 621 query T 622 SELECT broadcast('::ffff:1.2.3.1/20'::INET) 623 ---- 624 0:fff:ffff:ffff:ffff:ffff:ffff:ffff/20 625 626 query T 627 SELECT broadcast('2001:4f8:3:ba::/64'::INET) 628 ---- 629 2001:4f8:3:ba:ffff:ffff:ffff:ffff/64 630 631 # Test family 632 633 query I 634 SELECT family('10.1.0.0/16'::INET) 635 ---- 636 4 637 638 query I 639 SELECT family('192.168.0.1/16'::INET) 640 ---- 641 4 642 643 query I 644 SELECT family('192.168.0.1'::INET) 645 ---- 646 4 647 648 query I 649 SELECT family('::ffff:192.168.0.1'::INET) 650 ---- 651 6 652 653 query I 654 SELECT family('::ffff:1.2.3.1/20'::INET) 655 ---- 656 6 657 658 query I 659 SELECT family('2001:4f8:3:ba::/64'::INET) 660 ---- 661 6 662 663 # Test host 664 665 query T 666 SELECT host('10.1.0.0/16'::INET) 667 ---- 668 10.1.0.0 669 670 query T 671 SELECT host('192.168.0.1/16'::INET) 672 ---- 673 192.168.0.1 674 675 query T 676 SELECT host('192.168.0.1'::INET) 677 ---- 678 192.168.0.1 679 680 query T 681 SELECT host('192.168.0.1/32'::INET) 682 ---- 683 192.168.0.1 684 685 query T 686 SELECT host('::ffff:192.168.0.1'::INET) 687 ---- 688 ::ffff:192.168.0.1 689 690 query T 691 SELECT host('::ffff:192.168.0.1/24'::INET) 692 ---- 693 ::ffff:192.168.0.1 694 695 # Test hostmask 696 697 query T 698 SELECT hostmask('192.168.1.2'::INET) 699 ---- 700 0.0.0.0 701 702 query T 703 SELECT hostmask('192.168.1.2/16'::INET) 704 ---- 705 0.0.255.255 706 707 query T 708 SELECT hostmask('192.168.1.2/10'::INET) 709 ---- 710 0.63.255.255 711 712 query T 713 SELECT hostmask('2001:4f8:3:ba::/64'::INET) 714 ---- 715 ::ffff:ffff:ffff:ffff 716 717 # Test masklen 718 719 query I 720 SELECT masklen('192.168.1.2'::INET) 721 ---- 722 32 723 724 query I 725 SELECT masklen('192.168.1.2/16'::INET) 726 ---- 727 16 728 729 query I 730 SELECT masklen('192.168.1.2/10'::INET) 731 ---- 732 10 733 734 query I 735 SELECT masklen('2001:4f8:3:ba::/64'::INET) 736 ---- 737 64 738 739 query I 740 SELECT masklen('2001:4f8:3:ba::'::INET) 741 ---- 742 128 743 744 # Test netmask 745 746 query T 747 SELECT netmask('192.168.1.2'::INET) 748 ---- 749 255.255.255.255 750 751 query T 752 SELECT netmask('192.168.1.2/16'::INET) 753 ---- 754 255.255.0.0 755 756 query T 757 SELECT netmask('192.168.1.2/10'::INET) 758 ---- 759 255.192.0.0 760 761 query T 762 SELECT netmask('192.168.1.2/0'::INET) 763 ---- 764 0.0.0.0 765 766 query T 767 SELECT netmask('2001:4f8:3:ba::/64'::INET) 768 ---- 769 ffff:ffff:ffff:ffff:: 770 771 query T 772 SELECT netmask('2001:4f8:3:ba::/0'::INET) 773 ---- 774 :: 775 776 query T 777 SELECT netmask('2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128'::INET) 778 ---- 779 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 780 781 query T 782 SELECT netmask('::ffff:1.2.3.1/120'::INET) 783 ---- 784 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00 785 786 query T 787 SELECT netmask('::ffff:1.2.3.1/20'::INET) 788 ---- 789 ffff:f000:: 790 791 # Test set_masklen 792 793 query T 794 SELECT set_masklen('10.1.0.0/16'::INET, 10) 795 ---- 796 10.1.0.0/10 797 798 query T 799 SELECT set_masklen('192.168.0.1/16'::INET, 32) 800 ---- 801 192.168.0.1 802 803 statement error invalid mask length 804 SELECT set_masklen('192.168.0.1'::INET, 100) 805 806 statement error invalid mask length 807 SELECT set_masklen('192.168.0.1'::INET, 33) 808 809 statement error invalid mask length 810 SELECT set_masklen('192.168.0.1'::INET, -1) 811 812 query T 813 SELECT set_masklen('192.168.0.1'::INET, 0) 814 ---- 815 192.168.0.1/0 816 817 query T 818 SELECT set_masklen('::ffff:192.168.0.1'::INET, 100) 819 ---- 820 ::ffff:192.168.0.1/100 821 822 statement error invalid mask length 823 SELECT set_masklen('::ffff:192.168.0.1'::INET, -1) 824 825 statement error invalid mask length 826 SELECT set_masklen('::ffff:192.168.0.1'::INET, 129) 827 828 query T 829 SELECT set_masklen('::ffff:192.168.0.1/24'::INET, 0) 830 ---- 831 ::ffff:192.168.0.1/0 832 833 # Test text 834 # The difference between text and abbrev/::string is that text always outputs 835 # the prefix length, whereas abbrev omit it when the prefix length is the 836 # total bits size (32 for IPv4, 128 for IPv6). 837 838 query T 839 SELECT text('10.1.0.0/16'::INET) 840 ---- 841 10.1.0.0/16 842 843 query T 844 SELECT text('192.168.0.1/16'::INET) 845 ---- 846 192.168.0.1/16 847 848 query T 849 SELECT text('192.168.0.1'::INET) 850 ---- 851 192.168.0.1/32 852 853 query T 854 SELECT text('192.168.0.1/32'::INET) 855 ---- 856 192.168.0.1/32 857 858 query T 859 SELECT text('::ffff:192.168.0.1'::INET) 860 ---- 861 ::ffff:192.168.0.1/128 862 863 query T 864 SELECT text('::ffff:192.168.0.1/24'::INET) 865 ---- 866 ::ffff:192.168.0.1/24 867 868 # Test inet_same_family 869 870 query T 871 SELECT text('::ffff:192.168.0.1/24'::INET) 872 ---- 873 ::ffff:192.168.0.1/24 874 875 # Verify the inet datum gets serialized correctly for distsql. 876 query T 877 SELECT host(max('192.168.0.2/24'::INET)) FROM (VALUES (1)) AS t(x) 878 ---- 879 192.168.0.2