Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

<Missing arg #1 - possibly status vector overflow>. [CORE6113] #6362

Open
firebird-automations opened this issue Aug 1, 2019 · 5 comments
Open

Comments

@firebird-automations
Copy link
Collaborator

Submitted by: Jan Kohlmeyer (colaflasche)

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

@firebird-automations
Copy link
Collaborator Author

Modified by: Jan Kohlmeyer (colaflasche)

description: 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

=>

I have 3 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

@firebird-automations
Copy link
Collaborator Author

Modified by: Jan Kohlmeyer (colaflasche)

description: I have 3 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

=>

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

@firebird-automations
Copy link
Collaborator Author

Commented by: @AlexPeshkoff

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.

@firebird-automations
Copy link
Collaborator Author

Commented by: Jan Kohlmeyer (colaflasche)

Okay, with isql I also can't reproduce it. I've only by using IB-Expert or IBDAC DataAccess-Components with my Delphi.

@firebird-automations
Copy link
Collaborator Author

Commented by: @AlexPeshkoff

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant