Thread: Data type display

Data type display

From
Peter Eisentraut
Date:
Is there a reason why pgAdmin uses internal type names like int2 everywhere,
whereas the supposedly user-friendly approach would be that external names
like smallint should be used.  (Compare to the output of psql and pg_dump.)
You can obtain the friendly name using the backend function format_type,
which has been available at least since 7.3.  This would also avoid the need
for manual concatenating with "[]" for array types.

Also, the lists of data types you get when creating a table are not sorted
very well.  The beginning seems to be alphabetical, but the geometry types
are at the end.

Perhaps, as an interface improvement, remove all the array types from the list
but instead make a separate checkbox "Array" instead.

--
Peter Eisentraut
http://developer.postgresql.org/~petere/

Re: Data type display

From
Andreas Pflug
Date:
Peter Eisentraut wrote:
> Is there a reason why pgAdmin uses internal type names like int2 everywhere,
> whereas the supposedly user-friendly approach would be that external names
> like smallint should be used.  (Compare to the output of psql and pg_dump.)
> You can obtain the friendly name using the backend function format_type,
> which has been available at least since 7.3.  This would also avoid the need
> for manual concatenating with "[]" for array types.

I wasn't aware of that function back those days...


> Also, the lists of data types you get when creating a table are not sorted
> very well.  The beginning seems to be alphabetical, but the geometry types
> are at the end.
>
> Perhaps, as an interface improvement, remove all the array types from the list
> but instead make a separate checkbox "Array" instead.

pgAdmin uses the following query when retrieving valid types:

SELECT
typname, t.oid, CASE WHEN typelem > 0 THEN typelem ELSE t.oid END as
elemoid, typlen, typtype, nspname,
   FROM pg_type t
   JOIN pg_namespace nsp ON typnamespace=nsp.oid
  WHERE typisdefined
    AND typtype IN ('b', 'd')
  ORDER BY CASE WHEN typtype='d' THEN 0 ELSE 1 END,
    (t.typelem>0)::bool,
    t.typname

serial and bigserial are added 'manually' if appropriate.

The goal was to have the types grouped: domain first, standard types
next, then array types.

I'm not too happy about the combobox at all, it's much too big. I'd
really like some hierarchical selection method, maybe a combobox with a
dropdown tree instead of a list. Wanted to implement this for ages now...

Regards,
Andreas