From a251d9ed30f99653d14b86618e9e58ad130e5dc1 Mon Sep 17 00:00:00 2001 From: chulanovskyi Date: Thu, 12 Feb 2026 15:19:24 +0200 Subject: [PATCH] fix: normalize schema names in DDL statements on RE --- shared/helpers/instanceHelper.js | 2 +- shared/helpers/queryHelper.js | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/shared/helpers/instanceHelper.js b/shared/helpers/instanceHelper.js index cb36248..f9a888f 100644 --- a/shared/helpers/instanceHelper.js +++ b/shared/helpers/instanceHelper.js @@ -91,7 +91,7 @@ const getTableDdl = async ({ connection, schemaName, tableName, objectType, logg await connection.execute({ query: clearQuery, callable: true, inparam: opToken }); - return ddlResult.map(row => queryHelper.ensureTerminator({ query: row.SQL_STMT })).join('\n'); + return ddlResult.map(queryHelper.postProcessDdlStatement).join('\n'); } catch (error) { logger.error(error); diff --git a/shared/helpers/queryHelper.js b/shared/helpers/queryHelper.js index 656ab34..0c0ff06 100644 --- a/shared/helpers/queryHelper.js +++ b/shared/helpers/queryHelper.js @@ -8,6 +8,15 @@ const cleanUpQuery = ({ query = '' }) => query.replaceAll(/\s+/g, ' '); const ensureTerminator = ({ query = '' }) => (query.trimEnd().endsWith(';') ? query : `${query};`); +/** + * finds every quoted identifier and removes *only* trailing whitespace + * @param {{ query: string }} params + * @returns {string} + */ +const normalizeDb2Identifiers = ({ query = '' }) => { + return query.replaceAll(/"([^"]*)"/g, (_, name) => `"${name.trimEnd()}"`); +}; + /** * @param {{ query: string, schemaNameKeyword: string }} params * @returns {string} @@ -109,6 +118,16 @@ const getClearTableDdlQuery = () => { return 'CALL SYSPROC.DB2LK_CLEAN_TABLE(?);'; }; +/** + * @param {{ SQL_STMT: string}} row - select query ddl result + * @returns {string} + */ +const postProcessDdlStatement = row => { + let statement = queryHelper.ensureTerminator({ query: row.SQL_STMT }); + statement = queryHelper.normalizeDb2Identifiers({ query: statement }); + return statement; +}; + const queryHelper = { cleanUpQuery, getDbVersionQuery, @@ -119,6 +138,8 @@ const queryHelper = { getSelectTableDdlQuery, getClearTableDdlQuery, ensureTerminator, + normalizeDb2Identifiers, + postProcessDdlStatement, }; module.exports = {