PGAdmin3隐藏对象类型

时间:2017-08-16 20:56:17

标签: postgresql pgadmin

我已经浏览过网络和PGSQL文档,以获取有关对我来说是隐藏数据类型的信息,但是这些信息很简短。我正在使用一个现有的数据库,该数据库具有带前面双下划线(__some_type)的返回类型的函数。在PGAdmin3中,您可以选择在树视图中显示类型,在那里我看到一些可识别的类型,这些类型在各种函数中使用,什么不是,但我没有看到其他类型。我通过PyCharm Full edition了解到,我可以连接到PostgreSQL DB并查看我提到的所有类型。与控制台一起使用" \ dT",而不是PGAdmin本身。

  

问题:在一个或两个下划线之前的类型处理是什么? (__some_type)。

跟进:我确实发现一个未经验证的来源描述了一个约定,该约定限制用户创建以下划线开头但尚未从PG源确认的类型。

以下是指向该链接的链接:https://momjian.us/main/writings/pgsql/aw_pgsql_book/node223.html

我提到的那条线一路走到了底部,#34;注意":

  

类型名称不能以下划线字符(" _")开头,并且可以   只有31个字符长。这是因为Postgres默默地创造了   每种基类型的数组类型,名称由基数组成   类型的名称前缀为下划线。

继续搜索结果 我找到了对我所说的内容的引用,但没有详细说明这些类型的行为,或者如果用户违反了这种限制会发生什么。

来自6.3文档的PG来源:

  

如前所述,Postgres完全支持基类型数组。   此外,Postgres还支持用户定义类型的数组。   定义类型时,Postgres会自动提供支持   那种类型的数组。由于历史原因,数组类型具有   与具有下划线字符_的用户定义类型相同的名称   前缀。复合类型不需要在它们上定义任何函数,   因为系统已经了解它们的内部结构。

6.4 Docs on Create Type

  

限制

     

类型名称不能以下划线字符(" _")开头,并且可以   只有15个字符长。这是因为Postgres默默地创造了   每种基类型的数组类型,名称由基数组成   类型的名称前缀为下划线。

1 个答案:

答案 0 :(得分:1)

类型名称中对下划线的限制不再适用。根据文档判断,它在8.28.3之间被删除。

这些类型不会出现在pgAdmin3中这一事实看起来像一个bug。从source可以看出,它会过滤掉带有前导下划线的任何类型。它试图压制自动生成的数组类型,但查询早于8.3版(当这仍然是一种可靠的方法时),并且从未更新为使用新的pg_type.typarray列。

不确定pgAdmin4中是否存在此问题。如果你想坚持使用pgAdmin3,BigSQL仍然保持fork,所以如果你想看到这个问题,他们可能是你最好的选择。