Skip to content

Commit 2ceb1c8

Browse files
Fix array enum renaming (#9067)
When creating an enum type (let's say post_type_enum), postgres will automatically create a array enum type based on this enum and prefix it with an underscore (so _post_type_enum). Our code was not taking this case into account while dealing with MULTISELECT Resources: https://www.postgresql.org/docs/current/sql-createtype.html <img width="1329" alt="image" src="https://github.com/user-attachments/assets/c41bc90c-9884-4995-8fae-d26869153a1d" />
1 parent 042b6c6 commit 2ceb1c8

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-enum.service.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -231,20 +231,23 @@ export class WorkspaceMigrationEnumService {
231231
tableName: string,
232232
columnName: string,
233233
): Promise<string> {
234-
const result = await queryRunner.query(
235-
`SELECT udt_name FROM information_schema.columns WHERE table_schema = $1 AND table_name = $2 AND column_name = $3`,
234+
const [result] = await queryRunner.query(
235+
`SELECT udt_name, data_type FROM information_schema.columns WHERE table_schema = $1 AND table_name = $2 AND column_name = $3`,
236236
[schemaName, tableName, columnName],
237237
);
238238

239-
const enumTypeName = result[0]?.udt_name;
240-
241-
if (!enumTypeName) {
239+
if (!result) {
242240
throw new WorkspaceMigrationException(
243241
`Enum type name not found for column ${columnName} in table ${tableName} while trying to alter enum`,
244242
WorkspaceMigrationExceptionCode.ENUM_TYPE_NAME_NOT_FOUND,
245243
);
246244
}
247245

246+
const enumTypeName =
247+
result.data_type === 'ARRAY'
248+
? result.udt_name.replace(/^_/, '')
249+
: result.udt_name;
250+
248251
return enumTypeName;
249252
}
250253
}

0 commit comments

Comments
 (0)