Thread: what's the meaning of key?
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
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