firebird icon indicating copy to clipboard operation
firebird copied to clipboard

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

Open firebird-automations opened this issue 6 years ago • 9 comments

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 avatar Aug 01 '19 16:08 firebird-automations

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 avatar Aug 01 '19 16:08 firebird-automations

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 avatar Aug 01 '19 16:08 firebird-automations

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 avatar Aug 01 '19 17:08 firebird-automations

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 avatar Aug 02 '19 10:08 firebird-automations

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.

firebird-automations avatar Aug 02 '19 12:08 firebird-automations

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"

virgoparna avatar May 23 '24 09:05 virgoparna

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

aafemt avatar May 23 '24 09:05 aafemt

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 avatar May 23 '24 09:05 virgoparna

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...

virgoparna avatar May 23 '24 10:05 virgoparna