mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 10:30:33 +03:00 
			
		
		
		
	This isn't fully tested as yet, in particular I'm not sure that the "foo--unpackaged--1.0.sql" scripts are OK. But it's time to get some buildfarm cycles on it. sepgsql is not converted to an extension, mainly because it seems to require a very nonstandard installation process. Dimitri Fontaine and Tom Lane
		
			
				
	
	
		
			1231 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			1231 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| --
 | |
| --  Test seg datatype
 | |
| --
 | |
| CREATE EXTENSION seg;
 | |
| --
 | |
| -- testing the input and output functions
 | |
| --
 | |
| -- Any number
 | |
| SELECT '1'::seg AS seg;
 | |
|  seg 
 | |
| -----
 | |
|  1
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1'::seg AS seg;
 | |
|  seg 
 | |
| -----
 | |
|  -1
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1.0'::seg AS seg;
 | |
|  seg 
 | |
| -----
 | |
|  1.0
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1.0'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  -1.0
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1e7'::seg AS seg;
 | |
|   seg  
 | |
| -------
 | |
|  1e+07
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1e7'::seg AS seg;
 | |
|   seg   
 | |
| --------
 | |
|  -1e+07
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1.0e7'::seg AS seg;
 | |
|    seg   
 | |
| ---------
 | |
|  1.0e+07
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1.0e7'::seg AS seg;
 | |
|    seg    
 | |
| ----------
 | |
|  -1.0e+07
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1e+7'::seg AS seg;
 | |
|   seg  
 | |
| -------
 | |
|  1e+07
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1e+7'::seg AS seg;
 | |
|   seg   
 | |
| --------
 | |
|  -1e+07
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1.0e+7'::seg AS seg;
 | |
|    seg   
 | |
| ---------
 | |
|  1.0e+07
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1.0e+7'::seg AS seg;
 | |
|    seg    
 | |
| ----------
 | |
|  -1.0e+07
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1e-7'::seg AS seg;
 | |
|   seg  
 | |
| -------
 | |
|  1e-07
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1e-7'::seg AS seg;
 | |
|   seg   
 | |
| --------
 | |
|  -1e-07
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1.0e-7'::seg AS seg;
 | |
|    seg   
 | |
| ---------
 | |
|  1.0e-07
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1.0e-7'::seg AS seg;
 | |
|    seg    
 | |
| ----------
 | |
|  -1.0e-07
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e-6'::seg AS seg;
 | |
|   seg  
 | |
| -------
 | |
|  2e-06
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e-5'::seg AS seg;
 | |
|   seg  
 | |
| -------
 | |
|  2e-05
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e-4'::seg AS seg;
 | |
|   seg   
 | |
| --------
 | |
|  0.0002
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e-3'::seg AS seg;
 | |
|   seg  
 | |
| -------
 | |
|  0.002
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e-2'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  0.02
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e-1'::seg AS seg;
 | |
|  seg 
 | |
| -----
 | |
|  0.2
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e-0'::seg AS seg;
 | |
|  seg 
 | |
| -----
 | |
|  2
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e+0'::seg AS seg;
 | |
|  seg 
 | |
| -----
 | |
|  2
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e+1'::seg AS seg;
 | |
|  seg 
 | |
| -----
 | |
|  2e1
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e+2'::seg AS seg;
 | |
|  seg 
 | |
| -----
 | |
|  2e2
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e+3'::seg AS seg;
 | |
|  seg 
 | |
| -----
 | |
|  2e3
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e+4'::seg AS seg;
 | |
|  seg 
 | |
| -----
 | |
|  2e4
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e+5'::seg AS seg;
 | |
|   seg  
 | |
| -------
 | |
|  2e+05
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2e+6'::seg AS seg;
 | |
|   seg  
 | |
| -------
 | |
|  2e+06
 | |
| (1 row)
 | |
| 
 | |
| -- Significant digits preserved
 | |
| SELECT '1'::seg AS seg;
 | |
|  seg 
 | |
| -----
 | |
|  1
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1.0'::seg AS seg;
 | |
|  seg 
 | |
| -----
 | |
|  1.0
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1.00'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  1.00
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1.000'::seg AS seg;
 | |
|   seg  
 | |
| -------
 | |
|  1.000
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1.0000'::seg AS seg;
 | |
|   seg   
 | |
| --------
 | |
|  1.0000
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1.00000'::seg AS seg;
 | |
|    seg   
 | |
| ---------
 | |
|  1.00000
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1.000000'::seg AS seg;
 | |
|    seg   
 | |
| ---------
 | |
|  1.00000
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0.000000120'::seg AS seg;
 | |
|    seg    
 | |
| ----------
 | |
|  1.20e-07
 | |
| (1 row)
 | |
| 
 | |
| SELECT '3.400e5'::seg AS seg;
 | |
|     seg    
 | |
| -----------
 | |
|  3.400e+05
 | |
| (1 row)
 | |
| 
 | |
| -- Digits truncated
 | |
| SELECT '12.34567890123456'::seg AS seg;
 | |
|    seg   
 | |
| ---------
 | |
|  12.3457
 | |
| (1 row)
 | |
| 
 | |
| -- Numbers with certainty indicators
 | |
| SELECT '~6.5'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  ~6.5
 | |
| (1 row)
 | |
| 
 | |
| SELECT '<6.5'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  <6.5
 | |
| (1 row)
 | |
| 
 | |
| SELECT '>6.5'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  >6.5
 | |
| (1 row)
 | |
| 
 | |
| SELECT '~ 6.5'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  ~6.5
 | |
| (1 row)
 | |
| 
 | |
| SELECT '< 6.5'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  <6.5
 | |
| (1 row)
 | |
| 
 | |
| SELECT '> 6.5'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  >6.5
 | |
| (1 row)
 | |
| 
 | |
| -- Open intervals
 | |
| SELECT '0..'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  0 ..
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0...'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  0 ..
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 ..'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  0 ..
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 ...'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  0 ..
 | |
| (1 row)
 | |
| 
 | |
| SELECT '..0'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  .. 0
 | |
| (1 row)
 | |
| 
 | |
| SELECT '...0'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  .. 0
 | |
| (1 row)
 | |
| 
 | |
| SELECT '.. 0'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  .. 0
 | |
| (1 row)
 | |
| 
 | |
| SELECT '... 0'::seg AS seg;
 | |
|  seg  
 | |
| ------
 | |
|  .. 0
 | |
| (1 row)
 | |
| 
 | |
| -- Finite intervals
 | |
| SELECT '0 .. 1'::seg AS seg;
 | |
|   seg   
 | |
| --------
 | |
|  0 .. 1
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1 .. 0'::seg AS seg;
 | |
|    seg   
 | |
| ---------
 | |
|  -1 .. 0
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1 .. 1'::seg AS seg;
 | |
|    seg   
 | |
| ---------
 | |
|  -1 .. 1
 | |
| (1 row)
 | |
| 
 | |
| -- (+/-) intervals
 | |
| SELECT '0(+-)1'::seg AS seg;
 | |
|    seg   
 | |
| ---------
 | |
|  -1 .. 1
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0(+-)1.0'::seg AS seg;
 | |
|      seg     
 | |
| -------------
 | |
|  -1.0 .. 1.0
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1.0(+-)0.005'::seg AS seg;
 | |
|       seg       
 | |
| ----------------
 | |
|  0.995 .. 1.005
 | |
| (1 row)
 | |
| 
 | |
| SELECT '101(+-)1'::seg AS seg;
 | |
|        seg        
 | |
| ------------------
 | |
|  1.00e2 .. 1.02e2
 | |
| (1 row)
 | |
| 
 | |
| -- incorrect number of significant digits in 99.0:
 | |
| SELECT '100(+-)1'::seg AS seg;
 | |
|       seg       
 | |
| ----------------
 | |
|  99.0 .. 1.01e2
 | |
| (1 row)
 | |
| 
 | |
| -- invalid input
 | |
| SELECT ''::seg AS seg;
 | |
| ERROR:  bad seg representation
 | |
| LINE 1: SELECT ''::seg AS seg;
 | |
|                ^
 | |
| DETAIL:  syntax error at end of input
 | |
| SELECT 'ABC'::seg AS seg;
 | |
| ERROR:  bad seg representation
 | |
| LINE 1: SELECT 'ABC'::seg AS seg;
 | |
|                ^
 | |
| DETAIL:  syntax error at or near "A"
 | |
| SELECT '1ABC'::seg AS seg;
 | |
| ERROR:  bad seg representation
 | |
| LINE 1: SELECT '1ABC'::seg AS seg;
 | |
|                ^
 | |
| DETAIL:  syntax error at or near "A"
 | |
| SELECT '1.'::seg AS seg;
 | |
| ERROR:  bad seg representation
 | |
| LINE 1: SELECT '1.'::seg AS seg;
 | |
|                ^
 | |
| DETAIL:  syntax error at or near "."
 | |
| SELECT '1.....'::seg AS seg;
 | |
| ERROR:  bad seg representation
 | |
| LINE 1: SELECT '1.....'::seg AS seg;
 | |
|                ^
 | |
| DETAIL:  syntax error at or near ".."
 | |
| SELECT '.1'::seg AS seg;
 | |
| ERROR:  bad seg representation
 | |
| LINE 1: SELECT '.1'::seg AS seg;
 | |
|                ^
 | |
| DETAIL:  syntax error at or near "."
 | |
| SELECT '1..2.'::seg AS seg;
 | |
| ERROR:  bad seg representation
 | |
| LINE 1: SELECT '1..2.'::seg AS seg;
 | |
|                ^
 | |
| DETAIL:  syntax error at or near "."
 | |
| SELECT '1 e7'::seg AS seg;
 | |
| ERROR:  bad seg representation
 | |
| LINE 1: SELECT '1 e7'::seg AS seg;
 | |
|                ^
 | |
| DETAIL:  syntax error at or near "e"
 | |
| SELECT '1e700'::seg AS seg;
 | |
| ERROR:  "1e700" is out of range for type real
 | |
| LINE 1: SELECT '1e700'::seg AS seg;
 | |
|                ^
 | |
| --
 | |
| -- testing the  operators
 | |
| --
 | |
| -- equality/inequality:
 | |
| --
 | |
| SELECT '24 .. 33.20'::seg = '24 .. 33.20'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '24 .. 33.20'::seg = '24 .. 33.21'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '24 .. 33.20'::seg != '24 .. 33.20'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '24 .. 33.20'::seg != '24 .. 33.21'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| -- overlap
 | |
| --
 | |
| SELECT '1'::seg && '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1'::seg && '2'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 ..'::seg && '0 ..'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg && '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '..0'::seg && '0..'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1 .. 0.1'::seg && '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1 .. 0'::seg && '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1 .. -0.0001'::seg && '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 ..'::seg && '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg && '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg && '2'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 2'::seg && '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1'::seg && '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2'::seg && '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1'::seg && '0 .. 2'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| -- overlap on the left
 | |
| --
 | |
| SELECT '1'::seg &< '0'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1'::seg &< '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1'::seg &< '2'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg &< '0'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg &< '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg &< '2'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg &< '0 .. 0.5'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg &< '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg &< '0 .. 2'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg &< '1 .. 2'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg &< '2 .. 3'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| -- overlap on the right
 | |
| --
 | |
| SELECT '0'::seg &> '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1'::seg &> '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2'::seg &> '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0'::seg &> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1'::seg &> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2'::seg &> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 0.5'::seg &> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg &> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 2'::seg &> '0 .. 2'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1 .. 2'::seg &> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2 .. 3'::seg &> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| -- left
 | |
| --
 | |
| SELECT '1'::seg << '0'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1'::seg << '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1'::seg << '2'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg << '0'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg << '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg << '2'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg << '0 .. 0.5'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg << '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg << '0 .. 2'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg << '1 .. 2'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg << '2 .. 3'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| -- right
 | |
| --
 | |
| SELECT '0'::seg >> '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1'::seg >> '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2'::seg >> '1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0'::seg >> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1'::seg >> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2'::seg >> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 0.5'::seg >> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 1'::seg >> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. 2'::seg >> '0 .. 2'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1 .. 2'::seg >> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '2 .. 3'::seg >> '0 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| -- "contained in" (the left value belongs within the interval specified in the right value):
 | |
| --
 | |
| SELECT '0'::seg        <@ '0'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0'::seg        <@ '0 ..'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0'::seg        <@ '.. 0'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0'::seg        <@ '-1 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0'::seg        <@ '-1 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1'::seg       <@ '-1 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1'::seg        <@ '-1 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1 .. 1'::seg  <@ '-1 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| -- "contains" (the left value contains the interval specified in the right value):
 | |
| --
 | |
| SELECT '0'::seg @> '0'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0 .. '::seg <@ '0'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '.. 0'::seg <@ '0'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1 .. 1'::seg <@ '0'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  f
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0'::seg <@ '-1 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '-1'::seg <@ '-1 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| SELECT '1'::seg <@ '-1 .. 1'::seg AS bool;
 | |
|  bool 
 | |
| ------
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| -- Load some example data and build the index
 | |
| --
 | |
| CREATE TABLE test_seg (s seg);
 | |
| \copy test_seg from 'data/test_seg.data'
 | |
| CREATE INDEX test_seg_ix ON test_seg USING gist (s);
 | |
| SELECT count(*) FROM test_seg WHERE s @> '11..11.3';
 | |
|  count 
 | |
| -------
 | |
|    143
 | |
| (1 row)
 | |
| 
 | |
| -- Test sorting
 | |
| SELECT * FROM test_seg WHERE s @> '11..11.3' GROUP BY s;
 | |
|         s        
 | |
| -----------------
 | |
|  .. 4.0e1
 | |
|  .. >8.2e1
 | |
|  .. 9.0e1
 | |
|  <1.0 .. >13.0
 | |
|  1.3 .. 12.0
 | |
|  2.0 .. 11.5
 | |
|  2.1 .. 11.8
 | |
|  <2.3 ..
 | |
|  >2.3 ..
 | |
|  2.4 .. 11.3
 | |
|  2.5 .. 11.5
 | |
|  2.5 .. 11.8
 | |
|  2.6 ..
 | |
|  2.7 .. 12.0
 | |
|  <3.0 ..
 | |
|  3 .. 5.8e1
 | |
|  3.1 .. 11.5
 | |
|  3.5 .. 11.5
 | |
|  3.5 .. 12.2
 | |
|  <4.0 .. >1.2e1
 | |
|  <4.0 ..
 | |
|  4 .. 1.2e1
 | |
|  4.0 .. 11.7
 | |
|  4.0 .. 12.5
 | |
|  4.0 .. 13.0
 | |
|  4.0 .. 6.0e1
 | |
|  4.0 ..
 | |
|  4.2 .. 11.5
 | |
|  4.2 .. 11.7
 | |
|  <4.5 .. >1.2e1
 | |
|  4.5 .. 11.5
 | |
|  4.5 .. <1.2e1
 | |
|  4.5 .. >1.2e1
 | |
|  4.5 .. 12.5
 | |
|  4.5 .. 1.15e2
 | |
|  4.7 .. 11.8
 | |
|  4.8 .. 11.5
 | |
|  4.8 .. 11.6
 | |
|  4.8 .. 12.5
 | |
|  4.8 ..
 | |
|  4.9 .. >1.2e1
 | |
|  4.9 ..
 | |
|  5 .. 11.5
 | |
|  5 .. 1.2e1
 | |
|  5 .. 3.0e1
 | |
|  5.0 .. 11.4
 | |
|  5.0 .. 11.5
 | |
|  5.0 .. 11.6
 | |
|  5.0 .. 11.7
 | |
|  5.0 .. 12.0
 | |
|  5.0 .. >12.0
 | |
|  5.0 .. >1.2e1
 | |
|  5.2 .. 11.5
 | |
|  5.2 .. >1.2e1
 | |
|  5.25 .. >1.2e1
 | |
|  5.3 .. 11.5
 | |
|  5.3 .. 1.3e1
 | |
|  5.3 .. >9.0e1
 | |
|  5.3 ..
 | |
|  5.4 ..
 | |
|  5.5 .. 11.5
 | |
|  5.5 .. 11.7
 | |
|  5.5 .. 1.2e1
 | |
|  5.5 .. >1.2e1
 | |
|  5.5 .. 12.5
 | |
|  5.5 .. 13.5
 | |
|  5.5 ..
 | |
|  >5.5 ..
 | |
|  5.7 ..
 | |
|  5.9 ..
 | |
|  6 .. 11.5
 | |
|  6 .. >1.2e1
 | |
|  6.0 .. 11.5
 | |
|  6.0 .. 1.3e1
 | |
|  >6.0 .. <11.5
 | |
|  6.1 .. >1.2e1
 | |
|  6.1 ..
 | |
|  6.2 .. >11.5
 | |
|  6.3 ..
 | |
|  6.5 .. 11.5
 | |
|  6.5 .. 12.0
 | |
|  6.5 .. >12.0
 | |
|  6.5 ..
 | |
|  6.6 ..
 | |
|  6.7 .. 11.5
 | |
|  6.7 ..
 | |
|  6.75 ..
 | |
|  6.8 ..
 | |
|  6.9 .. 12.2
 | |
|  6.9 .. >9.0e1
 | |
|  6.9 ..
 | |
|  <7.0 .. >11.5
 | |
|  7.0 .. 11.5
 | |
|  7.0 .. >11.5
 | |
|  7.0 ..
 | |
|  >7.15 ..
 | |
|  7.2 .. 13.5
 | |
|  7.3 .. >9.0e1
 | |
|  7.3 ..
 | |
|  >7.3 ..
 | |
|  7.4 .. 12.1
 | |
|  7.4 ..
 | |
|  7.5 .. 11.5
 | |
|  7.5 .. 12.0
 | |
|  7.5 ..
 | |
|  7.7 .. 11.5
 | |
|  7.7 ..
 | |
|  7.75 ..
 | |
|  8.0 .. 11.7
 | |
|  8.0 .. 12.0
 | |
|  8.0 .. >13.0
 | |
|  8.2 ..
 | |
|  8.3 ..
 | |
|  8.5 .. >11.5
 | |
|  8.5 .. 12.5
 | |
|  8.5 ..
 | |
|  8.6 .. >9.9e1
 | |
|  8.7 .. 11.3
 | |
|  8.7 .. 11.7
 | |
|  8.9 .. 11.5
 | |
|  9 .. >1.2e1
 | |
|  9.0 .. 11.3
 | |
|  9.0 .. 11.5
 | |
|  9.0 .. 1.2e1
 | |
|  9.0 ..
 | |
|  9.2 .. 1.2e1
 | |
|  9.4 .. 12.2
 | |
|  <9.5 .. 1.2e1
 | |
|  <9.5 .. >12.2
 | |
|  9.5 ..
 | |
|  9.6 .. 11.5
 | |
|  9.7 .. 11.5
 | |
|  9.7 .. >1.2e1
 | |
|  9.8 .. >12.5
 | |
|  <1.0e1 .. >11.6
 | |
|  10.0 .. 11.5
 | |
|  10.0 .. 12.5
 | |
|  10.0 .. >12.5
 | |
|  10.2 .. 11.8
 | |
|  <10.5 .. 11.5
 | |
|  10.5 .. 11.5
 | |
|  10.5 .. <13.5
 | |
|  10.7 .. 12.3
 | |
| (143 rows)
 | |
| 
 | |
| -- Test functions
 | |
| SELECT seg_lower(s), seg_center(s), seg_upper(s)
 | |
| FROM test_seg WHERE s @> '11.2..11.3' OR s IS NULL ORDER BY s;
 | |
|  seg_lower | seg_center | seg_upper 
 | |
| -----------+------------+-----------
 | |
|  -Infinity |  -Infinity |        40
 | |
|  -Infinity |  -Infinity |        82
 | |
|  -Infinity |  -Infinity |        90
 | |
|          1 |          7 |        13
 | |
|        1.3 |       6.65 |        12
 | |
|          2 |       6.75 |      11.5
 | |
|        2.1 |       6.95 |      11.8
 | |
|        2.3 |   Infinity |  Infinity
 | |
|        2.3 |   Infinity |  Infinity
 | |
|        2.4 |       6.85 |      11.3
 | |
|        2.5 |          7 |      11.5
 | |
|        2.5 |       7.15 |      11.8
 | |
|        2.6 |   Infinity |  Infinity
 | |
|        2.7 |       7.35 |        12
 | |
|          3 |   Infinity |  Infinity
 | |
|          3 |       30.5 |        58
 | |
|        3.1 |        7.3 |      11.5
 | |
|        3.5 |        7.5 |      11.5
 | |
|        3.5 |       7.85 |      12.2
 | |
|          4 |          8 |        12
 | |
|          4 |   Infinity |  Infinity
 | |
|          4 |          8 |        12
 | |
|          4 |       7.85 |      11.7
 | |
|          4 |       8.25 |      12.5
 | |
|          4 |        8.5 |        13
 | |
|          4 |         32 |        60
 | |
|          4 |   Infinity |  Infinity
 | |
|        4.2 |       7.85 |      11.5
 | |
|        4.2 |       7.95 |      11.7
 | |
|        4.5 |       8.25 |        12
 | |
|        4.5 |          8 |      11.5
 | |
|        4.5 |       8.25 |        12
 | |
|        4.5 |       8.25 |        12
 | |
|        4.5 |        8.5 |      12.5
 | |
|        4.5 |      59.75 |       115
 | |
|        4.7 |       8.25 |      11.8
 | |
|        4.8 |       8.15 |      11.5
 | |
|        4.8 |        8.2 |      11.6
 | |
|        4.8 |       8.65 |      12.5
 | |
|        4.8 |   Infinity |  Infinity
 | |
|        4.9 |       8.45 |        12
 | |
|        4.9 |   Infinity |  Infinity
 | |
|          5 |       8.25 |      11.5
 | |
|          5 |        8.5 |        12
 | |
|          5 |       17.5 |        30
 | |
|          5 |        8.2 |      11.4
 | |
|          5 |       8.25 |      11.5
 | |
|          5 |        8.3 |      11.6
 | |
|          5 |       8.35 |      11.7
 | |
|          5 |        8.5 |        12
 | |
|          5 |        8.5 |        12
 | |
|          5 |        8.5 |        12
 | |
|        5.2 |       8.35 |      11.5
 | |
|        5.2 |        8.6 |        12
 | |
|       5.25 |      8.625 |        12
 | |
|        5.3 |        8.4 |      11.5
 | |
|        5.3 |       9.15 |        13
 | |
|        5.3 |      47.65 |        90
 | |
|        5.3 |   Infinity |  Infinity
 | |
|        5.4 |   Infinity |  Infinity
 | |
|        5.5 |        8.5 |      11.5
 | |
|        5.5 |        8.6 |      11.7
 | |
|        5.5 |       8.75 |        12
 | |
|        5.5 |       8.75 |        12
 | |
|        5.5 |          9 |      12.5
 | |
|        5.5 |        9.5 |      13.5
 | |
|        5.5 |   Infinity |  Infinity
 | |
|        5.5 |   Infinity |  Infinity
 | |
|        5.7 |   Infinity |  Infinity
 | |
|        5.9 |   Infinity |  Infinity
 | |
|          6 |       8.75 |      11.5
 | |
|          6 |          9 |        12
 | |
|          6 |       8.75 |      11.5
 | |
|          6 |        9.5 |        13
 | |
|          6 |       8.75 |      11.5
 | |
|        6.1 |       9.05 |        12
 | |
|        6.1 |   Infinity |  Infinity
 | |
|        6.2 |       8.85 |      11.5
 | |
|        6.3 |   Infinity |  Infinity
 | |
|        6.5 |          9 |      11.5
 | |
|        6.5 |       9.25 |        12
 | |
|        6.5 |       9.25 |        12
 | |
|        6.5 |   Infinity |  Infinity
 | |
|        6.6 |   Infinity |  Infinity
 | |
|        6.7 |        9.1 |      11.5
 | |
|        6.7 |   Infinity |  Infinity
 | |
|       6.75 |   Infinity |  Infinity
 | |
|        6.8 |   Infinity |  Infinity
 | |
|        6.9 |       9.55 |      12.2
 | |
|        6.9 |      48.45 |        90
 | |
|        6.9 |   Infinity |  Infinity
 | |
|          7 |       9.25 |      11.5
 | |
|          7 |       9.25 |      11.5
 | |
|          7 |       9.25 |      11.5
 | |
|          7 |   Infinity |  Infinity
 | |
|       7.15 |   Infinity |  Infinity
 | |
|        7.2 |      10.35 |      13.5
 | |
|        7.3 |      48.65 |        90
 | |
|        7.3 |   Infinity |  Infinity
 | |
|        7.3 |   Infinity |  Infinity
 | |
|        7.4 |       9.75 |      12.1
 | |
|        7.4 |   Infinity |  Infinity
 | |
|        7.5 |        9.5 |      11.5
 | |
|        7.5 |       9.75 |        12
 | |
|        7.5 |   Infinity |  Infinity
 | |
|        7.7 |        9.6 |      11.5
 | |
|        7.7 |   Infinity |  Infinity
 | |
|       7.75 |   Infinity |  Infinity
 | |
|          8 |       9.85 |      11.7
 | |
|          8 |         10 |        12
 | |
|          8 |       10.5 |        13
 | |
|        8.2 |   Infinity |  Infinity
 | |
|        8.3 |   Infinity |  Infinity
 | |
|        8.5 |         10 |      11.5
 | |
|        8.5 |       10.5 |      12.5
 | |
|        8.5 |   Infinity |  Infinity
 | |
|        8.6 |       53.8 |        99
 | |
|        8.7 |         10 |      11.3
 | |
|        8.7 |       10.2 |      11.7
 | |
|        8.9 |       10.2 |      11.5
 | |
|          9 |       10.5 |        12
 | |
|          9 |      10.15 |      11.3
 | |
|          9 |      10.25 |      11.5
 | |
|          9 |       10.5 |        12
 | |
|          9 |   Infinity |  Infinity
 | |
|        9.2 |       10.6 |        12
 | |
|        9.4 |       10.8 |      12.2
 | |
|        9.5 |      10.75 |        12
 | |
|        9.5 |      10.85 |      12.2
 | |
|        9.5 |   Infinity |  Infinity
 | |
|        9.6 |      10.55 |      11.5
 | |
|        9.7 |       10.6 |      11.5
 | |
|        9.7 |      10.85 |        12
 | |
|        9.8 |      11.15 |      12.5
 | |
|         10 |       10.8 |      11.6
 | |
|         10 |      10.75 |      11.5
 | |
|         10 |      11.25 |      12.5
 | |
|         10 |      11.25 |      12.5
 | |
|       10.2 |         11 |      11.8
 | |
|       10.5 |         11 |      11.5
 | |
|       10.5 |         11 |      11.5
 | |
|       10.5 |         12 |      13.5
 | |
|       10.7 |       11.5 |      12.3
 | |
|            |            |          
 | |
| (144 rows)
 | |
| 
 |