select 'TABLE' table_type
from rdb$Relations
where (rdb$System_Flag = 0 or rdb$System_Flag is null)
AND rdb$View_Source is null
and rdb$Relation_name =
union all
select 'VIEW' table_type
from rdb$Relations
where (rdb$System_Flag = 0 or rdb$System_Flag is null)
AND rdb$View_Source is not null
and rdb$Relation_name =
SELECT
trim( rdb$relations.rdb$relation_name ) as table_name,
trim( col.rdb$field_name ) as name,
pkColumn.rdb$field_name as primarykey,
'false' as identity,
colcon.rdb$field_name as not_nullable,
rdb$fields.rdb$field_type as dbdatatype,
rdb$fields.rdb$field_length as length,
col.rdb$default_value as first_default,
rdb$fields.rdb$default_value as second_default
from RDB$RELATIONS
inner join RDB$RELATION_FIELDS as col on rdb$relations.rdb$relation_name = col.rdb$relation_name
left join RDB$RELATION_CONSTRAINTS as tabCon on col.rdb$relation_name = tabcon.rdb$relation_name
and tabCon.rdb$constraint_type = 6
left join RDB$RELATION_CONSTRAINT_FLDS as colCon on col.rdb$field_name = colcon.rdb$field_name
and tabcon.rdb$constraint_type = 6
left join RDB$RELATION_CONSTRAINTS as pkTable on col.rdb$relation_name = pkTable.rdb$relation_name
and pkTable.rdb$constraint_type = 2
left join RDB$RELATION_CONSTRAINT_FLDS as pkColumn on col.rdb$field_name = pkColumn.rdb$field_name
and pkTable.rdb$constraint_name = pkColumn.rdb$constraint_name
and pkTable.rdb$constraint_type = 2
left join RDB$FIELDS on col.rdb$field_source = rdb$fields.rdb$field_name
where rdb$relations.rdb$relation_name =
thisDefault = "";
if (first_default is "") {
thisDefault = second_default;
} else {
thisDefault = first_default;
}