Thread: what's the meaning of key?

what's the meaning of key?

From
"jacktby@gmail.com"
Date:

I'm doing research on heap_am, and for heap_beginscan func, I find
out that there is a arg called nkeys, I use some sqls as examples like 
'select * from t;' and 'select * from t where a  = 1', but it is always zero,
can you give me some descriptions for this? what's it used for? 

jacktby@gmail.com

Re: what's the meaning of key?

From
Heikki Linnakangas
Date:
On 05/02/2023 06:09, jacktby@gmail.com wrote:
> I'm doing research on heap_am, and for heap_beginscan func, I find
> out that there is a arg called nkeys, I use some sqls as examples like
> 'select * from t;' and 'select * from t where a  = 1', but it is always 
> zero,
> can you give me some descriptions for this? what's it used for?

The executor evaluates table scan quals in the SeqScan node itself, in 
ExecScan function. It doesn't use the heap_beginscan scankeys.

There has been some discussion on changing that, as some table access 
methods might be able to filter rows more efficiently using the scan 
keys than the executor node. But that's how it currently works.

I think the heap scankeys are used by catalog accesses, though, so it's 
not completely dead code.

- Heikki