确定某次函数调用具体对应哪一个物理函数的决议步骤如下:
函数类型推导流程
从系统目录 pg_proc 中检索待选函数。若为未限定的函数名,从当前搜索路径下检索名称和入参个数相符的可见函数;若显式指定了模式名,则仅检索指定模式下的函数。
寻找与传入实参类型完全精确匹配的函数。若找到唯一精确匹配,直接采用[9]。
若未找到精确匹配,检查该函数调用是否属于特殊的函数式类型转换请求(例如当入参仅为一个且函数名恰好与某个内部数据类型同名时,系统将其视为一种 CAST 语法糖处理)。
寻找最佳匹配函数:
剔除入参类型不匹配且无法通过隐式转换达成的候选。
若入参包含域类型(Domain),在后续推导步骤中将其平铺视为其底层基类型对待。
保留在入参类型上精确匹配项最多的候选者。
保留在需要执行类型转换的位置上能接受该类别首选类型(preferred type)最多的候选者。
对于未知类型字面量 unknown,优先选用字符串类别。