From 2e7c1d32837ee819ee62d51007df07664a27975f Mon Sep 17 00:00:00 2001 From: Pranav C Date: Fri, 23 Jan 2026 16:03:04 +0000 Subject: [PATCH] fix: cross base link - lookup sort related fix --- .../src/db/BaseModelSqlv2/add-remove-links.ts | 5 ++- .../src/db/generateLookupSelectQuery.ts | 36 +++++++++++++++---- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2/add-remove-links.ts b/packages/nocodb/src/db/BaseModelSqlv2/add-remove-links.ts index b003be2382..f683307edc 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2/add-remove-links.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2/add-remove-links.ts @@ -39,7 +39,10 @@ export const extractCorrespondingLinkColumn = async ( return null; } - const colOptions = await ltarColumn.getColOptions(context); + const colOptions = await ltarColumn.getColOptions({ + ...context, + base_id: ltarColumn.base_id, + }); const { refContext } = colOptions.getRelContext(context); diff --git a/packages/nocodb/src/db/generateLookupSelectQuery.ts b/packages/nocodb/src/db/generateLookupSelectQuery.ts index e38f3301d9..5ebea1009f 100644 --- a/packages/nocodb/src/db/generateLookupSelectQuery.ts +++ b/packages/nocodb/src/db/generateLookupSelectQuery.ts @@ -106,6 +106,11 @@ export default async function generateLookupSelectQuery({ const parentModel = await parentColumn.getModel(parentContext); await parentModel.getColumns(parentContext); + const childBaseModel = await Model.getBaseModelSQL(childContext, { + model: childModel, + dbDriver: knex, + }); + const parentBaseModel = await Model.getBaseModelSQL(parentContext, { model: parentModel, dbDriver: knex, @@ -119,7 +124,7 @@ export default async function generateLookupSelectQuery({ ).where( `${alias}.${parentColumn.column_name}`, knex.raw(`??`, [ - `${rootAlias || baseModelSqlv2.getTnPath(childModel.table_name)}.${ + `${rootAlias || childBaseModel.getTnPath(childModel.table_name)}.${ childColumn.column_name }`, ]), @@ -132,6 +137,12 @@ export default async function generateLookupSelectQuery({ await childModel.getColumns(childContext); const parentModel = await parentColumn.getModel(parentContext); await parentModel.getColumns(parentContext); + + const childBaseModel = await Model.getBaseModelSQL(childContext, { + model: childModel, + dbDriver: knex, + }); + const parentBaseModel = await Model.getBaseModelSQL(parentContext, { model: parentModel, dbDriver: knex, @@ -139,15 +150,15 @@ export default async function generateLookupSelectQuery({ selectQb = knex( knex.raw(`?? as ??`, [ - parentBaseModel.getTnPath(childModel.table_name), + childBaseModel.getTnPath(childModel.table_name), alias, ]), ).where( `${alias}.${childColumn.column_name}`, knex.raw(`??`, [ - `${rootAlias || baseModelSqlv2.getTnPath(parentModel.table_name)}.${ - parentColumn.column_name - }`, + `${ + rootAlias || parentBaseModel.getTnPath(parentModel.table_name) + }.${parentColumn.column_name}`, ]), ); } else if (relationType === RelationTypes.MANY_TO_MANY) { @@ -159,6 +170,11 @@ export default async function generateLookupSelectQuery({ const parentModel = await parentColumn.getModel(parentContext); await parentModel.getColumns(parentContext); + const childBaseModel = await Model.getBaseModelSQL(childContext, { + model: childModel, + dbDriver: knex, + }); + const parentBaseModel = await Model.getBaseModelSQL(parentContext, { model: parentModel, dbDriver: knex, @@ -194,7 +210,7 @@ export default async function generateLookupSelectQuery({ '=', knex.ref( `${ - rootAlias || baseModelSqlv2.getTnPath(childModel.table_name) + rootAlias || childBaseModel.getTnPath(childModel.table_name) }.${childColumn.column_name}`, ), ); @@ -299,6 +315,12 @@ export default async function generateLookupSelectQuery({ await childModel.getColumns(childContext); const parentModel = await parentColumn.getModel(parentContext); await parentModel.getColumns(parentContext); + + const childBaseModel = await Model.getBaseModelSQL(childContext, { + model: childModel, + dbDriver: knex, + }); + const parentBaseModel = await Model.getBaseModelSQL(parentContext, { model: parentModel, dbDriver: knex, @@ -335,7 +357,7 @@ export default async function generateLookupSelectQuery({ knex.ref(`${mmTableAlias}.${mmChildCol.column_name}`), '=', knex.ref( - `${alias || baseModelSqlv2.getTnPath(childModel.table_name)}.${ + `${alias || childBaseModel.getTnPath(childModel.table_name)}.${ childColumn.column_name }`, ),