Thank you for your reply.
Okay, I understand the reason you mentioned. However, as a user (especially a novice user), when they create a domain, they can't directly display their object. Perhaps the user doesn't understand this internal mechanism of PostgreSQL. The '\dD' manual states, "By default, only user-created objects are shown." I think this means that user-created objects will be displayed. Therefore, when a built-in object appears in the search path before a user-created object, the user-created object should be displayed. This is because the user-created object is a domain object, which doesn't belong to the same type as built-in objects in pg_type (domain type is 'd', while built-in types use 'b'). Otherwise, it might give the user the illusion that the object wasn't created successfully. This also applies to other '\d' commands. Alternatively, we could explicitly explain the object display mechanism in the command's help documentation, or there are other ways to avoid this.
Thank you.
Best regards,
yuanchao zhang
The following bug has been logged on the website:
Bug reference: 19417
Logged by: yuanchao zhang
Email address: zhangyc0706@gmail.com
PostgreSQL version: 18.2
Operating system: windows 10
Description:
Because I checked the documentation regarding the use of '\dD', and there
was no explanation for this special case.
Because it is not a special case of \dD specifically but a behavior of how all the \d meta-commands function. This behavior is documented under Patterns (here, the absence of specifying any pattern):
''""
Whenever the pattern parameter is omitted completely, the \d commands display all objects that are visible in the current schema search path — this is equivalent to using * as the pattern. (An object is said to be visible if its containing schema is in the search path and no object of the same kind and name appears earlier in the search path. This is equivalent to the statement that the object can be referenced by name without explicit schema qualification.)
"""
Your new domain is not visible since the plain type numeric in pg_catalog is implicitly first in the default search_path.
David J.