diff --git a/packages/nocodb/src/db/sql-client/lib/pg/PgClient.ts b/packages/nocodb/src/db/sql-client/lib/pg/PgClient.ts index ef94e4e07d..39481e6d44 100644 --- a/packages/nocodb/src/db/sql-client/lib/pg/PgClient.ts +++ b/packages/nocodb/src/db/sql-client/lib/pg/PgClient.ts @@ -965,28 +965,13 @@ class PGClient extends KnexClient { f.attnotnull as rqd, p.contype as cst, p.conname as cstn, + ix.indisprimary as primarykey, + not ix.indisunique as non_unique_original, + not ix.indisunique as non_unique, CASE WHEN i.oid<>0 THEN true ELSE false END AS is_index, - CASE - WHEN p.contype = 'p' THEN true - ELSE false - END AS primarykey, - CASE - WHEN p.contype = 'u' THEN 0 - WHEN p.contype = 'p' THEN 0 - ELSE 1 - END AS non_unique_original, - CASE - WHEN p.contype = 'p' THEN true - ELSE false - END AS primarykey, - CASE - WHEN p.contype = 'u' THEN 0 - WHEN p.contype = 'p' THEN 0 - ELSE 1 - END AS non_unique, CASE WHEN f.atthasdef = 't' THEN pg_get_expr(d.adbin, d.adrelid) END AS default FROM pg_attribute f diff --git a/packages/nocodb/src/services/columns.service.ts b/packages/nocodb/src/services/columns.service.ts index db75073e82..34d7655944 100644 --- a/packages/nocodb/src/services/columns.service.ts +++ b/packages/nocodb/src/services/columns.service.ts @@ -2059,6 +2059,7 @@ export class ColumnsService { req?: any; columnId: string; user: UserType; + forceDeleteSystem?: boolean; reuse?: ReusableParams; }, ncMeta = this.metaService, @@ -2067,7 +2068,7 @@ export class ColumnsService { const column = await Column.get({ colId: param.columnId }, ncMeta); - if (column.system) { + if (column.system && !param.forceDeleteSystem) { NcError.badRequest( `The column '${ column.title || column.column_name @@ -2424,7 +2425,7 @@ export class ColumnsService { ...index, tn: cTable.table_name, columns: [childColumn.column_name], - indexName: index.index_name, + indexName: index.key_name, }); } } diff --git a/packages/nocodb/src/services/tables.service.ts b/packages/nocodb/src/services/tables.service.ts index f0a6552c22..40e7e190ef 100644 --- a/packages/nocodb/src/services/tables.service.ts +++ b/packages/nocodb/src/services/tables.service.ts @@ -202,7 +202,7 @@ export class TablesService { // delete all relations for (const c of relationColumns) { // skip if column is hasmany relation to mm table - if (c.system) { + if (c.system && !table.mm) { continue; } @@ -216,6 +216,7 @@ export class TablesService { req: param.req, columnId: c.id, user: param.user, + forceDeleteSystem: true, }, ncMeta, );