def get_table_indexes(conn,obj): """ Obtiene los indices de una tabla """ cur = conn.cursor() cur.execute(""" SELECT c2.oid, c2.relname, i.indisprimary, i.indisunique, i.indisclustered, i.indisvalid, pg_catalog.pg_get_indexdef(i.indexrelid, 0, true), c2.reltablespace FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i WHERE c.oid = %s AND c.oid = i.indrelid AND i.indexrelid = c2.oid ORDER BY i.indisprimary DESC, i.indisunique DESC, c2.relname """, [obj.oid]) for oid, name, isprimary, isunique, isclustered, isvalid, sql_definition, tablespace_oid in cur: index = Struct() index.oid = oid index.name = name index.isprimary = isprimary index.isunique = isunique index.isclustered = isclustered index.isvalid = isvalid index.sql_definition = sql_definition index.tablespace_oid = tablespace_oid index.columns = get_index_columns(conn, index) yield index