Issue Details (XML | Word | Printable)

Key: CORE-6113
Type: Bug Bug
Status: Open Open
Priority: Major Major
Assignee: Unassigned
Reporter: Jan Kohlmeyer
Votes: 0
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
Firebird Core

<Missing arg #1 - possibly status vector overflow>.

Created: 01/Aug/19 01:24 PM   Updated: 02/Aug/19 09:53 AM
Component/s: None
Affects Version/s: 3.0.4
Fix Version/s: None

QA Status: No test


 Description  « Hide
I have 2 exceptions in a empty DB:
CREATE EXCEPTION EX_1 '@1';
CREATE EXCEPTION EX_2 '@1@2';

If I do this, I get the exception and the message '<Missing arg #1 - possibly status vector overflow>'
execute block
as
begin
  exception EX_2 using ('a', 'b');
end

if i do one of this I don'd get the extension '<Missing arg #1 - possibly status vector overflow>' in the message:

execute block
as
begin
  exception EX_1 using ('a');
end

execute block
as
begin
  exception EX_2 using ('a');
end

Very crazy:
execute block
as
begin
  exception EX_2 using ('a', 'b', 'c'); -- One Agr more, but exception has only 2 args
end

 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Alexander Peshkov added a comment - 01/Aug/19 02:32 PM
Can not reproduce:

$ ./isql -z employee -user sysdba
ISQL Version: LI-V3.0.5.33154-dev Firebird 3.0
Server version:
LI-V3.0.5.33154-dev Firebird 3.0
Database: employee, User: SYSDBA
SQL> CREATE EXCEPTION EX_1 '@1';
SQL> CREATE EXCEPTION EX_2 '@1@2';
SQL> set term ^;
SQL> execute block
CON> as
CON> begin
CON> exception EX_2 using ('a', 'b');
CON> end^
Statement failed, SQLSTATE = HY000
exception 7
-EX_2
-ab
-At block line: 4, col: 3
SQL>

That's current 3.0.5 but I believe there were no related changes.

Jan Kohlmeyer added a comment - 02/Aug/19 07:57 AM
Okay, with isql I also can't reproduce it. I've only by using IB-Expert or IBDAC DataAccess-Components with my Delphi.

Alexander Peshkov added a comment - 02/Aug/19 09:53 AM
That confirms that this is due to restriction of ISC API. Status vector length is limited by 20 elements (each error message and each argument to it means 2 elements). ISQL is using new API which can work with arbitrary length status vector. Ideal solution is use of new OO API in IB-Expert / IBDAC but I understand that it's not too fast deal.

We can think about something like API call setting higher status vector length but status vector is created by caller (in your case IB-Expert & IBDAC) and therefore you will anyway need new version of routines to make them work with long status vectors.