Не знаю насколько связаны эти топики...
В 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))
;