Fix for #8082 by making engine to use user buffers directly
Plan "A" is simple:
- Get rid of EOS variable because user buffers have no room for it.
- Modify ParameterNode to use actual message metadata and message buffer instead of one generated during compilation and scratch area.
At this point the testcase for #8082 produces exactly expected output.
Modified testcase that also check coercion of input data. ctest.zip
Previous commit should completely resolve #8185 moving linkage to parent cursor from DsqlStatement into DsqlRequest so changes from #8189 were partially undone.
Previous commit should completely resolve #8185 moving linkage to parent cursor from DsqlStatement into DsqlRequest so changes from #8189 were partially undone.
#8185 is already fixed in different ways in master and v5. I see no relation of #8189 with this PR. I actually see no relation of this PR with actual problem of #8082.
In reality, I do not understand what is this PR about.
What I see in master is just disabled caching for queries with cursor name set (which is 100% in Delphi applications). Reference to #8189 was mistype, I meant #8191. The change in this PR made DsqlStatement constant so it can be cached freely (up to reuse of single instance simultaneously).
disabled caching for queries with cursor name set
Sorry, "reference to cursor" meant here. And Delphi applications are not affected more than others. My fault.
Additionally failed QA tests:
- tests/bugs/core_4374_test.py failed because BLR generated for
SUSPENDis three bytes shorter. (Redundant blr_begin, blr_stall, blr_end were removed.) - tests/bugs/core_5973_test.py failed because deprecated SQLCODE was removed from error messages in refactored code.
- tests/bugs/gh_6910_test.py failed because output message is no more generated for Execute Block without output.
- tests/bugs/gh_7611_test.py failed because behavior of Batch matches behavior of BLR and the workaround doesn't work anymore.
Could someone review this, please?
Updated, ready to merge.
I wonder why these Android runners are so unstable.
Please cleanup req_user_descs that's no longer needed. I'm OK with the PR, just willing to do a few tests before merging.
This branch crashes in tcs test FB_SQL_SUBPROC_1.
This PR broke WHERE CURRENT OF maybe mixed with RETURNING.
The tests I have is private, so I cannot easily share it, but probably any usage is going to cause problem.
Error is: undefined message number
Given the problems this PR seems to have introduced, shouldn't it be backed out/reverted?
These problems are not big enough for that, IMHO. I'd prefer to fix them all one-by-one.
This PR also breaks TCS test AUTO_COMMIT.3.ESQL.
And it's also not fixed by https://github.com/FirebirdSQL/firebird/pull/8571.