Details
-
Bug
-
Resolution: Done
-
P2: Important
-
5.14.1
-
None
-
Linux, macOS, Windows
-
-
65afcef2173cabe297778d19dda3198595820cfa (qt/qtbase/dev) e030aab963af12404c9c1d2ef0f53d3905dd590a (qt/qtbase/5.15)
Description
Because the interbase driver QIBASE unconditionally replaces colon prefixed names with question marks, to support named parameters.
This happens in QSqlResultPrivate::namedToPositionalBinding() where the colon is hardcoded as named parameter introducer.
So this behaviour can neither disabled nor can the prefix configured to use other characters than the colon.
This affects the create procedure and the execute block statements, which therefore cannot used with in/out parameters or variables.
e.g.
execute block (inparam varchar(10) = ?)
returns (outparam varchar(20))
as
declare variable varname varchar(10);
begin
select :inparam || :varname
from rdb$database
into :outparam;
suspend;
end
this will be converted in QSqlResultPrivate::namedToPositionalBinding() to:
execute block (inparam varchar(10) = ?)
returns (outparam varchar(20))
as
declare variable varname varchar(10);
begin
select ? || ?
from rdb$database
into ?;
suspend;
end
which is completely illegal firebird sql code.
Please allow this feature to be disabled or allow to replace the named parameter prefix character.
Attachments
For Gerrit Dashboard: QTBUG-83152 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
309717,4 | Interbase: Handle EXECUTE BLOCK statements correctly | dev | qt/qtbase | Status: MERGED | +2 | 0 |
313639,2 | Interbase: Handle EXECUTE BLOCK statements correctly | 5.15 | qt/qtbase | Status: MERGED | +2 | 0 |