You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The behaviour of this function seems to have changed slightly.
In FB 2.5 this string:
SELECT * FROM DEPT_BUDGET(0)
will execute in isc_dsql_execute_immediate without error.
If the server is FB 3.0 and the client is Fb 2.5 this error is thrown:
Dynamic SQL Error
-SQLDA missing or incorrect version, or incorrect number/type of
variables
-unknown ISC error 336003111
If the server is Fb 3.0 and the client is Fb 3.0 this error is thrown:
Dynamic SQL Error
-SQLDA error
-Wrong number of parameters (expected 1, got 0)
In all cases isc_dsql_execute_immediate is called with a null xsqlda.
I've tested this with a control statement that does a dummy update. In
all those cases execution succeeds correctly with a null xsqlda.
Obviously select statements are not meant to work with
isc_dsql_execute_immediate. And it is arguable that the old behaviour
was incorrect because it allowed misuse of the function. However, if we
are going to throw an error I think it should be more explicit. Perhaps
something along the lines of:
'Select statements cannot be execute by isc_dsql_execute_immediate'
Submitted by: @reevespaul
The behaviour of this function seems to have changed slightly.
In FB 2.5 this string:
SELECT * FROM DEPT_BUDGET(0)
will execute in isc_dsql_execute_immediate without error.
If the server is FB 3.0 and the client is Fb 2.5 this error is thrown:
Dynamic SQL Error
-SQLDA missing or incorrect version, or incorrect number/type of
variables
-unknown ISC error 336003111
If the server is Fb 3.0 and the client is Fb 3.0 this error is thrown:
Dynamic SQL Error
-SQLDA error
-Wrong number of parameters (expected 1, got 0)
In all cases isc_dsql_execute_immediate is called with a null xsqlda.
I've tested this with a control statement that does a dummy update. In
all those cases execution succeeds correctly with a null xsqlda.
Obviously select statements are not meant to work with
isc_dsql_execute_immediate. And it is arguable that the old behaviour
was incorrect because it allowed misuse of the function. However, if we
are going to throw an error I think it should be more explicit. Perhaps
something along the lines of:
'Select statements cannot be execute by isc_dsql_execute_immediate'
Commits: 641a2b9 6b4a5c9
====== Test Details ======
Can`t reproduce using neither ISQL nor Python: they both prevent from API misuse.
The text was updated successfully, but these errors were encountered: