[pgsqlclient-checkins] SF.net SVN: pgsqlclient: [56] trunk/pgsqlclient/source/PostgreSql/Data/Schema
Status: Inactive
Brought to you by:
carlosga_fb
|
From: <car...@us...> - 2006-03-27 12:45:28
|
Revision: 56 Author: carlosga_fb Date: 2006-03-27 04:45:14 -0800 (Mon, 27 Mar 2006) ViewCVS: http://svn.sourceforge.net/pgsqlclient/?rev=56&view=rev Log Message: ----------- ?\194?\183 Implemented Index Columns database schema Modified Paths: -------------- trunk/pgsqlclient/source/PostgreSql/Data/Schema/MetaData.xml trunk/pgsqlclient/source/PostgreSql/Data/Schema/PgIndexColumns.cs Modified: trunk/pgsqlclient/source/PostgreSql/Data/Schema/MetaData.xml =================================================================== --- trunk/pgsqlclient/source/PostgreSql/Data/Schema/MetaData.xml 2006-03-27 12:13:59 UTC (rev 55) +++ trunk/pgsqlclient/source/PostgreSql/Data/Schema/MetaData.xml 2006-03-27 12:45:14 UTC (rev 56) @@ -176,7 +176,7 @@ </MetaDataCollections> <MetaDataCollections> <CollectionName>IndexColumns</CollectionName> - <NumberOfRestrictions>4</NumberOfRestrictions> + <NumberOfRestrictions>5</NumberOfRestrictions> <NumberOfIdentifierParts>0</NumberOfIdentifierParts> <PopulationMechanism>PrepareCollection</PopulationMechanism> </MetaDataCollections> Modified: trunk/pgsqlclient/source/PostgreSql/Data/Schema/PgIndexColumns.cs =================================================================== --- trunk/pgsqlclient/source/PostgreSql/Data/Schema/PgIndexColumns.cs 2006-03-27 12:13:59 UTC (rev 55) +++ trunk/pgsqlclient/source/PostgreSql/Data/Schema/PgIndexColumns.cs 2006-03-27 12:45:14 UTC (rev 56) @@ -25,9 +25,60 @@ protected override string BuildSql(string[] restrictions) { - throw new Exception("The method or operation is not implemented."); - } + string sql = + "SELECT " + + "current_database() AS TABLE_CATALOG, " + + "pg_namespace.nspname AS TABLE_SCHEMA, " + + "pg_class.relname AS TABLE_NAME, " + + "current_database() AS INDEX_CATALOG, " + + "pg_namespidx.nspname AS INDEX_SCHEMA, " + + "pg_classidx.relname AS INDEX_NAME, " + + "pg_attribute.attname AS COLUMN_NAME, " + + "pg_attribute.attnum AS ORDINAL_POSITION " + + "FROM pg_index " + + "left join pg_class ON pg_index.indrelid = pg_class.oid " + + "left join pg_class as pg_classidx ON pg_index.indexrelid = pg_classidx.oid " + + "left join pg_namespace ON pg_classidx.relnamespace = pg_namespace.oid " + + "left join pg_namespace as pg_namespidx ON pg_classidx.relnamespace = pg_namespidx.oid " + + "left join pg_attribute ON pg_index.indexrelid = pg_attribute.attrelid "; + + if (restrictions != null && restrictions.Length > 0) + { + // TABLE_CATALOG + if (restrictions.Length > 0 && restrictions[0] != null) + { + } + // TABLE_SCHEMA + if (restrictions.Length > 1 && restrictions[1] != null) + { + sql += String.Format(" and pg_namespace.nspname = '{0}'", restrictions[1]); + } + + // TABLE_NAME + if (restrictions.Length > 2 && restrictions[2] != null) + { + sql += String.Format(" and pg_class.relname = '{0}'", restrictions[2]); + } + + // INDEX_NAME + if (restrictions.Length > 3 && restrictions[3] != null) + { + sql += String.Format(" and pg_classidx.relname = '{0}'", restrictions[3]); + } + + // COLUMN_NAME + if (restrictions.Length > 4 && restrictions[4] != null) + { + sql += String.Format(" and pg_attribute.attname = '{0}'", restrictions[4]); + } + } + + sql += "ORDER BY pg_namespace.nspname, pg_class.relname, pg_classidx.relname, pg_attribute.attnum"; + + return sql; + } + #endregion } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |