gpt4 book ai didi

postgresql - 如何从 RowDescription 消息中查看 PostgreSQL 列类型?

转载 作者:行者123 更新时间:2023-11-29 12:47:30 26 4
gpt4 key购买 nike

我正在为 PostgreSQL 实现一个驱动程序并得到一个 RowDescription消息和一些响应数据库查询的 DataRow 消息。但是如何获取返回的列的类型呢?例如。第一列应该是 int,第二列应该是 varchar(20)

以下是 RowDescription 的一些打印输出:

[RowDescription] 2 rows
[Row] id
tableObjId: 16393
attrNr: 1
objId: 23
dataTypeSz: 4
typeModifier: -1
formatCode: 0
[Row] name
tableObjId: 16393
attrNr: 2
objId: 1043
dataTypeSz: -1
typeModifier: 24
formatCode: 0

对于 DataRow:

[DataRow] 2 columns
data: 2
data: Jonas
[DataRow] 2 columns
data: 76
data: Anders

有什么建议吗?这是我必须在任何系统表中查找的任何内容吗?

最佳答案

objId 是对列类型的 pg_type.oid 的引用。 23 是 int4 而 1043 是 varchar (select * from pg_type where oid in (23,1043))

第二列的类型修饰符应该指示 varchar 上的限定符,尽管我不太清楚为什么它是 24 而不是 20。可能是因为那是返回的 varlena 结构的长度,它前面有一个 32 位长度.无论如何,这就是 typmod 的工作原理:如果您执行 select pg_catalog.format_type(1043, 24),您将看到输出为 character varying(20)documentation for PQfmod表示 typmod 解释是特定于类型的。

关于postgresql - 如何从 RowDescription 消息中查看 PostgreSQL 列类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11829368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com