@@ -85,11 +85,12 @@ WITH column_base AS (
8585 -- Array types: apply same schema qualification logic to element type
8686 -- Use typcategory = 'A' rather than typelem <> 0; the latter is true
8787 -- for non-array fixed-length types like name (typelem points to char).
88+ -- Use format_type to preserve typmod for element types (e.g., varchar(128)[] for character varying(128)[])
8889 CASE
89- WHEN en .nspname = ' pg_catalog' THEN et .typname || ' [] '
90- WHEN en .nspname = c .table_schema THEN et .typname || ' [] '
91- ELSE en .nspname || ' .' || et .typname || ' [] '
92- END
90+ WHEN en .nspname = ' pg_catalog' THEN et .typname
91+ WHEN en .nspname = c .table_schema THEN et .typname
92+ ELSE en .nspname || ' .' || et .typname
93+ END || COALESCE( substring (format_type( a . atttypid , a . atttypmod ) FROM ' \( [^)]* \) ' ), ' ' ) || ' [] '
9394 WHEN dt .typtype = ' b' THEN
9495 -- Non-array base types: qualify if not in pg_catalog or table's schema
9596 -- Use format_type to preserve typmod for extension types (e.g., vector(384) for pgvector)
@@ -203,11 +204,12 @@ WITH column_base AS (
203204 -- Array types: apply same schema qualification logic to element type
204205 -- Use typcategory = 'A' rather than typelem <> 0; the latter is true
205206 -- for non-array fixed-length types like name (typelem points to char).
207+ -- Use format_type to preserve typmod for element types (e.g., varchar(128)[] for character varying(128)[])
206208 CASE
207- WHEN en .nspname = ' pg_catalog' THEN et .typname || ' [] '
208- WHEN en .nspname = c .table_schema THEN et .typname || ' [] '
209- ELSE en .nspname || ' .' || et .typname || ' [] '
210- END
209+ WHEN en .nspname = ' pg_catalog' THEN et .typname
210+ WHEN en .nspname = c .table_schema THEN et .typname
211+ ELSE en .nspname || ' .' || et .typname
212+ END || COALESCE( substring (format_type( a . atttypid , a . atttypmod ) FROM ' \( [^)]* \) ' ), ' ' ) || ' [] '
211213 WHEN dt .typtype = ' b' THEN
212214 -- Non-array base types: qualify if not in pg_catalog or table's schema
213215 -- Use format_type to preserve typmod for extension types (e.g., vector(384) for pgvector)
0 commit comments