Jon*_*nas 1 postgresql types column-types
我正在为 PostgreSQL 实现一个驱动程序,并获取一条RowDescription消息和几条DataRow消息以响应数据库查询。但是如何获取返回的列的类型?例如,第一列应该是 an int,第二列应该是an 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
Run Code Online (Sandbox Code Playgroud)
对于DataRow:
[DataRow] 2 columns
data: 2
data: Jonas
[DataRow] 2 columns
data: 76
data: Anders
Run Code Online (Sandbox Code Playgroud)
有什么建议?这是我必须在任何系统表中查找的内容吗?
objId是pg_type.oid列类型的引用。23int4和 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). PQfmod的文档说 typmod 解释是特定于类型的。
| 归档时间: |
|
| 查看次数: |
821 次 |
| 最近记录: |