diff --git a/packages/types/dbinfo.d.ts b/packages/types/dbinfo.d.ts index 4c3604b00..24d379c61 100644 --- a/packages/types/dbinfo.d.ts +++ b/packages/types/dbinfo.d.ts @@ -121,7 +121,6 @@ export interface ViewInfo extends SqlObjectInfo { export type ParameterMode = 'IN' | 'OUT' | 'INOUT' | 'RETURN'; export interface ParameterInfo { - objectId?: string | number; schemaName: string; parameterName?: string; pureName: string; diff --git a/plugins/dbgate-plugin-mysql/src/backend/Analyser.js b/plugins/dbgate-plugin-mysql/src/backend/Analyser.js index 9419e507b..839967c72 100644 --- a/plugins/dbgate-plugin-mysql/src/backend/Analyser.js +++ b/plugins/dbgate-plugin-mysql/src/backend/Analyser.js @@ -130,17 +130,17 @@ class Analyser extends DatabaseAnalyser { const functionParameters = parameters.rows.filter(x => x.routineType == 'FUNCTION'); const functionNameToParameters = functionParameters.reduce((acc, row) => { - if (!acc[row.pureName]) acc[row.pureName] = []; + if (!acc[`${row.schemaName}.${row.pureName}`]) acc[`${row.schemaName}.${row.pureName}`] = []; - acc[row.pureName].push(row); + acc[`${row.schemaName}.${row.pureName}`].push(row); return acc; }, {}); const procedureParameters = parameters.rows.filter(x => x.routineType == 'PROCEDURE'); const procedureNameToParameters = procedureParameters.reduce((acc, row) => { - if (!acc[row.pureName]) acc[row.pureName] = []; + if (!acc[`${row.schemaName}.${row.pureName}`]) acc[`${row.schemaName}.${row.pureName}`] = []; - acc[row.pureName].push(row); + acc[`${row.schemaName}.${row.pureName}`].push(row); return acc; }, {}); @@ -205,11 +205,11 @@ class Analyser extends DatabaseAnalyser { .map(x => ({ ...x, createSql: `DELIMITER //\n\nCREATE PROCEDURE \`${x.pureName}\`(${getParametersSqlString( - procedureNameToParameters[x.pureName] + procedureNameToParameters[`${x.schemaName}.${x.pureName}`] )})\n${x.routineDefinition}\n\nDELIMITER ;\n`, objectId: x.pureName, contentHash: _.isDate(x.modifyDate) ? x.modifyDate.toISOString() : x.modifyDate, - parameters: procedureNameToParameters[x.pureName], + parameters: procedureNameToParameters[`${x.schemaName}.${x.pureName}`], })), functions: programmables.rows .filter(x => x.objectType == 'FUNCTION') @@ -217,13 +217,13 @@ class Analyser extends DatabaseAnalyser { .map(x => ({ ...x, createSql: `CREATE FUNCTION \`${x.pureName}\`(${getParametersSqlString( - functionNameToParameters[x.pureName].filter(i => i.parameterMode !== 'RETURN') + functionNameToParameters[`${x.schemaName}.${x.pureName}`].filter(i => i.parameterMode !== 'RETURN') )})\nRETURNS ${x.returnDataType} ${x.isDeterministic == 'YES' ? 'DETERMINISTIC' : 'NOT DETERMINISTIC'}\n${ x.routineDefinition }`, objectId: x.pureName, contentHash: _.isDate(x.modifyDate) ? x.modifyDate.toISOString() : x.modifyDate, - parameters: functionNameToParameters[x.pureName], + parameters: functionNameToParameters[`${x.schemaName}.${x.pureName}`], })), }; this.feedback({ analysingMessage: null }); diff --git a/plugins/dbgate-plugin-postgres/src/backend/Analyser.js b/plugins/dbgate-plugin-postgres/src/backend/Analyser.js index 4cadb1050..60dbfd76a 100644 --- a/plugins/dbgate-plugin-postgres/src/backend/Analyser.js +++ b/plugins/dbgate-plugin-postgres/src/backend/Analyser.js @@ -209,7 +209,6 @@ class Analyser extends DatabaseAnalyser { const procedureParameters = routineParametersRows.rows .filter(i => i.routine_type == 'PROCEDURE') .map(i => ({ - objectId: 'procedures:' + i.specific_schema + '.' + i.routine_name + '@' + i.pure_name, pureName: i.pure_name, parameterName: i.parameter_name, dataType: i.data_type, @@ -218,8 +217,8 @@ class Analyser extends DatabaseAnalyser { })); const procedureNameToParameters = procedureParameters.reduce((acc, row) => { - if (!acc[row.pureName]) acc[row.pureName] = []; - acc[row.pureName].push(row); + if (!acc[`${row.schemaName}.${row.pureName}`]) acc[`${row.schemaName}.${row.pureName}`] = []; + acc[`${row.schemaName}.${row.pureName}`].push(row); return acc; }, {}); @@ -227,7 +226,6 @@ class Analyser extends DatabaseAnalyser { const functionParameters = routineParametersRows.rows .filter(i => i.routine_type == 'FUNCTION') .map(i => ({ - objectId: 'functions:' + i.specific_schema + '.' + i.routine_name + '@' + i.pure_name, pureName: i.pure_name, parameterName: i.parameter_name, dataType: i.data_type, @@ -236,8 +234,8 @@ class Analyser extends DatabaseAnalyser { })); const functionNameToParameters = functionParameters.reduce((acc, row) => { - if (!acc[row.pureName]) acc[row.pureName] = []; - acc[row.pureName].push(row); + if (!acc[`${row.schemaName}.${row.pureName}`]) acc[`${row.schemaName}.${row.pureName}`] = []; + acc[`${row.schemaName}.${row.pureName}`].push(row); return acc; }, {}); @@ -331,22 +329,22 @@ class Analyser extends DatabaseAnalyser { pureName: proc.pure_name, schemaName: proc.schema_name, createSql: `CREATE PROCEDURE "${proc.schema_name}"."${proc.pure_name}"(${getParametersSqlString( - procedureNameToParameters[proc.pure_name] + procedureNameToParameters[`${proc.schema_name}.${proc.pure_name}`] )}) LANGUAGE ${proc.language}\nAS\n$$\n${proc.definition}\n$$`, contentHash: proc.hash_code, - parameters: procedureNameToParameters[proc.pure_name], + parameters: procedureNameToParameters[`${proc.schema_name}.${proc.pure_name}`], })), functions: routines.rows .filter(x => x.object_type == 'FUNCTION') .map(func => ({ objectId: `functions:${func.schema_name}.${func.pure_name}`, createSql: `CREATE FUNCTION "${func.schema_name}"."${func.pure_name}"(${getParametersSqlString( - functionNameToParameters[func.pure_name] + functionNameToParameters[`${func.schema_name}.${func.pure_name}`] )}) RETURNS ${func.data_type.toUpperCase()} LANGUAGE ${func.language}\nAS\n$$\n${func.definition}\n$$`, pureName: func.pure_name, schemaName: func.schema_name, contentHash: func.hash_code, - parameters: functionNameToParameters[func.pure_name], + parameters: functionNameToParameters[`${func.schema_name}.${func.pure_name}`], })), };