diff --git a/packages/types/dbinfo.d.ts b/packages/types/dbinfo.d.ts index 1b9776a12..890de2368 100644 --- a/packages/types/dbinfo.d.ts +++ b/packages/types/dbinfo.d.ts @@ -120,14 +120,10 @@ export interface ViewInfo extends SqlObjectInfo { export interface ParameterInfo { objectId?: string | number; - parentObjectId?: string | number; - routineName?: string; + schemaName: string; + parameterName?: string; pureName: string; dataType: string; - fullDataType: string; - maxLength?: number; - precision?: number; - scale?: string; isOutputParameter?: boolean; } export interface ProcedureInfo extends SqlObjectInfo { diff --git a/packages/web/src/appobj/ParameterAppObject.svelte b/packages/web/src/appobj/ParameterAppObject.svelte index 1ad9d3618..adc875aea 100644 --- a/packages/web/src/appobj/ParameterAppObject.svelte +++ b/packages/web/src/appobj/ParameterAppObject.svelte @@ -11,8 +11,8 @@ diff --git a/plugins/dbgate-plugin-postgres/src/backend/Analyser.js b/plugins/dbgate-plugin-postgres/src/backend/Analyser.js index a7633fc61..3f1cfb509 100644 --- a/plugins/dbgate-plugin-postgres/src/backend/Analyser.js +++ b/plugins/dbgate-plugin-postgres/src/backend/Analyser.js @@ -197,34 +197,36 @@ class Analyser extends DatabaseAnalyser { .filter(i => i.routine_type == 'PROCEDURE') .map(i => ({ objectId: 'procedures:' + i.specific_schema + '.' + i.routine_name + '@' + i.pure_name, - routineName: i.routine_name, pureName: i.pure_name, + parameterName: i.parameter_name, dataType: i.data_type, - fullDataType: i.data_type, isOutputParameter: i.is_output_parameter, + parameterMode: i.parameter_mode, + schemaName: i.schema_name, })); const procedureNameToParameters = procedurePerameters.reduce((acc, row) => { - if (!acc[row.routineName]) acc[row.routineName] = []; - acc[row.routineName].push(row); + if (!acc[row.pureName]) acc[row.pureName] = []; + acc[row.pureName].push(row); return acc; }, {}); - const fucntionPerameters = routineParametersRows.rows + const functionParameters = routineParametersRows.rows .filter(i => i.routine_type == 'FUNCTION') .map(i => ({ objectId: 'functions:' + i.specific_schema + '.' + i.routine_name + '@' + i.pure_name, - routineName: i.routine_name, pureName: i.pure_name, + parameterName: i.parameter_name, dataType: i.data_type, - fullDataType: i.data_type, isOutputParameter: i.is_output_parameter, + parameterMode: i.parameter_mode, + schemaName: i.schema_name, })); - const functionNameToParameters = fucntionPerameters.reduce((acc, row) => { - if (!acc[row.routineName]) acc[row.routineName] = []; - acc[row.routineName].push(row); + const functionNameToParameters = functionParameters.reduce((acc, row) => { + if (!acc[row.pureName]) acc[row.pureName] = []; + acc[row.pureName].push(row); return acc; }, {}); diff --git a/plugins/dbgate-plugin-postgres/src/backend/sql/proceduresParameters.js b/plugins/dbgate-plugin-postgres/src/backend/sql/proceduresParameters.js index 7a275e6e9..c128d73f5 100644 --- a/plugins/dbgate-plugin-postgres/src/backend/sql/proceduresParameters.js +++ b/plugins/dbgate-plugin-postgres/src/backend/sql/proceduresParameters.js @@ -1,16 +1,17 @@ module.exports = ` SELECT - proc.specific_schema AS specific_schema, - proc.routine_name AS routine_name, + proc.specific_schema AS schema_name, + proc.routine_name AS pure_name, proc.routine_type as routine_type, - args.parameter_name AS pure_name, + args.parameter_name AS parameter_name, args.parameter_mode, args.data_type AS data_type, args.ordinal_position AS parameter_index, + args.parameter_mode AS parameter_mode, CASE WHEN args.parameter_mode IN ('OUT', 'INOUT') THEN TRUE ELSE FALSE - END AS is_output_paramter + END AS is_output_parameter FROM information_schema.routines proc LEFT JOIN @@ -21,7 +22,7 @@ WHERE proc.routine_schema NOT IN ('pg_catalog', 'information_schema') -- Exclude system schemas AND proc.routine_type IN ('PROCEDURE', 'FUNCTION') -- Filter for procedures ORDER BY - specific_schema, - routine_name, + schema_name, + parameter_name, args.ordinal_position; `;