From 02854a9e41584e2990553a130fd0a04ad67e8f5f Mon Sep 17 00:00:00 2001 From: Pranav C Date: Thu, 19 Jan 2023 10:49:50 +0530 Subject: [PATCH 01/10] fix(api): mssql - alter column query correction Signed-off-by: Pranav C --- .../nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts b/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts index 27feafb56b..962ae5eca8 100644 --- a/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts +++ b/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts @@ -2631,7 +2631,7 @@ class MssqlClient extends KnexClient { if (n.dtxp !== o.dtxp && !['text'].includes(n.dt)) { query += this.genQuery( - `\nALTER TABLE ?? ALTER COLUMN ?? ${n.dt}(${n.dtxp});\n`, + `\nALTER TABLE ?? ALTER COLUMN ?? ${n.dt}${!getDefaultLengthIsDisabled(n.dt) && n.dtxp ? `(${n.dtxp})` : ''};\n`, [this.getTnPath(t), n.cn], shouldSanitize ); @@ -2797,9 +2797,6 @@ function getDefaultLengthIsDisabled(type) { // case 'sysname': case 'bigint': case 'bit': - case 'date': - case 'datetime': - case 'datetime2': case 'datetimeoffset': case 'decimal': case 'float': @@ -2824,6 +2821,9 @@ function getDefaultLengthIsDisabled(type) { return true; break; default: + case 'date': + case 'datetime': + case 'datetime2': case 'varchar': return false; break; From 16d686593f36064ee6ae4e7afc5911edc2625706 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Thu, 19 Jan 2023 13:30:41 +0530 Subject: [PATCH 02/10] chore(action): bring back executable build in nightly dev release Signed-off-by: Pranav C --- .github/workflows/release-nightly-dev.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release-nightly-dev.yml b/.github/workflows/release-nightly-dev.yml index 30bd16e41e..e4a66f71ce 100644 --- a/.github/workflows/release-nightly-dev.yml +++ b/.github/workflows/release-nightly-dev.yml @@ -54,13 +54,13 @@ jobs: NPM_TOKEN: "${{ secrets.NPM_TOKEN }}" # Build executables and publish to GitHub - # release-executables: - # needs: [set-tag, release-npm] - # uses: ./.github/workflows/release-timely-executables.yml - # with: - # tag: ${{ needs.set-tag.outputs.current_version }}-${{ needs.set-tag.outputs.nightly_build_tag }} - # secrets: - # NC_GITHUB_TOKEN: "${{ secrets.NC_GITHUB_TOKEN }}" + release-executables: + needs: [set-tag, release-npm] + uses: ./.github/workflows/release-timely-executables.yml + with: + tag: ${{ needs.set-tag.outputs.current_version }}-${{ needs.set-tag.outputs.nightly_build_tag }} + secrets: + NC_GITHUB_TOKEN: "${{ secrets.NC_GITHUB_TOKEN }}" # Build docker image and push to docker hub release-docker: From 0839d3d171f0598baf43af851344a509e26e405e Mon Sep 17 00:00:00 2001 From: Pranav C Date: Thu, 19 Jan 2023 15:11:08 +0530 Subject: [PATCH 03/10] fix(api): mssql - column alter query correction Signed-off-by: Pranav C --- packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts | 116 ------------------ .../db/sql-client/lib/mssql/MssqlClient.ts | 45 +------ 2 files changed, 4 insertions(+), 157 deletions(-) diff --git a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts index c958eae2ba..7762be3c4a 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts @@ -163,122 +163,6 @@ export class MssqlUi { }; } - // static getDefaultLengthForDatatype(type) { - // switch (type) { - // case "int": - // return 11; - // break; - // case "tinyint": - // return 1; - // break; - // case "smallint": - // return 5; - // break; - // - // case "mediumint": - // return 9; - // break; - // case "bigint": - // return 20; - // break; - // case "bit": - // return 64; - // break; - // case "boolean": - // return ''; - // break; - // case "float": - // return 12; - // break; - // case "decimal": - // return 10; - // break; - // case "double": - // return 22; - // break; - // case "serial": - // return 20; - // break; - // case "date": - // return ''; - // break; - // case "datetime": - // case "timestamp": - // return 6; - // break; - // case "time": - // return ''; - // break; - // case "year": - // return ''; - // break; - // case "char": - // return 255; - // break; - // case "varchar": - // return 45; - // break; - // case "nchar": - // return 255; - // break; - // case "text": - // return ''; - // break; - // case "tinytext": - // return ''; - // break; - // case "mediumtext": - // return ''; - // break; - // case "longtext": - // return '' - // break; - // case "binary": - // return 255; - // break; - // case "varbinary": - // return 65500; - // break; - // case "blob": - // return ''; - // break; - // case "tinyblob": - // return ''; - // break; - // case "mediumblob": - // return ''; - // break; - // case "longblob": - // return ''; - // break; - // case "enum": - // return '\'a\',\'b\''; - // break; - // case "set": - // return '\'a\',\'b\''; - // break; - // case "geometry": - // return ''; - // case "point": - // return ''; - // case "linestring": - // return ''; - // case "polygon": - // return ''; - // case "multipoint": - // return ''; - // case "multilinestring": - // return ''; - // case "multipolygon": - // return ''; - // case "json": - // return '' - // break; - // - // } - // - // } - static getDefaultLengthForDatatype(type) { switch (type) { case 'bigint': diff --git a/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts b/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts index 962ae5eca8..0f84e04461 100644 --- a/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts +++ b/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts @@ -2629,43 +2629,14 @@ class MssqlClient extends KnexClient { ); } - if (n.dtxp !== o.dtxp && !['text'].includes(n.dt)) { + if (n.dtxp !== o.dtxp || n.dt !== o.dt || n.rqd !== o.rqd) { query += this.genQuery( - `\nALTER TABLE ?? ALTER COLUMN ?? ${n.dt}${!getDefaultLengthIsDisabled(n.dt) && n.dtxp ? `(${n.dtxp})` : ''};\n`, + `\nALTER TABLE ?? ALTER COLUMN ?? ${n.dt}${ + !getDefaultLengthIsDisabled(n.dt) && n.dtxp ? `(${n.dtxp})` : '' + }`, [this.getTnPath(t), n.cn], shouldSanitize ); - } else if (n.dt !== o.dt) { - query += this.genQuery( - `\nALTER TABLE ?? ALTER COLUMN ?? TYPE ${n.dt};\n`, - [this.getTnPath(t), n.cn], - shouldSanitize - ); - } - - if (n.rqd !== o.rqd) { - query += this.genQuery( - `\nALTER TABLE ?? ALTER COLUMN ?? ${n.dt}`, - [this.getTnPath(t), n.cn], - shouldSanitize - ); - if ( - ![ - 'int', - 'bigint', - 'bit', - 'real', - 'float', - 'decimal', - 'money', - 'smallint', - 'tinyint', - 'geometry', - 'datetime', - 'text', - ].includes(n.dt) - ) - query += n.dtxp && n.dtxp != -1 ? `(${n.dtxp})` : ''; query += n.rqd ? ` NOT NULL;\n` : ` NULL;\n`; } @@ -2787,14 +2758,6 @@ function getDefaultValue(n) { function getDefaultLengthIsDisabled(type) { switch (type) { - // case 'binary': - // case 'char': - // case 'sql_variant': - // case 'nvarchar': - // case 'nchar': - // case 'ntext': - // case 'varbinary': - // case 'sysname': case 'bigint': case 'bit': case 'datetimeoffset': From 9e968465bc7ba59a909b20353833015d3b0734ca Mon Sep 17 00:00:00 2001 From: Pranav C Date: Thu, 19 Jan 2023 16:37:34 +0530 Subject: [PATCH 04/10] fix(api): mssql - enable toggling scale and precision Signed-off-by: Pranav C --- packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts | 28 +++++++++------- .../db/sql-client/lib/mssql/MssqlClient.ts | 33 +++++++++---------- 2 files changed, 32 insertions(+), 29 deletions(-) diff --git a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts index 7762be3c4a..0e2b54a644 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts @@ -190,7 +190,7 @@ export class MssqlUi { return ''; case 'decimal': - return ''; + return '10'; case 'float': return ''; @@ -278,9 +278,14 @@ export class MssqlUi { static getDefaultLengthIsDisabled(type) { switch (type) { case 'nvarchar': + case 'numeric': + case 'decimal': + case 'float': + case 'bigint': + case 'int': + case 'tinyint': return false; - case 'bigint': case 'binary': case 'bit': case 'char': @@ -288,17 +293,13 @@ export class MssqlUi { case 'datetime': case 'datetime2': case 'datetimeoffset': - case 'decimal': - case 'float': case 'geography': case 'geometry': case 'heirarchyid': case 'image': - case 'int': case 'money': case 'nchar': case 'ntext': - case 'numeric': case 'real': case 'json': case 'smalldatetime': @@ -309,7 +310,6 @@ export class MssqlUi { case 'text': case 'time': case 'timestamp': - case 'tinyint': case 'uniqueidentifier': case 'varbinary': case 'xml': @@ -462,10 +462,10 @@ export class MssqlUi { return ''; case 'decimal': - return ''; + return '2'; case 'float': - return ''; + return '2'; case 'geography': return ''; @@ -492,7 +492,7 @@ export class MssqlUi { return ''; case 'numeric': - return ''; + return '2'; case 'nvarchar': return ''; @@ -598,8 +598,12 @@ export class MssqlUi { // } } - static showScale(_columnObj) { - return false; + static showScale(columnObj) { + return ( + columnObj.dt === 'float' || + columnObj.dt === 'decimal' || + columnObj.dt === 'numeric' + ); } static removeUnsigned(columns) { diff --git a/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts b/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts index 0f84e04461..294b902d0a 100644 --- a/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts +++ b/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts @@ -2580,11 +2580,15 @@ class MssqlClient extends KnexClient { const defaultValue = getDefaultValue(n); const shouldSanitize = true; + const scaleAndPrecision = + !getDefaultLengthIsDisabled(n.dt) && n.dtxp + ? `(${n.dtxp}${n.dtxs ? `,${n.dtxs}` : ''})` + : ''; if (change === 0) { query = existingQuery ? ',' : ''; query += this.genQuery(`?? ${n.dt}`, [n.cn], shouldSanitize); - query += !getDefaultLengthIsDisabled(n.dt) && n.dtxp ? `(${n.dtxp})` : ''; + query += scaleAndPrecision; query += n.rqd ? ' NOT NULL' : ' NULL'; query += n.ai ? ' IDENTITY(1,1)' : ' '; query += defaultValue @@ -2599,7 +2603,7 @@ class MssqlClient extends KnexClient { } } else if (change === 1) { query += this.genQuery(` ADD ?? ${n.dt}`, [n.cn], shouldSanitize); - query += !getDefaultLengthIsDisabled(n.dt) && n.dtxp ? `(${n.dtxp})` : ''; + query += scaleAndPrecision; query += n.rqd ? ' NOT NULL' : ' NULL'; query += n.ai ? ' IDENTITY(1,1)' : ' '; query += defaultValue @@ -2629,11 +2633,9 @@ class MssqlClient extends KnexClient { ); } - if (n.dtxp !== o.dtxp || n.dt !== o.dt || n.rqd !== o.rqd) { + if (n.dtxp !== o.dtxp ||n.dtxs !== o.dtxs || n.dt !== o.dt || n.rqd !== o.rqd) { query += this.genQuery( - `\nALTER TABLE ?? ALTER COLUMN ?? ${n.dt}${ - !getDefaultLengthIsDisabled(n.dt) && n.dtxp ? `(${n.dtxp})` : '' - }`, + `\nALTER TABLE ?? ALTER COLUMN ?? ${n.dt}${scaleAndPrecision}`, [this.getTnPath(t), n.cn], shouldSanitize ); @@ -2758,35 +2760,32 @@ function getDefaultValue(n) { function getDefaultLengthIsDisabled(type) { switch (type) { - case 'bigint': - case 'bit': case 'datetimeoffset': - case 'decimal': - case 'float': case 'geography': case 'geometry': case 'heirarchyid': case 'image': - case 'int': case 'money': - case 'numeric': case 'real': case 'json': case 'smalldatetime': - case 'smallint': case 'smallmoney': case 'text': case 'time': case 'timestamp': - case 'tinyint': case 'uniqueidentifier': case 'xml': return true; break; default: - case 'date': - case 'datetime': - case 'datetime2': + case 'int': + case 'tinyint': + case 'bigint': + case 'bit': + case 'decimal': + case 'float': + case 'numeric': + case 'smallint': case 'varchar': return false; break; From 918d0890615deb69033be1f4811d9252c27ef309 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Thu, 19 Jan 2023 16:47:05 +0530 Subject: [PATCH 05/10] fix(api): hide length and scale for int and float types Signed-off-by: Pranav C --- packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts | 15 +++++---------- .../db/sql-client/lib/mssql/MssqlClient.ts | 19 ++++++++++++------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts index 0e2b54a644..ba54975770 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts @@ -280,12 +280,11 @@ export class MssqlUi { case 'nvarchar': case 'numeric': case 'decimal': + return false; + case 'tinyint': case 'float': - case 'bigint': case 'int': - case 'tinyint': - return false; - + case 'bigint': case 'binary': case 'bit': case 'char': @@ -465,7 +464,7 @@ export class MssqlUi { return '2'; case 'float': - return '2'; + return ''; case 'geography': return ''; @@ -599,11 +598,7 @@ export class MssqlUi { } static showScale(columnObj) { - return ( - columnObj.dt === 'float' || - columnObj.dt === 'decimal' || - columnObj.dt === 'numeric' - ); + return columnObj.dt === 'decimal' || columnObj.dt === 'numeric'; } static removeUnsigned(columns) { diff --git a/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts b/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts index 294b902d0a..c7f59aafc1 100644 --- a/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts +++ b/packages/nocodb/src/lib/db/sql-client/lib/mssql/MssqlClient.ts @@ -2633,7 +2633,12 @@ class MssqlClient extends KnexClient { ); } - if (n.dtxp !== o.dtxp ||n.dtxs !== o.dtxs || n.dt !== o.dt || n.rqd !== o.rqd) { + if ( + n.dtxp !== o.dtxp || + n.dtxs !== o.dtxs || + n.dt !== o.dt || + n.rqd !== o.rqd + ) { query += this.genQuery( `\nALTER TABLE ?? ALTER COLUMN ?? ${n.dt}${scaleAndPrecision}`, [this.getTnPath(t), n.cn], @@ -2773,19 +2778,19 @@ function getDefaultLengthIsDisabled(type) { case 'text': case 'time': case 'timestamp': + case 'int': + case 'tinyint': + case 'bigint': + case 'bit': + case 'smallint': + case 'float': case 'uniqueidentifier': case 'xml': return true; break; default: - case 'int': - case 'tinyint': - case 'bigint': - case 'bit': case 'decimal': - case 'float': case 'numeric': - case 'smallint': case 'varchar': return false; break; From 7b08819fde09f1c6d9a26e440ba0fff2bfdca309 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Thu, 19 Jan 2023 19:02:44 +0530 Subject: [PATCH 06/10] fix: convert input arg to string if a different type passed Signed-off-by: Pranav C --- packages/nc-gui/utils/urlUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nc-gui/utils/urlUtils.ts b/packages/nc-gui/utils/urlUtils.ts index d9d807d446..2f0a071849 100644 --- a/packages/nc-gui/utils/urlUtils.ts +++ b/packages/nc-gui/utils/urlUtils.ts @@ -20,7 +20,7 @@ export const replaceUrlsWithLink = (text: string): boolean | string => { } export const isValidURL = (str: string) => { - return isURL(str) + return isURL(`${str}`) } export const openLink = (path: string, baseURL?: string, target = '_blank') => { From 5298c8e34039a10fe816588c422f769c9d2908b7 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Fri, 20 Jan 2023 14:34:43 +0530 Subject: [PATCH 07/10] fix(gui): convert value to string to avoid database error Signed-off-by: Pranav C --- packages/nc-gui/utils/parsers/ExcelTemplateAdapter.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/nc-gui/utils/parsers/ExcelTemplateAdapter.ts b/packages/nc-gui/utils/parsers/ExcelTemplateAdapter.ts index d3d60b5359..f0628d7558 100644 --- a/packages/nc-gui/utils/parsers/ExcelTemplateAdapter.ts +++ b/packages/nc-gui/utils/parsers/ExcelTemplateAdapter.ts @@ -257,6 +257,8 @@ export default class ExcelTemplateAdapter extends TemplateGenerator { }) const cellObj = ws[cellId] rowData[table.columns[i].column_name] = (cellObj && cellObj.w) || row[i] + } else if (table.columns[i].uidt === UITypes.SingleLineText || table.columns[i].uidt === UITypes.LongText) { + rowData[table.columns[i].column_name] = `${row[i]}` } else { // TODO: do parsing if necessary based on type rowData[table.columns[i].column_name] = row[i] From f1be5c3ea624f7157e3d84f35ade2cb463f7be2f Mon Sep 17 00:00:00 2001 From: Pranav C Date: Sat, 21 Jan 2023 12:01:22 +0530 Subject: [PATCH 08/10] fix(gui): retain null/undefined as null while parsing for string type Signed-off-by: Pranav C --- packages/nc-gui/utils/parsers/ExcelTemplateAdapter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nc-gui/utils/parsers/ExcelTemplateAdapter.ts b/packages/nc-gui/utils/parsers/ExcelTemplateAdapter.ts index f0628d7558..9e2b087aa2 100644 --- a/packages/nc-gui/utils/parsers/ExcelTemplateAdapter.ts +++ b/packages/nc-gui/utils/parsers/ExcelTemplateAdapter.ts @@ -258,7 +258,7 @@ export default class ExcelTemplateAdapter extends TemplateGenerator { const cellObj = ws[cellId] rowData[table.columns[i].column_name] = (cellObj && cellObj.w) || row[i] } else if (table.columns[i].uidt === UITypes.SingleLineText || table.columns[i].uidt === UITypes.LongText) { - rowData[table.columns[i].column_name] = `${row[i]}` + rowData[table.columns[i].column_name] = row[i] === null || row[i] === undefined ? null : `${row[i]}` } else { // TODO: do parsing if necessary based on type rowData[table.columns[i].column_name] = row[i] From 26af8b4b96d8cbb9a59de59edac0cac8153dbe8f Mon Sep 17 00:00:00 2001 From: Pranav C Date: Tue, 24 Jan 2023 14:57:20 +0530 Subject: [PATCH 09/10] fix(api): include money type for currency Signed-off-by: Pranav C --- packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts index ba54975770..67c4e79cc4 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts @@ -1142,6 +1142,7 @@ export class MssqlUi { 'real', 'smallint', 'tinyint', + 'money', ]; case 'Percent': From e1c4849c0ecc5a422bdb1c4cd23055dff62f54ef Mon Sep 17 00:00:00 2001 From: Pranav C Date: Tue, 24 Jan 2023 15:06:59 +0530 Subject: [PATCH 10/10] refactor: return number for default length value Signed-off-by: Pranav C --- packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts index 67c4e79cc4..74451c3374 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts @@ -190,7 +190,7 @@ export class MssqlUi { return ''; case 'decimal': - return '10'; + return 10; case 'float': return '';