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;
}