mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-28 11:55:03 +03:00 
			
		
		
		
	Buildfarm member skink failed with symptoms suggesting that an auto-analyze had happened and changed the plan displayed for a test query. Although this is evidently of low probability, regression tests that sometimes fail are no fun, so add commands to force a bitmap scan to be chosen.
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| SET enable_seqscan to false;
 | |
| -- test search for "not equals"
 | |
| CREATE TABLE test_ne (
 | |
|    a  TIMESTAMP,
 | |
|    b  NUMERIC
 | |
| );
 | |
| CREATE INDEX test_ne_idx ON test_ne USING gist (a, b);
 | |
| INSERT INTO test_ne SELECT '2009-01-01', 10.7 FROM generate_series(1,1000);
 | |
| INSERT INTO test_ne VALUES('2007-02-03', -91.3);
 | |
| INSERT INTO test_ne VALUES('2011-09-01', 43.7);
 | |
| INSERT INTO test_ne SELECT '2009-01-01', 10.7 FROM generate_series(1,1000);
 | |
| SET enable_indexscan to false;
 | |
| EXPLAIN (COSTS OFF) SELECT * FROM test_ne WHERE a <> '2009-01-01' AND b <> 10.7;
 | |
|                                               QUERY PLAN                                              
 | |
| ------------------------------------------------------------------------------------------------------
 | |
|  Bitmap Heap Scan on test_ne
 | |
|    Recheck Cond: ((a <> 'Thu Jan 01 00:00:00 2009'::timestamp without time zone) AND (b <> 10.7))
 | |
|    ->  Bitmap Index Scan on test_ne_idx
 | |
|          Index Cond: ((a <> 'Thu Jan 01 00:00:00 2009'::timestamp without time zone) AND (b <> 10.7))
 | |
| (4 rows)
 | |
| 
 | |
| SELECT * FROM test_ne WHERE a <> '2009-01-01' AND b <> 10.7;
 | |
|             a             |   b   
 | |
| --------------------------+-------
 | |
|  Sat Feb 03 00:00:00 2007 | -91.3
 | |
|  Thu Sep 01 00:00:00 2011 |  43.7
 | |
| (2 rows)
 | |
| 
 | |
| RESET enable_indexscan;
 | |
| -- test search for "not equals" using an exclusion constraint
 | |
| CREATE TABLE zoo (
 | |
|    cage   INTEGER,
 | |
|    animal TEXT,
 | |
|    EXCLUDE USING gist (cage WITH =, animal WITH <>)
 | |
| );
 | |
| INSERT INTO zoo VALUES(123, 'zebra');
 | |
| INSERT INTO zoo VALUES(123, 'zebra');
 | |
| INSERT INTO zoo VALUES(123, 'lion');
 | |
| ERROR:  conflicting key value violates exclusion constraint "zoo_cage_animal_excl"
 | |
| DETAIL:  Key (cage, animal)=(123, lion) conflicts with existing key (cage, animal)=(123, zebra).
 | |
| INSERT INTO zoo VALUES(124, 'lion');
 |