描述一下PostgreSQL中的结果集?[英] Describe result set in PostgreSQL?

本文是小编为大家收集整理的关于描述一下PostgreSQL中的结果集?的处理方法,想解了描述一下PostgreSQL中的结果集?的问题怎么解决?描述一下PostgreSQL中的结果集?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

在 Microsoft Sql Server 中,有一个 proc sys.sp_describe_first_result_set,它接受任意 sql 查询字符串并返回描述结果集中的类型的数据,如果它被执行.请注意,这是描述复杂查询的结果,而不是表.MSDN 参考资料

Postgres 有类似的东西吗?

解决方案

在协议级别 - 以 描述的形式扩展查询中的 消息协议.

我不知道任意 SQL 字符串的任何 SQL 级别等效项.好主意;在 pgsql-general 上提出它.我怀疑它很容易实现.

事实上,快速浏览一下 src/backend/tcop/postgres.c 中的 exec_describe_statement_message 会发现大脑在 src/backend/access/common/printtup.c 中的 SendRowDescriptionMessage 中.编写一个简单的 C 扩展来完成类似的工作并生成结果集应该不难.如果您熟悉代码库,希望几个小时的工作;这个想法是:

  • 将 SQL 字符串输入解析器/重写器/规划器以获取计划
  • 找到顶级节点的目标列表,如果有的话.这将是 DML 的 RETURNING 节点,或 SELECT 的顶级 Query tlist.
  • 将 tlist 输入 ExecTypeFromTL
  • 循环遍历 tupledesc 条目,通过在 tlist 中查找来跳过 resjunk 列,并为查询的每个非 resjunk 输出发出一行.

本文地址:https://www.itbaoku.cn/post/1763883.html