internal override DatabaseObjectMetadata LoadDatabaseObjectMetadata(DatabaseObject databaseObject) { var sql = @"SELECT DISTINCT pg_catalog.obj_description(c.oid) AS table_comment, c.relname AS table_name FROM pg_class c LEFT JOIN pg_attribute a ON a.attrelid = c.oid LEFT JOIN pg_namespace d ON d.oid = c.relnamespace WHERE c.relname = @objectName AND d.nspname= @schemaName ;"; using (var cn = OpenConnection()) { using (var cmd = new NpgsqlCommand(sql, cn)) { cmd.Parameters.Add("@schemaName", NpgsqlTypes.NpgsqlDbType.Varchar).Value = databaseObject.SchemaName; cmd.Parameters.Add("@objectName", NpgsqlTypes.NpgsqlDbType.Varchar).Value = databaseObject.ObjectName; using (var dr = cmd.ExecuteReader()) { var meta = new DatabaseObjectMetadata(); while (dr.Read()) { meta.Summary = dr.IsDBNull(0) ? "" : dr.GetString(0); } return(meta); } } } }
internal override DatabaseObjectMetadata LoadDatabaseObjectMetadata(DatabaseObject databaseObject) { var sql = @" SELECT table_comment comment FROM information_schema.tables t WHERE t.table_schema LIKE @databaseName AND t.table_name LIKE @objectName UNION SELECT routine_comment comment FROM information_schema.routines r WHERE r.routine_schema LIKE @databaseName AND r.routine_name LIKE @objectName ;"; using (var cn = OpenConnection()) { using (var cmd = new MySqlCommand(sql, cn)) { cmd.Parameters.Add("@databaseName", MySqlDbType.VarChar).Value = databaseObject.DatabaseName; cmd.Parameters.Add("@objectName", MySqlDbType.VarChar).Value = databaseObject.ObjectName; using (var dr = cmd.ExecuteReader()) { var meta = new DatabaseObjectMetadata(); while (dr.Read()) { meta.Summary = dr.GetString(0); } return(meta); } } } }
/// <summary> /// Loads metadata of a database object. /// </summary> /// <param name="databaseObject"></param> /// <returns></returns> internal override DatabaseObjectMetadata LoadDatabaseObjectMetadata(DatabaseObject databaseObject) { var sql = @" SELECT p.name, p.value FROM sys.extended_properties p WHERE p.class = 1 -- OBJECT_OR_COLUMN AND p.major_id = OBJECT_ID(@schemaName + '.' + @objectName) AND p.minor_id = 0 -- only objects AND p.name LIKE 'meta.%' ORDER BY p.name"; using (var cn = OpenConnection()) { using (var cmd = new SqlCommand(sql, cn)) { cmd.Parameters.Add("@schemaName", SqlDbType.NVarChar).Value = databaseObject.SchemaName; cmd.Parameters.Add("@objectName", SqlDbType.NVarChar).Value = databaseObject.ObjectName; using (var dr = cmd.ExecuteReader()) { var meta = new DatabaseObjectMetadata(); while (dr.Read()) { var name = dr.GetString(0); var value = dr.GetString(1); switch (name) { case Constants.MetaSummary: meta.Summary = value; break; case Constants.MetaRemarks: meta.Remarks = value; break; case Constants.MetaExample: meta.Example = value; break; default: break; } } return(meta); } } } }