Не знаю насколько связаны эти топики...
В 1.5.3 - работает.Поставил RC4
Приложение валится с ошибкой:

Error 335544321 (-802): Arithmetic overflow or division by zero has
occurred.arithmetic exception, numeric overflow, or string truncation.

На запросе:
  SELECT R.*, JFK.IDENT AS FK_IDENT, JON.IDENT AS ON_IDENT, DIS.NAME AS
DISABLENAME
  FROM IP$REFERENCESTABLE R
  LEFT OUTER JOIN IP$JOURNALS JFK ON JFK.SOURCE = R.FK_TABLE
  LEFT OUTER JOIN IP$JOURNALS JON ON JON.SOURCE = R.ON_TABLE
  LEFT OUTER JOIN IP$DISABLEDREFS DIS ON DIS.NAME = R.NAME

Где  P$REFERENCESTABLE Это:

CREATE VIEW IP$REFERENCESTABLE(
    NAME,
    ON_INDEXNAME,
    ON_TABLE,
    ON_NATIVE,
    ON_FIELD,
    FK_INDEXNAME,
    FK_TABLE,
    FK_NATIVE,
    FK_FIELD,
    DEF)
AS
select
  B.RDB$CONSTRAINT_NAME as name,
  A.RDB$INDEX_NAME as on_indexname,
  A.RDB$RELATION_NAME as on_table,
  cast(null as varchar(31)) as on_native,
  E.RDB$FIELD_NAME as on_field,
  C.RDB$INDEX_NAME as fk_indexname,
  C.RDB$RELATION_NAME as fk_table,
  cast(null as varchar(31)) as fk_native,
  D.RDB$FIELD_NAME as fk_field,
  cast(null as integer) as def
from RDB$REF_CONSTRAINTS B,
  RDB$RELATION_CONSTRAINTS A,
  RDB$RELATION_CONSTRAINTS C,
  RDB$INDEX_SEGMENTS D,
  RDB$INDEX_SEGMENTS E
where
  (A.RDB$CONSTRAINT_TYPE = 'FOREIGN KEY') and
  (A.RDB$CONSTRAINT_NAME = B.RDB$CONSTRAINT_NAME) and
  (B.RDB$CONST_NAME_UQ = C.RDB$CONSTRAINT_NAME) and
  (C.RDB$INDEX_NAME = D.RDB$INDEX_NAME) and
  (A.RDB$INDEX_NAME = E.RDB$INDEX_NAME) and
  (E.RDB$FIELD_POSITION = D.RDB$FIELD_POSITION)
union all
select
  cast(null as char(31)) as name,
  cast(null as char(31)) as on_indexname,
  cast(FROMTABLE as char(31)) as on_table,
  cast(null as varchar(31)) as on_native,
  cast(FROMFIELD as char(31)) as on_field,
  cast(null as char(31)) as fk_indexname,
  cast(TOTABLE as char(31)) as fk_table,
  cast(null as varchar(31)) as fk_native,
  cast(TOFIELD as char(31)) as fk_field,
  cast(null as integer) as def
from IP$USERDEFINEDCONSTRAINTS
union all
select
  B.RDB$CONSTRAINT_NAME as name,
  A.RDB$INDEX_NAME as on_indexname,
  G.RDB$VIEW_NAME as on_table,
  cast(G.RDB$RELATION_NAME as varchar(31)) as on_native,
  F.RDB$FIELD_NAME as on_field,
  C.RDB$INDEX_NAME as fk_indexname,
  C.RDB$RELATION_NAME as fk_table,
  cast(null as varchar(31)) as fk_native,
  D.RDB$FIELD_NAME as fk_field,
  1 as def
from RDB$REF_CONSTRAINTS B,
  RDB$RELATION_CONSTRAINTS A,
  RDB$RELATION_CONSTRAINTS C,
  RDB$INDEX_SEGMENTS D,
  RDB$INDEX_SEGMENTS E,
  RDB$RELATION_FIELDS F,
  RDB$VIEW_RELATIONS G
where
  (A.RDB$CONSTRAINT_TYPE = 'FOREIGN KEY') and
  (A.RDB$CONSTRAINT_NAME = B.RDB$CONSTRAINT_NAME) and
  (B.RDB$CONST_NAME_UQ = C.RDB$CONSTRAINT_NAME) and
  (C.RDB$INDEX_NAME = D.RDB$INDEX_NAME) and
  (A.RDB$INDEX_NAME = E.RDB$INDEX_NAME) and
  (E.RDB$FIELD_POSITION = D.RDB$FIELD_POSITION) and
  (E.RDB$FIELD_NAME = F.RDB$BASE_FIELD) and
  (A.RDB$RELATION_NAME = G.RDB$RELATION_NAME) and
  (G.RDB$VIEW_NAME = F.RDB$RELATION_NAME) and
  (G.RDB$VIEW_CONTEXT = F.RDB$VIEW_CONTEXT) and
  (G.RDB$VIEW_CONTEXT = (select MIN(RDB$VIEW_CONTEXT) from
   RDB$VIEW_RELATIONS where RDB$VIEW_NAME = F.RDB$RELATION_NAME))
union all
select
  B.RDB$CONSTRAINT_NAME as name,
  A.RDB$INDEX_NAME as on_indexname,
  A.RDB$RELATION_NAME as on_table,
  cast(null as varchar(31)) as on_native,
  E.RDB$FIELD_NAME as on_field,
  C.RDB$INDEX_NAME as fk_indexname,
  G.RDB$VIEW_NAME as fk_table,
  cast(G.RDB$RELATION_NAME as varchar(31)) as fk_native,
  F.RDB$FIELD_NAME as fk_field,
  1 as def
from RDB$REF_CONSTRAINTS B,
  RDB$RELATION_CONSTRAINTS A,
  RDB$RELATION_CONSTRAINTS C,
  RDB$INDEX_SEGMENTS D,
  RDB$INDEX_SEGMENTS E,
  RDB$RELATION_FIELDS F,
  RDB$VIEW_RELATIONS G
where
  (A.RDB$CONSTRAINT_TYPE = 'FOREIGN KEY') and
  (A.RDB$CONSTRAINT_NAME = B.RDB$CONSTRAINT_NAME) and
  (B.RDB$CONST_NAME_UQ = C.RDB$CONSTRAINT_NAME) and
  (C.RDB$INDEX_NAME = D.RDB$INDEX_NAME) and
  (A.RDB$INDEX_NAME = E.RDB$INDEX_NAME) and
  (E.RDB$FIELD_POSITION = D.RDB$FIELD_POSITION) and
  (D.RDB$FIELD_NAME = F.RDB$BASE_FIELD) and
  (C.RDB$RELATION_NAME = G.RDB$RELATION_NAME) and
  (G.RDB$VIEW_NAME = F.RDB$RELATION_NAME) and
  (G.RDB$VIEW_CONTEXT = F.RDB$VIEW_CONTEXT) and
  (G.RDB$VIEW_CONTEXT = (select MIN(RDB$VIEW_CONTEXT) from
   RDB$VIEW_RELATIONS where RDB$VIEW_NAME = F.RDB$RELATION_NAME))
union all
select
  B.RDB$CONSTRAINT_NAME as name,
  A.RDB$INDEX_NAME as on_indexname,
  G2.RDB$VIEW_NAME as on_table,
  cast(G2.RDB$RELATION_NAME as varchar(31)) as on_native,
  F2.RDB$FIELD_NAME as on_field,
  C.RDB$INDEX_NAME as fk_indexname,
  G.RDB$VIEW_NAME as fk_table,
  cast(G.RDB$RELATION_NAME as varchar(31)) as fk_native,
  F.RDB$FIELD_NAME as fk_field,
  1 as def
from RDB$REF_CONSTRAINTS B,
  RDB$RELATION_CONSTRAINTS A,
  RDB$RELATION_CONSTRAINTS C,
  RDB$INDEX_SEGMENTS D,
  RDB$INDEX_SEGMENTS E,
  RDB$RELATION_FIELDS F,
  RDB$VIEW_RELATIONS G,
  RDB$RELATION_FIELDS F2,
  RDB$VIEW_RELATIONS G2
where
  (A.RDB$CONSTRAINT_TYPE = 'FOREIGN KEY') and
  (A.RDB$CONSTRAINT_NAME = B.RDB$CONSTRAINT_NAME) and
  (B.RDB$CONST_NAME_UQ = C.RDB$CONSTRAINT_NAME) and
  (C.RDB$INDEX_NAME = D.RDB$INDEX_NAME) and
  (A.RDB$INDEX_NAME = E.RDB$INDEX_NAME) and
  (E.RDB$FIELD_POSITION = D.RDB$FIELD_POSITION) and
  (D.RDB$FIELD_NAME = F.RDB$BASE_FIELD) and
  (C.RDB$RELATION_NAME = G.RDB$RELATION_NAME) and
  (G.RDB$VIEW_NAME = F.RDB$RELATION_NAME) and
  (G.RDB$VIEW_CONTEXT = F.RDB$VIEW_CONTEXT) and
  (E.RDB$FIELD_NAME = F2.RDB$BASE_FIELD) and
  (A.RDB$RELATION_NAME = G2.RDB$RELATION_NAME) and
  (G2.RDB$VIEW_NAME = F2.RDB$RELATION_NAME) and
  (G2.RDB$VIEW_CONTEXT = F2.RDB$VIEW_CONTEXT) and
  (G.RDB$VIEW_CONTEXT = (select MIN(RDB$VIEW_CONTEXT) from
   RDB$VIEW_RELATIONS where RDB$VIEW_NAME = F.RDB$RELATION_NAME)) and
  (G2.RDB$VIEW_CONTEXT = (select MIN(RDB$VIEW_CONTEXT) from
   RDB$VIEW_RELATIONS where RDB$VIEW_NAME = F2.RDB$RELATION_NAME))
;

Ответить