Skip to content
New issue

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

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

Already on GitHub? # to your account

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

Open
firebird-automations opened this issue Aug 1, 2019 · 9 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.

@virgoparna
Copy link

Run into it with Flamerobin. Strange thing is that adding third parameter into using, when exception accepts only 2 then there is no "Missing arg #1 - possibly status vector overflow"

@aafemt
Copy link
Contributor

aafemt commented May 23, 2024

Extra parameter is not missing parameter thus no error. IMHO this is a correct behavior.

@virgoparna
Copy link

It is just strange, that adding extra parameter silences message... Although I only now noticed, that it was included already in original submission.... That
exception EX_2 using ('a', 'b');
creates that message, but
exception EX_2 using ('a');
and
exception EX_2 using ('a', 'b', 'c');
do not. I guess passing extra parameter is a way to silence it.

@virgoparna
Copy link

Interesting... This Missing arg #1 - possibly status vector overflow is specific to raising exception with 2 parameters. if Exception is defined accepting 3 parameters, then calling it with 2 parameters in uses also results in that message. But not with 1 or 3 or 4. And same is true if exception is defined with no parameters... Passing 2 parameters in uses gives same error... 1, 3, 4 are all fine. Really really strange...

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

No branches or pull requests

3 participants