mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 10:30:33 +03:00 
			
		
		
		
	Adds bool opclass to btree_gist extension, to allow creating GiST indexes on bool columns. GiST indexes on a single bool column don't seem particularly useful, but this allows defining exclusion constraings involving a bool column, for example. Author: Emre Hasegeli Reviewed-by: Andrey Borodin Discussion: https://postgr.es/m/CAE2gYzyDKJBZngssR84VGZEN=Ux=V9FV23QfPgo+7-yYnKKg4g@mail.gmail.com
		
			
				
	
	
		
			97 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| -- bool check
 | |
| CREATE TABLE booltmp (a bool);
 | |
| INSERT INTO booltmp VALUES (false), (true);
 | |
| SET enable_seqscan=on;
 | |
| SELECT count(*) FROM booltmp WHERE a <  true;
 | |
|  count 
 | |
| -------
 | |
|      1
 | |
| (1 row)
 | |
| 
 | |
| SELECT count(*) FROM booltmp WHERE a <= true;
 | |
|  count 
 | |
| -------
 | |
|      2
 | |
| (1 row)
 | |
| 
 | |
| SELECT count(*) FROM booltmp WHERE a  = true;
 | |
|  count 
 | |
| -------
 | |
|      1
 | |
| (1 row)
 | |
| 
 | |
| SELECT count(*) FROM booltmp WHERE a >= true;
 | |
|  count 
 | |
| -------
 | |
|      1
 | |
| (1 row)
 | |
| 
 | |
| SELECT count(*) FROM booltmp WHERE a >  true;
 | |
|  count 
 | |
| -------
 | |
|      0
 | |
| (1 row)
 | |
| 
 | |
| CREATE INDEX boolidx ON booltmp USING gist ( a );
 | |
| SET enable_seqscan=off;
 | |
| SELECT count(*) FROM booltmp WHERE a <  true;
 | |
|  count 
 | |
| -------
 | |
|      1
 | |
| (1 row)
 | |
| 
 | |
| SELECT count(*) FROM booltmp WHERE a <= true;
 | |
|  count 
 | |
| -------
 | |
|      2
 | |
| (1 row)
 | |
| 
 | |
| SELECT count(*) FROM booltmp WHERE a  = true;
 | |
|  count 
 | |
| -------
 | |
|      1
 | |
| (1 row)
 | |
| 
 | |
| SELECT count(*) FROM booltmp WHERE a >= true;
 | |
|  count 
 | |
| -------
 | |
|      1
 | |
| (1 row)
 | |
| 
 | |
| SELECT count(*) FROM booltmp WHERE a >  true;
 | |
|  count 
 | |
| -------
 | |
|      0
 | |
| (1 row)
 | |
| 
 | |
| -- Test index-only scans
 | |
| SET enable_bitmapscan=off;
 | |
| EXPLAIN (COSTS OFF)
 | |
| SELECT * FROM booltmp WHERE a;
 | |
|                 QUERY PLAN                
 | |
| ------------------------------------------
 | |
|  Index Only Scan using boolidx on booltmp
 | |
|    Filter: a
 | |
| (2 rows)
 | |
| 
 | |
| SELECT * FROM booltmp WHERE a;
 | |
|  a 
 | |
| ---
 | |
|  t
 | |
| (1 row)
 | |
| 
 | |
| EXPLAIN (COSTS OFF)
 | |
| SELECT * FROM booltmp WHERE NOT a;
 | |
|                 QUERY PLAN                
 | |
| ------------------------------------------
 | |
|  Index Only Scan using boolidx on booltmp
 | |
|    Filter: (NOT a)
 | |
| (2 rows)
 | |
| 
 | |
| SELECT * FROM booltmp WHERE NOT a;
 | |
|  a 
 | |
| ---
 | |
|  f
 | |
| (1 row)
 | |
| 
 |