|
@@ -38,7 +38,16 @@ public class FirebirdQuery extends AbstractDbQuery {
|
|
|
@Override
|
|
|
public String tableFieldsSql() {
|
|
|
return "select trim(f.rdb$relation_name) AS rdb$relation_name, " +
|
|
|
- "trim(f.rdb$field_name) AS FIELD, t.rdb$type_name AS TYPE, '' AS PK " +
|
|
|
+ "trim(f.rdb$field_name) AS FIELD, t.rdb$type_name AS TYPE, " +
|
|
|
+ "(CASE WHEN ( " +
|
|
|
+ " SELECT count(*) " +
|
|
|
+ " FROM RDB$RELATION_CONSTRAINTS RC " +
|
|
|
+ " LEFT JOIN RDB$INDICES I ON (I.RDB$INDEX_NAME = RC.RDB$INDEX_NAME) " +
|
|
|
+ " LEFT JOIN RDB$INDEX_SEGMENTS S ON (S.RDB$INDEX_NAME = I.RDB$INDEX_NAME) " +
|
|
|
+ " WHERE (RC.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') " +
|
|
|
+ " AND (I.RDB$RELATION_NAME = f.rdb$relation_name ) " +
|
|
|
+ " AND (S.RDB$FIELD_NAME = f.rdb$field_name) " +
|
|
|
+ ") > 0 THEN 'PRI' ELSE '' END) AS pk " +
|
|
|
"from rdb$relation_fields f " +
|
|
|
"join rdb$relations r on f.rdb$relation_name = r.rdb$relation_name " +
|
|
|
"JOIN rdb$fields fs ON f.rdb$field_source = fs.rdb$field_name " +
|