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