[pgsqlclient-checkins] SF.net SVN: pgsqlclient: [150] trunk/PostgreSqlClient/source/PostgreSql/Data/
Status: Inactive
Brought to you by:
carlosga_fb
From: <car...@us...> - 2006-05-19 09:23:12
|
Revision: 150 Author: carlosga_fb Date: 2006-05-19 02:23:05 -0700 (Fri, 19 May 2006) ViewCVS: http://svn.sourceforge.net/pgsqlclient/?rev=150&view=rev Log Message: ----------- Modified Paths: -------------- trunk/PostgreSqlClient/source/PostgreSql/Data/Schema/PgColumns.cs trunk/PostgreSqlClient/source/PostgreSql/Data/Schema/PgFunctionParameters.cs trunk/PostgreSqlClient/source/PostgreSql/Data/Schema/PgFunctions.cs Modified: trunk/PostgreSqlClient/source/PostgreSql/Data/Schema/PgColumns.cs =================================================================== --- trunk/PostgreSqlClient/source/PostgreSql/Data/Schema/PgColumns.cs 2006-05-19 09:22:36 UTC (rev 149) +++ trunk/PostgreSqlClient/source/PostgreSql/Data/Schema/PgColumns.cs 2006-05-19 09:23:05 UTC (rev 150) @@ -24,7 +24,7 @@ { internal class PgColumns : PgSchema { - #region \xB7 Methods \xB7 + #region \xB7 Protected Methods \xB7 protected override string BuildSql(string[] restrictions) { Modified: trunk/PostgreSqlClient/source/PostgreSql/Data/Schema/PgFunctionParameters.cs =================================================================== --- trunk/PostgreSqlClient/source/PostgreSql/Data/Schema/PgFunctionParameters.cs 2006-05-19 09:22:36 UTC (rev 149) +++ trunk/PostgreSqlClient/source/PostgreSql/Data/Schema/PgFunctionParameters.cs 2006-05-19 09:23:05 UTC (rev 150) @@ -16,6 +16,8 @@ */ using System; +using System.Data; +using PostgreSql.Data.PostgreSqlClient; namespace PostgreSql.Data.Schema { @@ -31,10 +33,16 @@ "current_database() AS FUNCTION_CATALOG, " + "pg_namespace.nspname AS FUNCTION_SCHEMA, " + "pg_proc.proname AS FUNCTION_NAME, " + + "null AS PARAMETER_NAME, " + + "null AS DATA_TYPE, " + + "0 AS PARAMETER_DIRECTION, " + + "pg_proc.pronargs AS ARGUMENT_NUMBER, " + + "pg_proc.proallargtypes AS ARGUMENT_TYPES, " + + "pg_proc.proargmodes AS ARGUMENT_MODES, " + + "pg_proc.proargnames AS ARGUMENT_NAMES " + "FROM " + "pg_proc " + - "left join pg_namespace ON pg_proc.pronamespace = pg_namespace.oid " + - "left join pg_description ON pg_proc.oid = pg_description.objoid "; + "left join pg_namespace ON pg_proc.pronamespace = pg_namespace.oid "; if (restrictions != null && restrictions.Length > 0) { @@ -60,13 +68,13 @@ { where += " and "; } - where += String.Format(" and pg_proc.proname = '{0}'", restrictions[2]); + where += String.Format(" pg_proc.proname = '{0}'", restrictions[2]); } } if (where.Length > 0) { - sql += "WHERE " + where; + sql += " WHERE " + where; } sql += " ORDER BY pg_namespace.nspname, pg_proc.proname"; @@ -74,6 +82,61 @@ return sql; } + protected override DataTable ProcessResult(PgConnection connection, DataTable schema) + { + DataTable functionParameters = schema.Clone(); + + functionParameters.BeginLoadData(); + + foreach (DataRow row in schema.Rows) + { + int argNumber = Convert.ToInt32(row["ARGUMENT_NUMBER"]); + Array argTypes = (Array)row["ARGUMENT_TYPES"]; + Array argNames = (Array)row["ARGUMENT_NAMES"]; + + if (!Convert.ToBoolean(row["RETURNS_SET"])) + { + DataRow functionParameter = functionParameters.NewRow(); + + // Create the new foreign key column info + functionParameter["FUNCTION_CATALOG"] = row["FUNCTION_CATALOG"]; + functionParameter["FUNCTION_SCHEMA"] = row["FUNCTION_SCHEMA"]; + functionParameter["FUNCTION_NAME"] = row["FUNCTION_NAME"]; + functionParameter["PARAMETER_NAME"] = "result"; + functionParameter["DATA_TYPE"] = ""; + functionParameter["PARAMETER_DIRECTION"] = (Int32)ParameterDirection.Output; + + functionParameters.Rows.Add(functionParameter); + } + + for (int i = 0; i < argNumber; i++) + { + DataRow functionParameter = functionParameters.NewRow(); + + // Create the new foreign key column info + functionParameter["FUNCTION_CATALOG"] = row["FUNCTION_CATALOG"]; + functionParameter["FUNCTION_SCHEMA"] = row["FUNCTION_SCHEMA"]; + functionParameter["FUNCTION_NAME"] = row["FUNCTION_NAME"]; + functionParameter["PARAMETER_NAME"] = (string)argNames.GetValue(i + 1); + functionParameter["DATA_TYPE"] = ""; + functionParameter["PARAMETER_DIRECTION"]= (Int32)ParameterDirection.Input; + + functionParameters.Rows.Add(functionParameter); + } + } + + functionParameters.EndLoadData(); + functionParameters.AcceptChanges(); + + functionParameters.Columns.Remove("RETURNS_SET"); + functionParameters.Columns.Remove("ARGUMENT_NUMBER"); + functionParameters.Columns.Remove("ARGUMENT_TYPES"); + functionParameters.Columns.Remove("ARGUMENT_MODES"); + functionParameters.Columns.Remove("ARGUMENT_NAMES"); + + return functionParameters; + } + #endregion } } Modified: trunk/PostgreSqlClient/source/PostgreSql/Data/Schema/PgFunctions.cs =================================================================== --- trunk/PostgreSqlClient/source/PostgreSql/Data/Schema/PgFunctions.cs 2006-05-19 09:22:36 UTC (rev 149) +++ trunk/PostgreSqlClient/source/PostgreSql/Data/Schema/PgFunctions.cs 2006-05-19 09:23:05 UTC (rev 150) @@ -41,10 +41,7 @@ "when 'v' THEN 'VOLATILE' " + "END AS VOLATILE, " + "pg_proc.proretset AS RETURNS_SET, " + - "pg_proc.prorettype AS RETURN_TYPE, " + "pg_proc.pronargs AS ARGUMENT_NUMBER, " + - "pg_proc.proargtypes AS ARGUMENT_TYPES, " + - "pg_proc.proargtypes AS ARGUMENT_NAMES, " + "pg_proc.prosrc AS SOURCE, " + "pg_description.description AS DESCRIPTION " + "FROM " + @@ -77,7 +74,7 @@ { where += " and "; } - where += String.Format(" and pg_proc.proname = '{0}'", restrictions[2]); + where += String.Format(" pg_proc.proname = '{0}'", restrictions[2]); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |