-- create test database
create database 'test_udr.fdb';
-- make sure ParallelWorkers > 1 in firebird.conf
select rdb$config_value from rdb$config
where rdb$config_name = 'ParallelWorkers';
-- create UDR
create function sum_args (
n1 integer,
n2 integer,
n3 integer
) returns integer
external name 'udrcpp_example!sum_args'
engine udr;
-- make sure it works
select sum_args(1, 2, 3) from rdb$database;
SUM_ARGS
========
6
commit;
-- create table with dependency on UDR
create table t (
f1 int,
f2 int,
f3 int,
f_sum computed by (sum_args(f1, f2, f3))
);
-- fill it with some data
insert into t values (1, 1, 1);
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
insert into t select f1, f2, f3 from t;
commit;
-- make sure there are at least 2 pointer pages
select count(*) from rdb$pages p join rdb$relations r on p.rdb$relation_id = r.rdb$relation_id
where r.rdb$relation_name = 'T'
and p.rdb$page_type = 4;
COUNT
=================
2
-- create index
create index t_idx_f1 on t(f1);
Release build crashed silently.
Original issue was reported by user privately.
The crash happens on SuperServer only, table should be big enough to have more than one pointers page.
Also table must depend on some UDR, for example, use UDR in computed field.
Steps to reproduce
Release build crashed silently.
Thread stack in release build