Dibi\Drivers\FirebirdDriver::getIndexes PHP Method

getIndexes() public method

Returns metadata for all indexes in a table (the constraints are included).
public getIndexes ( $table ) : array
return array
    public function getIndexes($table)
    {
        $table = strtoupper($table);
        $res = $this->query("\n\t\t\tSELECT TRIM(s.RDB\$INDEX_NAME) AS INDEX_NAME,\n\t\t\t\tTRIM(s.RDB\$FIELD_NAME) AS FIELD_NAME,\n\t\t\t\ti.RDB\$UNIQUE_FLAG AS UNIQUE_FLAG,\n\t\t\t\ti.RDB\$FOREIGN_KEY AS FOREIGN_KEY,\n\t\t\t\tTRIM(r.RDB\$CONSTRAINT_TYPE) AS CONSTRAINT_TYPE,\n\t\t\t\ts.RDB\$FIELD_POSITION AS FIELD_POSITION\n\t\t\tFROM RDB\$INDEX_SEGMENTS s\n\t\t\t\tLEFT JOIN RDB\$INDICES i ON i.RDB\$INDEX_NAME = s.RDB\$INDEX_NAME\n\t\t\t\tLEFT JOIN RDB\$RELATION_CONSTRAINTS r ON r.RDB\$INDEX_NAME = s.RDB\$INDEX_NAME\n\t\t\tWHERE UPPER(i.RDB\$RELATION_NAME) = '{$table}'\n\t\t\tORDER BY s.RDB\$FIELD_POSITION");
        $indexes = [];
        while ($row = $res->fetch(TRUE)) {
            $key = $row['INDEX_NAME'];
            $indexes[$key]['name'] = $key;
            $indexes[$key]['unique'] = $row['UNIQUE_FLAG'] === 1;
            $indexes[$key]['primary'] = $row['CONSTRAINT_TYPE'] === 'PRIMARY KEY';
            $indexes[$key]['table'] = $table;
            $indexes[$key]['columns'][$row['FIELD_POSITION']] = $row['FIELD_NAME'];
        }
        return $indexes;
    }