Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions ir/queries/queries.sql
Original file line number Diff line number Diff line change
Expand Up @@ -83,20 +83,20 @@ WITH column_base AS (
-- for non-array fixed-length types like name (typelem points to char).
-- Use format_type to preserve typmod for element types (e.g., varchar(128)[] for character varying(128)[])
CASE
WHEN en.nspname = 'pg_catalog' THEN et.typname
WHEN en.nspname = 'pg_catalog' THEN et.typname::text
ELSE quote_ident(en.nspname) || '.' || quote_ident(et.typname)
END || COALESCE(substring(format_type(a.atttypid, a.atttypmod) FROM '\([^)]*\)'), '') || '[]'
WHEN dt.typtype = 'b' THEN
-- Non-array base types: qualify if not in pg_catalog or table's schema
-- Use format_type to preserve typmod for extension types (e.g., vector(384) for pgvector)
CASE
WHEN dn.nspname = 'pg_catalog' THEN c.udt_name
WHEN dn.nspname = 'pg_catalog' THEN c.udt_name::text
WHEN dn.nspname = c.table_schema THEN
dt.typname || COALESCE(substring(format_type(a.atttypid, a.atttypmod) FROM '\([^)]*\)'), '')
dt.typname::text || COALESCE(substring(format_type(a.atttypid, a.atttypmod) FROM '\([^)]*\)'), '')
ELSE
dn.nspname || '.' || dt.typname || COALESCE(substring(format_type(a.atttypid, a.atttypmod) FROM '\([^)]*\)'), '')
dn.nspname::text || '.' || dt.typname::text || COALESCE(substring(format_type(a.atttypid, a.atttypmod) FROM '\([^)]*\)'), '')
END
ELSE c.udt_name
ELSE c.udt_name::text
END AS resolved_type,
c.is_identity,
c.identity_generation,
Expand Down Expand Up @@ -197,20 +197,20 @@ WITH column_base AS (
-- for non-array fixed-length types like name (typelem points to char).
-- Use format_type to preserve typmod for element types (e.g., varchar(128)[] for character varying(128)[])
CASE
WHEN en.nspname = 'pg_catalog' THEN et.typname
WHEN en.nspname = 'pg_catalog' THEN et.typname::text
ELSE quote_ident(en.nspname) || '.' || quote_ident(et.typname)
END || COALESCE(substring(format_type(a.atttypid, a.atttypmod) FROM '\([^)]*\)'), '') || '[]'
WHEN dt.typtype = 'b' THEN
-- Non-array base types: qualify if not in pg_catalog or table's schema
-- Use format_type to preserve typmod for extension types (e.g., vector(384) for pgvector)
CASE
WHEN dn.nspname = 'pg_catalog' THEN c.udt_name
WHEN dn.nspname = 'pg_catalog' THEN c.udt_name::text
WHEN dn.nspname = c.table_schema THEN
dt.typname || COALESCE(substring(format_type(a.atttypid, a.atttypmod) FROM '\([^)]*\)'), '')
dt.typname::text || COALESCE(substring(format_type(a.atttypid, a.atttypmod) FROM '\([^)]*\)'), '')
ELSE
dn.nspname || '.' || dt.typname || COALESCE(substring(format_type(a.atttypid, a.atttypmod) FROM '\([^)]*\)'), '')
dn.nspname::text || '.' || dt.typname::text || COALESCE(substring(format_type(a.atttypid, a.atttypmod) FROM '\([^)]*\)'), '')
END
ELSE c.udt_name
ELSE c.udt_name::text
END AS resolved_type,
c.is_identity,
c.identity_generation,
Expand Down Expand Up @@ -620,7 +620,7 @@ SELECT
format_type(a.aggtranstype, NULL)
WHEN stt.typcategory = 'A' THEN
CASE
WHEN sten.nspname = 'pg_catalog' THEN stet.typname
WHEN sten.nspname = 'pg_catalog' THEN stet.typname::text
ELSE quote_ident(sten.nspname) || '.' || quote_ident(stet.typname)
END || COALESCE(substring(format_type(a.aggtranstype, NULL) FROM '\([^)]*\)'), '') || '[]'
ELSE quote_ident(stn.nspname) || '.' || quote_ident(stt.typname)
Expand Down Expand Up @@ -722,7 +722,7 @@ SELECT
format_type(a.atttypid, a.atttypmod)
WHEN at.typcategory = 'A' THEN
CASE
WHEN aen.nspname = 'pg_catalog' THEN aet.typname
WHEN aen.nspname = 'pg_catalog' THEN aet.typname::text
ELSE quote_ident(aen.nspname) || '.' || quote_ident(aet.typname)
END || COALESCE(substring(format_type(a.atttypid, a.atttypmod) FROM '\([^)]*\)'), '') || '[]'
ELSE
Expand Down Expand Up @@ -915,7 +915,7 @@ SELECT
format_type(t.typbasetype, t.typtypmod)
WHEN bt.typcategory = 'A' THEN
CASE
WHEN ben.nspname = 'pg_catalog' THEN bet.typname
WHEN ben.nspname = 'pg_catalog' THEN bet.typname::text
ELSE quote_ident(ben.nspname) || '.' || quote_ident(bet.typname)
END || COALESCE(substring(format_type(t.typbasetype, t.typtypmod) FROM '\([^)]*\)'), '') || '[]'
ELSE
Expand Down Expand Up @@ -1203,7 +1203,7 @@ SELECT
format_type(a.aggtranstype, NULL)
WHEN stt.typcategory = 'A' THEN
CASE
WHEN sten.nspname = 'pg_catalog' THEN stet.typname
WHEN sten.nspname = 'pg_catalog' THEN stet.typname::text
ELSE quote_ident(sten.nspname) || '.' || quote_ident(stet.typname)
END || COALESCE(substring(format_type(a.aggtranstype, NULL) FROM '\([^)]*\)'), '') || '[]'
ELSE quote_ident(stn.nspname) || '.' || quote_ident(stt.typname)
Expand Down Expand Up @@ -1238,7 +1238,7 @@ SELECT
format_type(a.aggmtranstype, NULL)
WHEN mstt.typcategory = 'A' THEN
CASE
WHEN msten.nspname = 'pg_catalog' THEN mstet.typname
WHEN msten.nspname = 'pg_catalog' THEN mstet.typname::text
ELSE quote_ident(msten.nspname) || '.' || quote_ident(mstet.typname)
END || COALESCE(substring(format_type(a.aggmtranstype, NULL) FROM '\([^)]*\)'), '') || '[]'
ELSE quote_ident(mstn.nspname) || '.' || quote_ident(mstt.typname)
Expand Down Expand Up @@ -1414,7 +1414,7 @@ SELECT
format_type(t.typbasetype, t.typtypmod)
WHEN bt.typcategory = 'A' THEN
CASE
WHEN ben.nspname = 'pg_catalog' THEN bet.typname
WHEN ben.nspname = 'pg_catalog' THEN bet.typname::text
ELSE quote_ident(ben.nspname) || '.' || quote_ident(bet.typname)
END || COALESCE(substring(format_type(t.typbasetype, t.typtypmod) FROM '\([^)]*\)'), '') || '[]'
ELSE
Expand Down Expand Up @@ -1474,7 +1474,7 @@ SELECT
format_type(a.atttypid, a.atttypmod)
WHEN at.typcategory = 'A' THEN
CASE
WHEN aen.nspname = 'pg_catalog' THEN aet.typname
WHEN aen.nspname = 'pg_catalog' THEN aet.typname::text
ELSE quote_ident(aen.nspname) || '.' || quote_ident(aet.typname)
END || COALESCE(substring(format_type(a.atttypid, a.atttypmod) FROM '\([^)]*\)'), '') || '[]'
ELSE
Expand Down
42 changes: 17 additions & 25 deletions ir/queries/queries.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE user_status_log ADD COLUMN name text;
14 changes: 14 additions & 0 deletions testdata/diff/create_table/issue_521_enum_truncation/new.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
CREATE TYPE public.user_status_log_source_enum AS ENUM ('web', 'api', 'mobile');

CREATE TYPE public.document_document_type_enum AS ENUM ('invoice', 'receipt', 'contract');

CREATE TABLE public.user_status_log (
id integer NOT NULL,
name text,
source public.user_status_log_source_enum NOT NULL
);

CREATE TABLE public.document (
id integer NOT NULL,
document_type public.document_document_type_enum NOT NULL
);
13 changes: 13 additions & 0 deletions testdata/diff/create_table/issue_521_enum_truncation/old.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
CREATE TYPE public.user_status_log_source_enum AS ENUM ('web', 'api', 'mobile');

CREATE TYPE public.document_document_type_enum AS ENUM ('invoice', 'receipt', 'contract');

CREATE TABLE public.user_status_log (
id integer NOT NULL,
source public.user_status_log_source_enum NOT NULL
);

CREATE TABLE public.document (
id integer NOT NULL,
document_type public.document_document_type_enum NOT NULL
);
20 changes: 20 additions & 0 deletions testdata/diff/create_table/issue_521_enum_truncation/plan.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"version": "1.0.0",
"pgschema_version": "1.12.1",
"created_at": "1970-01-01T00:00:00Z",
"source_fingerprint": {
"hash": "ef66f70cb989537b9ce9779481a72cdcc56f79563681e5fed5d11abfc1122519"
},
"groups": [
{
"steps": [
{
"sql": "ALTER TABLE user_status_log ADD COLUMN name text;",
"type": "table.column",
"operation": "create",
"path": "public.user_status_log.name"
}
]
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE user_status_log ADD COLUMN name text;
13 changes: 13 additions & 0 deletions testdata/diff/create_table/issue_521_enum_truncation/plan.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Plan: 1 to modify.

Summary by type:
tables: 1 to modify

Tables:
~ user_status_log
+ name (column)

DDL to be executed:
--------------------------------------------------

ALTER TABLE user_status_log ADD COLUMN name text;