NAMEDATALEN

定义数据库标识符最大长度的常量

NAMEDATALEN 是一个常量,它定义了数据库标识符(例如数据库、表、列等的名称)的最大长度(以单字节字符表示)。此值包含一个尾随零字节,这意味着实际最大长度为 NAMEDATALEN - 1

NAMEDATALEN 在编译时配置。如果更改,则需要 initdb 来初始化具有更改值的新数据库实例。

标准值为:64

确定 NAMEDATALEN 的值

实例使用的 NAMEDATALEN 值存储在 pg_control 文件中,并由 pg_controldata 在“标识符的最大长度”字段中报告。

PostgreSQL 9.6 及更高版本中,它由函数 pg_control_init() 返回的列 max_identifier_length 报告。

PostgreSQL 8.0 及更高版本中,它由预设配置参数 max_identifier_length 报告。请注意,max_identifier_length 报告的值始终为 NAMEDATALEN - 1

NAMEDATALEN 和 ENUM

除了数据库标识符之外,ENUM 标签的最大长度也限制为 NAMEDATALEN - 1 字节。

源代码

NAMEDATALENsrc/include/pg_config_manual.h 中定义为

/*
 * Maximum length for identifiers (e.g. table names, column names,
 * function names).  Names actually are limited to one less byte than this,
 * because the length must include a trailing zero byte.
 *
 * Changing this requires an initdb.
 */
#define NAMEDATALEN 64

备注

这个 2017 年的 pgsql-hackers 线程:重新审视 NAMEDATALEN 包含了一些关于为什么 NAMEDATALEN 在未来不太可能扩展以及讨论使其成为可配置参数的(不)可行性的见解。2021 年的一个线程(“由于非拉丁语言而导致 NAMEDATALEN 增加”)讨论了使 NAMEDATALEN 更灵活的可能方法。

更改历史记录

分类

DDLPostgreSQL 内部

反馈

提交任何关于 "NAMEDATALEN" 的评论、建议或更正 此处