yuoggy
yuoggy

Reputation: 147

_text postgres data type

I get a table with type _text

create table mt ( id int8,
directions _text null)

Its not my code so I don't know what is type _text and how to work with it. I look for it in doc https://www.postgresql.org/docs/11/datatype.html but I didn't find.

My question is does anybody works with _text in postgresql? I need an examples.

Upvotes: 5

Views: 8093

Answers (1)

user330315
user330315

Reputation:

It's the internal type name for an array. Similar to int8 being the internal name for bigint.

So your statement is the same as:

create table mt 
(
  id bigint,
  directions text[]
)

I can't find the reference any more, but the reason was that [] is invalid in an identifier (and a type name is an identifier) and thus array types are identified with the _ prefix in pg_type

This is detectable through the pg_type system catalog:

select bt.typname as base_type, 
       at.typname as array_type
from pg_type bt
  join pg_type at on bt.typarray = at.oid
where bt.typnamespace = 'pg_catalog'::regnamespace  
order by bt.typname  

pg_type.typarray links to the pg_type row that contains the array type for the base type.

Laurenz answered a similar question on Database Administrators with some more technical insight.

Upvotes: 10

Related Questions