I have strange situation for executing query in Firebird 2.5:
select ps.ProductId, p.Id, p.DefPurcUOMNr, p.IsStockFlag 
  from ProductSupplier ps left join 
    Product p on p.Id = ps.ProductId 
where 
  (select q.Qty from ProductQtyBMUToUOM$(p.Id, p.DefPurcUOMNr, 1) as q) > 0 
Query above is working fine but if add p.IsStockFlag = 1 then p.Id, p.DefPurcUOMNr parameters of stored proc ProductQtyBMUToUOM$ will pass equals NULL for records with p.IsStockFlag = 0. 
select ps.ProductId, p.Id, p.DefPurcUOMNr, p.IsStockFlag 
  from ProductSupplier ps left join 
    Product p on p.Id = ps.ProductId 
where 
  p.IsStockFlag=1 and
  (select q.Qty from ProductQtyBMUToUOM$(p.Id, p.DefPurcUOMNr, 1) as q) > 0 
I guess it is correct behavior but i can't find good description of it. Only my guess which based on this observing.
Thanks all in advance.
 
     
     
    