dram.me

Postgres95查询的执行流程

补遗

  1. handleCopyOuthandleCopyIn对应的分别是COPY ... TOCOPY ... FROM语句,而非COPY OUTCOPY IN。—— 2017-09-27

PG95查询的执行代码逻辑从bin/psql/psql.cMainLoop开始,以下罗列其中的几个关键步骤:

对于HandleSlashCmds中的处理机制,这里不展开说,主要包括以下几类命令:

查询和结果显示都是在SendQuery中处理,以下详细说明:

最后,再说一个细节,在PQdisplayTuples中(代码在interfaces/libpq/fe-exec.c),会查询PAGER环境变量,直接调用popen启动该环境变量的值,以此显示结果。另外,还需要忽略SIGPIPE信号。这就是PAGER的典型用法,Git关于pager的实现则要复杂得多。