mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 22:49:41 +03:00 
			
		
		
		
	Module provides new access method. It is actually a simple Bloom filter implemented as pgsql's index. It could give some benefits on search with large number of columns. Module is a single way to test generic WAL interface committed earlier. Author: Teodor Sigaev, Alexander Korotkov Reviewers: Aleksander Alekseev, Michael Paquier, Jim Nasby
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*-------------------------------------------------------------------------
 | |
|  *
 | |
|  * blcost.c
 | |
|  *		Cost estimate function for bloom indexes.
 | |
|  *
 | |
|  * Copyright (c) 2016, PostgreSQL Global Development Group
 | |
|  *
 | |
|  * IDENTIFICATION
 | |
|  *	  contrib/bloom/blcost.c
 | |
|  *
 | |
|  *-------------------------------------------------------------------------
 | |
|  */
 | |
| #include "postgres.h"
 | |
| 
 | |
| #include "fmgr.h"
 | |
| #include "optimizer/cost.h"
 | |
| #include "utils/selfuncs.h"
 | |
| 
 | |
| #include "bloom.h"
 | |
| 
 | |
| /*
 | |
|  * Estimate cost of bloom index scan.
 | |
|  */
 | |
| void
 | |
| blcostestimate(PlannerInfo *root, IndexPath *path, double loop_count,
 | |
| 			   Cost *indexStartupCost, Cost *indexTotalCost,
 | |
| 			   Selectivity *indexSelectivity, double *indexCorrelation)
 | |
| {
 | |
| 	IndexOptInfo *index = path->indexinfo;
 | |
| 	List	   *qinfos;
 | |
| 	GenericCosts costs;
 | |
| 
 | |
| 	/* Do preliminary analysis of indexquals */
 | |
| 	qinfos = deconstruct_indexquals(path);
 | |
| 
 | |
| 	MemSet(&costs, 0, sizeof(costs));
 | |
| 
 | |
| 	/* We have to visit all index tuples anyway */
 | |
| 	costs.numIndexTuples = index->tuples;
 | |
| 
 | |
| 	/* Use generic estimate */
 | |
| 	genericcostestimate(root, path, loop_count, qinfos, &costs);
 | |
| 
 | |
| 	*indexStartupCost = costs.indexStartupCost;
 | |
| 	*indexTotalCost = costs.indexTotalCost;
 | |
| 	*indexSelectivity = costs.indexSelectivity;
 | |
| 	*indexCorrelation = costs.indexCorrelation;
 | |
| }
 |