Thread: User-defined type name begins with the underscore character (_) can be created
User-defined type name begins with the underscore character (_) can be created
From
Pavel Golub
Date:
Hello, pgsql-bugs. Documentation says: "User-defined type names cannot begin with the underscore character (_) and can only be 62 characters long (or in general NAMEDATALEN - 2, rather than the NAMEDATALEN - 1 characters allowed for other names). Type names beginning with underscore are reserved for internally-created array type names. " However, such SQL may be executed: CREATE TYPE _my AS (id int4, id2 int4); And server treats it as array type. Thus next SQL will be executed too: CREATE TABLE my_table( my_arr my[] ); Checked on PostgreSQL versions (Windows XP): 8.0.6 8.1.0 8.2.0 -- With best wishes, Pavel mailto:pavel@microolap.com
Re: User-defined type name begins with the underscore character (_) can be created
From
Tom Lane
Date:
Pavel Golub <pavel@microolap.com> writes: > Documentation says: > "User-defined type names cannot begin with the > underscore character (_) We've never actually enforced that AFAIK, so this might be considered a documentation bug. > CREATE TYPE _my AS (id int4, id2 int4); > > CREATE TABLE my_table( > my_arr my[] > ); You could argue that the problem there is that LookupTypeName is not verifying that what it finds is really an array of the specified type. We could make it look up the given name without modification and then apply get_array_type(), but this would mean two catalog lookups not one. Still, that might be better than possibly breaking applications that have historically worked. regards, tom lane