Computed field could be wrongly evaluated as NULL
-------------------------------------------------
Key: CORE-6351
URL: http://tracker.firebirdsql.org/browse/CORE-6351
Project: Firebird Core
Issue Type: Bug
Components: Engine
Affects Versions: 3.0.6
Reporter: Vlad Khorsun
The sample is based on much more complex case sent to me by user privately.
1. Prepare metatada
create table t1
(
id int,
f1 computed by ('abcd'),
f2 computed by ('xyz')
);
commit;
set term ^;
create or alter procedure p_t1 (id int)
returns (val varchar(32))
as
begin
val = 'unknown';
select f2 from t1 where id = :id
into :val;
suspend;
end^
set term ;^
commit;
alter table t1
alter f1 computed by ((select val from p_t1(id)));
alter table t1
alter f2 computed by ('id = ' || id);
commit;
insert into t1 values (1);
commit;
exit;
2. Test OK
select val from p_t1(1);
VAL
================================
id = 1
select * from t1;
ID F1 F2
============ ================================ ================
1 id = 1 id = 1
exit;
3. Test FAIL
select * from t1;
ID F1 F2
============ ================================ ================
1 <null> id = 1
select val from p_t1(1);
VAL
================================
<null>
exit;
The issue happens when:
- table contains at least two caclulated fields
- first calc field contains expression with PSQL object which used second calc
field
- the table metadata is loaded into metadata cache before metadata of PSQL
object mentioned above
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel