From ea3677f6372c8a7110e829b407b977fa795d3506 Mon Sep 17 00:00:00 2001 From: chulanovskyi Date: Fri, 16 Jan 2026 10:18:40 +0200 Subject: [PATCH 1/2] fix: fetch system tables properly --- constants/constants.js | 4 ++-- .../Db2Client/src/main/java/org/db2/App.java | 6 +++++- shared/addons/Db2Client.jar | Bin 4301356 -> 4301460 bytes shared/helpers/queryHelper.js | 18 +++++++++--------- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/constants/constants.js b/constants/constants.js index b489e24..4ce0c2f 100644 --- a/constants/constants.js +++ b/constants/constants.js @@ -13,7 +13,7 @@ const TABLE_TYPE = { const INLINE_COMMENT = '--'; -const PERSENT = '__PERCENT__'; +const PERCENT = '__PERCENT__'; const CONSTRAINT_POSTFIX = { primaryKey: 'pk', @@ -28,6 +28,6 @@ module.exports = { ERROR_MESSAGE, TABLE_TYPE, INLINE_COMMENT, - PERSENT, + PERCENT, CONSTRAINT_POSTFIX, }; diff --git a/shared/Db2Client/src/main/java/org/db2/App.java b/shared/Db2Client/src/main/java/org/db2/App.java index c230f97..fb26624 100644 --- a/shared/Db2Client/src/main/java/org/db2/App.java +++ b/shared/Db2Client/src/main/java/org/db2/App.java @@ -20,7 +20,7 @@ public static void main(String[] args) { String database = input.optString("database", ""); String user = input.optString("user", ""); String password = input.optString("password", ""); - query = input.optString("query", ""); + query = cleanStringValue(input.optString("query", "")); boolean callable = input.optBoolean("callable", false); String inParam = input.optString("inParam", ""); boolean ddl = input.optBoolean("ddl", false); @@ -59,6 +59,10 @@ private static String readStdin() throws IOException { } } + private static String cleanStringValue(String value) { + return value.replace("__PERCENT__", "%"); + } + private static void print(String value) { System.out.println(String.format("%s", value)); } diff --git a/shared/addons/Db2Client.jar b/shared/addons/Db2Client.jar index 364efc06f6adc8b73b3fcf264467b4478465e635..e39d53e91d5cb0bb712f32c7f632cdd05e8d4d14 100644 GIT binary patch delta 2739 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 diff --git a/shared/helpers/queryHelper.js b/shared/helpers/queryHelper.js index 3897092..ebd47de 100644 --- a/shared/helpers/queryHelper.js +++ b/shared/helpers/queryHelper.js @@ -1,4 +1,4 @@ -const { TABLE_TYPE, PERSENT } = require('../../constants/constants'); +const { TABLE_TYPE, PERCENT } = require('../../constants/constants'); /** * @param {{ query: string }} @@ -13,16 +13,16 @@ const cleanUpQuery = ({ query = '' }) => query.replaceAll(/\s+/g, ' '); const getNonSystemSchemaWhereClause = ({ query, schemaNameKeyword }) => { // On Windows (cmd.exe), environment variables can be referenced using syntax like %PATH%. // When a command contains such patterns, cmd.exe automatically replaces them with the corresponding environment variable values. - // To prevent this automatic substitution, a placeholder string (PERSENT) is used here instead, + // To prevent this automatic substitution, a placeholder string (PERCENT) is used here instead, // which will later be replaced with the % symbol inside the Db2Client Java client. const whereClause = ` - WHERE ${schemaNameKeyword} NOT LIKE 'SYS${PERSENT}' - AND ${schemaNameKeyword} NOT LIKE '${PERSENT}SYSCAT${PERSENT}' - AND ${schemaNameKeyword} NOT LIKE '${PERSENT}SYSIBM${PERSENT}' - AND ${schemaNameKeyword} NOT LIKE '${PERSENT}SYSSTAT${PERSENT}' - AND ${schemaNameKeyword} NOT LIKE '${PERSENT}SYSTOOLS${PERSENT}' - AND ${schemaNameKeyword} NOT LIKE '${PERSENT}NULLID${PERSENT}' - AND ${schemaNameKeyword} NOT LIKE '${PERSENT}SQLJ${PERSENT}';`; + WHERE ${schemaNameKeyword} NOT LIKE 'SYS${PERCENT}' + AND ${schemaNameKeyword} NOT LIKE '${PERCENT}SYSCAT${PERCENT}' + AND ${schemaNameKeyword} NOT LIKE '${PERCENT}SYSIBM${PERCENT}' + AND ${schemaNameKeyword} NOT LIKE '${PERCENT}SYSSTAT${PERCENT}' + AND ${schemaNameKeyword} NOT LIKE '${PERCENT}SYSTOOLS${PERCENT}' + AND ${schemaNameKeyword} NOT LIKE '${PERCENT}NULLID${PERCENT}' + AND ${schemaNameKeyword} NOT LIKE '${PERCENT}SQLJ${PERCENT}';`; const clause = query.includes('WHERE') ? whereClause.replace('WHERE', 'AND') : whereClause; From c6633a3c30902799adfdce401f2f8d49af695f64 Mon Sep 17 00:00:00 2001 From: chulanovskyi Date: Fri, 16 Jan 2026 14:31:37 +0200 Subject: [PATCH 2/2] chore: removed redundant escape --- constants/constants.js | 3 --- shared/Db2Client/build.sh | 0 .../Db2Client/src/main/java/org/db2/App.java | 6 +----- shared/addons/Db2Client.jar | Bin 4301460 -> 4301356 bytes shared/helpers/queryHelper.js | 20 +++++++----------- 5 files changed, 9 insertions(+), 20 deletions(-) mode change 100644 => 100755 shared/Db2Client/build.sh diff --git a/constants/constants.js b/constants/constants.js index 4ce0c2f..c1d0a82 100644 --- a/constants/constants.js +++ b/constants/constants.js @@ -13,8 +13,6 @@ const TABLE_TYPE = { const INLINE_COMMENT = '--'; -const PERCENT = '__PERCENT__'; - const CONSTRAINT_POSTFIX = { primaryKey: 'pk', foreignKey: 'fk', @@ -28,6 +26,5 @@ module.exports = { ERROR_MESSAGE, TABLE_TYPE, INLINE_COMMENT, - PERCENT, CONSTRAINT_POSTFIX, }; diff --git a/shared/Db2Client/build.sh b/shared/Db2Client/build.sh old mode 100644 new mode 100755 diff --git a/shared/Db2Client/src/main/java/org/db2/App.java b/shared/Db2Client/src/main/java/org/db2/App.java index fb26624..c230f97 100644 --- a/shared/Db2Client/src/main/java/org/db2/App.java +++ b/shared/Db2Client/src/main/java/org/db2/App.java @@ -20,7 +20,7 @@ public static void main(String[] args) { String database = input.optString("database", ""); String user = input.optString("user", ""); String password = input.optString("password", ""); - query = cleanStringValue(input.optString("query", "")); + query = input.optString("query", ""); boolean callable = input.optBoolean("callable", false); String inParam = input.optString("inParam", ""); boolean ddl = input.optBoolean("ddl", false); @@ -59,10 +59,6 @@ private static String readStdin() throws IOException { } } - private static String cleanStringValue(String value) { - return value.replace("__PERCENT__", "%"); - } - private static void print(String value) { System.out.println(String.format("%s", value)); } diff --git a/shared/addons/Db2Client.jar b/shared/addons/Db2Client.jar index e39d53e91d5cb0bb712f32c7f632cdd05e8d4d14..1ce23359bf7b9b7bd161571da42156529a11b3d6 100644 GIT binary patch delta 2608 zcmZYBXH-+!76wS6euJc>_tb6ymcdzs1{!52**c*m&*!i(e9Gp-H zgckzoiPJ9PSL6VtRo@oM@iI=kBo(UgPkjv4J+4`cP{JaV4PXa208W4l;0AaAUf=|9 z+;}KoAfDgn?6l2p|f;05L!ukN_kBI3NX_2BZNQ00GDXa)3Ob04M@TKnXYl zC<7{hDxe0a0~&xPpap0HI)E;q2j~L^fFWQ67y~ANDPRVe0~P?PeG!VTt`h)<@U!== z<*ipd5J{HNon>GLf9nto#_zUkooNie@TnTWG_d)Eh&zYK#O}dPT zBDHON7Ltj@bq$s_)f(iEi%YHN-mp-0wf;V{vQ!Cg6yvJ%*^+ep0BITH8O9p~gH@P3 zRhDmA4ywcxYSz_Z^>wD9K83m6Tyxdin?YTXwO&qXbVGI6m*T3~$isXb(w)T1d4E)D zzBKpHxQIH7OI44wAD4%}rD_UQ2Om1?MQ-kOjt!DTBF|iihbq^76kew3sT%6O9lPvf z)oytOm3Bxmr0{RWt6oxGbjIu+JNe;7?#9K z;3VOTd644@{wH4q-0HYo=yh#C$O|upGxPq}+RIeQ0h=(;O)_M|H-K2U20=Te^@C- zB2~srvv#w7M4Wk+YdS1RVEUv!qu+SDRJlobvoPiE0C_#yo%v*kvy_@Bb8&|0o`RV- zJG4~VaPDl(Ml!iVHpb#~(;0KjM|jTo-?>PcQDuL`T^`V#7OnrtmEt>?7+sV;TQZh} zB0lGJQs}(<`wq37Eg`HI&{-F~C3$c_#3RuI_&M z5UHuq5x(%Bx+uR0>%GY;{NUkO=;Yj|S0o=17U<*?gLorpu}-co@sIrV2{kf8{nJ`TEhVReoL-le?;pH*$p1V;9DQocD%$#s!I7;tj2^o^D0=EP{B*CJSd# zxk2ymC~rSC!l6>mQx?Ne9&Rl>+rhpwEhyLQpVB+!RvP91Q0PikM#oQ&*wGu$X~EC- zxvG5JAbms4`%MGQtcsODhDo6ZMBb1mIG)?R6&r2OH*LN3*~w)QorT3m$)4sl$jRi= z|Kd^HQ*W=TxFG6Kwq|j*EqAR;UQ)4>jwIN>IDjrv&tslFHf}8X7+Y=-ce5}@ZP3w+ z-!nTaZtY3RIJ(=^5YH<7i4 z+zM#EoIRE+{ns^dsDbo0Uitl|Ito=l$)(R+Txb`$glDU|Q+(Q7mFF6+rT6?PX*q?{ z%nNf%zF*k;gFB;gk@X;r}tf0s*(N@XHomLt%7T-{j+#tKxSm3x6@CVI1%mx4L+ zpye*$zQOzr4p>n9w$c+CMf}4sEKH(*cW)KCs>?=@nb0;gJd8M#4F8rUDm7OB@N?ze z1cN@;?xq#Ywyk22K$OE;-nWhs?|H?yjDZ)hTH$V%;V0HiNK3fKvQkB#Sz5EDTeQE` zT&mcIVZ2*5Xg!GZpfw9RinY&WEIzTUHa zjpcDWJV#0RlmC()Ic`^aG20?V{8D?a3goNYjxW`z9JR-MS&1m8D>X&P?KSC`Hcb6? z$nkx%MtU>Q`aOEnL)!)MH}kr$7+hdIO9zYnW6Cd@!gf@5q3OG`XL71~SwrfRKj)$) zwFv&Ki#Efx%@(LUgebFQ7%CP&zWhsIe0m>MT?vj)Kr#*y$FWEh#3Eh@_~p01 z??HR<9Vei6voZ7zxA1WcD9vz$U4}p)L4a0CD-=$oPND^fAyhO%^s3sc3rxp}^V<4g zwd%H!bPdiE%c*F)<8(z_rK0tZH|_8lv?f32@ym#}XV7qB2puhP{1svb9c_KQA&k(` z?IUzc>w*7G9%2uzbpB~|d}t-b5#EC)GJDXH#IL*Pf953K0k_#lMv09Nt?W7UCebA^ oCq#*SkF4b6{%>|L|9`LQjPB|Gv`$Q-PZ8rES;4s@sA%x`-@I6{mjD0& delta 2740 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 query.replaceAll(/\s+/g, ' '); * @returns {string} */ const getNonSystemSchemaWhereClause = ({ query, schemaNameKeyword }) => { - // On Windows (cmd.exe), environment variables can be referenced using syntax like %PATH%. - // When a command contains such patterns, cmd.exe automatically replaces them with the corresponding environment variable values. - // To prevent this automatic substitution, a placeholder string (PERCENT) is used here instead, - // which will later be replaced with the % symbol inside the Db2Client Java client. const whereClause = ` - WHERE ${schemaNameKeyword} NOT LIKE 'SYS${PERCENT}' - AND ${schemaNameKeyword} NOT LIKE '${PERCENT}SYSCAT${PERCENT}' - AND ${schemaNameKeyword} NOT LIKE '${PERCENT}SYSIBM${PERCENT}' - AND ${schemaNameKeyword} NOT LIKE '${PERCENT}SYSSTAT${PERCENT}' - AND ${schemaNameKeyword} NOT LIKE '${PERCENT}SYSTOOLS${PERCENT}' - AND ${schemaNameKeyword} NOT LIKE '${PERCENT}NULLID${PERCENT}' - AND ${schemaNameKeyword} NOT LIKE '${PERCENT}SQLJ${PERCENT}';`; + WHERE ${schemaNameKeyword} NOT LIKE 'SYS%' + AND ${schemaNameKeyword} NOT LIKE '%SYSCAT%' + AND ${schemaNameKeyword} NOT LIKE '%SYSIBM%' + AND ${schemaNameKeyword} NOT LIKE '%SYSSTAT%' + AND ${schemaNameKeyword} NOT LIKE '%SYSTOOLS%' + AND ${schemaNameKeyword} NOT LIKE '%NULLID%' + AND ${schemaNameKeyword} NOT LIKE '%SQLJ%';`; const clause = query.includes('WHERE') ? whereClause.replace('WHERE', 'AND') : whereClause;