From 844507e01f8e0ca6a49734ed7043351cdaa24ba2 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 15 May 2024 14:55:03 +0530 Subject: [PATCH] fix: Extract primary key value properly when table missing auto-incremented/auto-generated primary key (#8480) * fix: extract from insertobject if pk is not ai/ag * fix: pass auto increment column * refactor: remove unnecessary if case --- packages/nocodb/src/db/BaseModelSqlv2.ts | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index 0192b57a3f..d474f8de09 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -2760,6 +2760,7 @@ class BaseModelSqlv2 { rowId: insertObj[ag.column_name], insertObj, ag, + ai, }), false, {}, @@ -2803,7 +2804,7 @@ class BaseModelSqlv2 { ).__nc_ai_id; } response = await this.readByPk( - this.extractCompositePK({ rowId: id, insertObj, ag }), + this.extractCompositePK({ rowId: id, insertObj, ag, ai }), false, {}, { ignoreView: true, getHiddenColumn: true }, @@ -3270,18 +3271,16 @@ class BaseModelSqlv2 { } } rowId = pkObj; - } else if ( - !ai && - !ag && - (force || this.model.primaryKeys?.length > 1 || this.isSnowflake) - ) { + } else if (!ai && !ag && insertObj) { // handle if primary key is not ai or ag - const pkObj = {}; - for (const pk of this.model.primaryKeys) { - const key = pk.title; - pkObj[key] = insertObj[pk.column_name] ?? null; + if (this.model.primaryKeys.length === 1) { + return insertObj[this.model.primaryKey.column_name] ?? null; + } else { + return this.model.primaryKeys.reduce((acc, pk) => { + acc[pk.title] = insertObj[pk.column_name] ?? null; + return acc; + }, {}); } - rowId = pkObj; } return rowId;