From a4a6e924c969d65a78e2226218b79958d10854a3 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Thu, 30 Mar 2023 11:24:28 +0530 Subject: [PATCH] refactor: revert subquery implementation since it won't improve the performance Signed-off-by: Pranav C --- .../sql-data-mapper/lib/sql/BaseModelSqlv2.ts | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/BaseModelSqlv2.ts b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/BaseModelSqlv2.ts index cb0d72ceab..b7f0551108 100644 --- a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/BaseModelSqlv2.ts +++ b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/BaseModelSqlv2.ts @@ -57,10 +57,6 @@ const GROUP_COL = '__nc_group_id'; const nanoidv2 = customAlphabet('1234567890abcdefghijklmnopqrstuvwxyz', 14); const { v4: uuidv4 } = require('uuid'); -const INNER_QUERY_ALIAS = '__nc_inner'; - -// const WRAPPER_QUERY_ALIAS = '__nc_wrapper'; - async function populatePk(model: Model, insertObj: any) { await model.getColumns(); for (const pkCol of model.primaryKeys) { @@ -207,19 +203,16 @@ class BaseModelSqlv2 { ): Promise { const { where, fields, ...rest } = this._getListArgs(args as any); - const innerQb = this.dbDriver(this.tnPath); - innerQb.select('*'); + const qb = this.dbDriver(this.tnPath); - const wrapperQb = this.dbDriver.from(innerQb.as(INNER_QUERY_ALIAS)); await this.selectObject({ - qb: wrapperQb, + qb, fieldsSet: args.fieldsSet, viewId: this.viewId, - alias: INNER_QUERY_ALIAS, validateFormula, }); if (+rest?.shuffle) { - await this.shuffle({ qb: innerQb }); + await this.shuffle({ qb }); } const aliasColObjMap = await this.model.getAliasColObjMap(); @@ -245,7 +238,7 @@ class BaseModelSqlv2 { logical_op: 'and', }), ], - innerQb, + qb, this.dbDriver ); @@ -254,7 +247,7 @@ class BaseModelSqlv2 { ? args.sortArr : await Sort.list({ viewId: this.viewId }); - await sortV2(sorts, innerQb, this.dbDriver); + await sortV2(sorts, qb, this.dbDriver); } else { await conditionV2( [ @@ -269,30 +262,30 @@ class BaseModelSqlv2 { logical_op: 'and', }), ], - innerQb, + qb, this.dbDriver ); if (!sorts) sorts = args.sortArr; - await sortV2(sorts, innerQb, this.dbDriver); + await sortV2(sorts, qb, this.dbDriver); } // sort by primary key if not autogenerated string // if autogenerated string sort by created_at column if present if (this.model.primaryKey && this.model.primaryKey.ai) { - innerQb.orderBy(this.model.primaryKey.column_name); + qb.orderBy(this.model.primaryKey.column_name); } else if (this.model.columns.find((c) => c.column_name === 'created_at')) { - innerQb.orderBy('created_at'); + qb.orderBy('created_at'); } - if (!ignoreViewFilterAndSort) applyPaginate(innerQb, rest); + if (!ignoreViewFilterAndSort) applyPaginate(qb, rest); const proto = await this.getProto(); let data; try { - data = await this.execAndParse(wrapperQb); + data = await this.execAndParse(qb); } catch (e) { if (!validateFormula) { return this.list(args, ignoreViewFilterAndSort, true);