Example #1
0
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