在作查询执行时,不知道中间结果如何保存,无法知道每个字段是什么类型, 尤其是作了sum,max等聚集函数后, 返回的字段完全不在系统的属性定义里面, 因此对于一个中间结果,需要一个描述这个tuple的数据结构.
在pg里面, 一条tuple使用TupleTableSlot保存, 它每个字段的信息是由TupleDesc保存. 注释中表明TupleTableSlot可以表示四种类型的tuple,其中前两种是物理上的tuple, 即对应于磁盘文件中的页, 存放在buffer中.另外两种还不知道是什么情况 .
疑问:
- pg是如何根据TupleDesc获取TupleTableSlot中的某个列的
- pg中如何保存query中的谓词,并且进行对元组进行评估的