Crash engine in case of re-creation of an erratic body of a packet
------------------------------------------------------------------

                 Key: CORE-4271
                 URL: http://tracker.firebirdsql.org/browse/CORE-4271
             Project: Firebird Core
          Issue Type: Bug
          Components: Engine
    Affects Versions: 3.0 Alpha 1
         Environment: Windows 7 x86
            Reporter: Simonov Denis


Use CONNECT or CREATE DATABASE to specify a database
SQL> set names win1251;
SQL> create database 'localhost/3051:d:/interbasedata/3.0/test.fdb' user 
'sysdba' password 'masterkey' page_size 8192 DE
FAULT CHARACTER SET WIN1251;
SQL> SET TERM ^;
SQL>
SQL> CREATE OR ALTER PACKAGE PKG_SEQUENCE
CON> AS
CON> BEGIN
CON>   PROCEDURE INITIALIZE(MIN_VALUE INTEGER, MAX_VALUE INTEGER, STEP INTEGER);
CON>
CON>   FUNCTION GET_CURRENT_VALUE RETURNS INTEGER;
CON>
CON>   FUNCTION NEXT_VALUE RETURNS INTEGER;
CON>
CON>   FUNCTION IS_END RETURNS BOOLEAN;
CON> END^
SQL>
SQL> RECREATE PACKAGE BODY PKG_SEQUENCE
CON> AS
CON> BEGIN
CON>
CON>   FUNCTION GET_MAX RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RETURN CAST(RDB$GET_CONTEXT('USER_SESSION', 'MAX_VALUE') AS INTEGER);
CON>   END
CON>
CON>   FUNCTION SET_MAX(AVALUE INTEGER) RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RDB$SET_CONTEXT('USER_SESSION', 'MAX_VALUE', AVALUE);
CON>     RETURN AVALUE;
CON>   END
CON>
CON>   FUNCTION GET_MIN RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RETURN CAST(RDB$GET_CONTEXT('USER_SESSION', 'MIN_VALUE') AS INTEGER);
CON>   END
CON>
CON>   FUNCTION SET_MIN(AVALUE INTEGER) RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RDB$SET_CONTEXT('USER_SESSION', 'MIN_VALUE', AVALUE);
CON>     RETURN AVALUE;
CON>   END
CON>
CON>   FUNCTION GET_STEP RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RETURN CAST(RDB$GET_CONTEXT('USER_SESSION', 'STEP_VALUE') AS INTEGER);
CON>   END
CON>
CON>   FUNCTION SET_STEP(AVALUE INTEGER) RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RDB$SET_CONTEXT('USER_SESSION', 'STEP_VALUE', AVALUE);
CON>     RETURN AVALUE;
CON>   END
CON>
CON>   FUNCTION GET_CURRENT_VALUE RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RETURN CAST(RDB$GET_CONTEXT('USER_SESSION', 'CURRENT_VALUE') AS 
INTEGER);
CON>   END
CON>
CON>   FUNCTION SET_CURRENT_VALUE(AVALUE INTEGER) RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RDB$SET_CONTEXT('USER_SESSION', 'CURRENT_VALUE', AVALUE);
CON>     RETURN AVALUE;
CON>   END
CON>
CON>   FUNCTION NEXT_VALUE RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     IF (NOT IS_END()) THEN
CON>       SET_CURRENT_VALUE(GET_CURRENT_VALUE() + GET_STEP());
CON>     RETURN GET_CURRENT_VALUE();
CON>   END
CON>
CON>   FUNCTION IS_END RETURNS BOOLEAN
CON>   AS
CON>   BEGIN
CON>     RETURN GET_CURRENT_VALUE() > GET_MAX();
CON>   END
CON>
CON>   PROCEDURE INITIALIZE(MIN_VALUE INTEGER, MAX_VALUE INTEGER, STEP INTEGER)
CON>   AS
CON>   BEGIN
CON>     SET_MIN(MIN_VALUE);
CON>     SET_MAX(MAX_VALUE);
CON>     SET_STEP(STEP);
CON>     SET_CURRENT_VALUE(MIN_VALUE);
CON>   END
CON>
CON> END^
SQL>
SQL> EXECUTE BLOCK
CON> RETURNS (
CON>     OUT INTEGER)
CON> AS
CON> BEGIN
CON>   EXECUTE PROCEDURE PKG_SEQUENCE.INITIALIZE(10, 140, 5);
CON>   OUT = PKG_SEQUENCE.GET_CURRENT_VALUE();
CON>   SUSPEND;
CON>   WHILE (NOT PKG_SEQUENCE.IS_END()) DO
CON>   BEGIN
CON>     OUT = PKG_SEQUENCE.NEXT_VALUE();
CON>     SUSPEND;
CON>   END
CON> END^

         OUT
============
          10
Statement failed, SQLSTATE = 2F000
Cannot execute function IS_END of the unimplemented package PKG_SEQUENCE
-At function 'PKG_SEQUENCE.NEXT_VALUE' line: 60, col: 5
SQL> RECREATE PACKAGE BODY PKG_SEQUENCE
CON> AS
CON> BEGIN
CON>
CON>   FUNCTION GET_MAX RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RETURN CAST(RDB$GET_CONTEXT('USER_SESSION', 'MAX_VALUE') AS INTEGER);
CON>   END
CON>
CON>   FUNCTION SET_MAX(AVALUE INTEGER) RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RDB$SET_CONTEXT('USER_SESSION', 'MAX_VALUE', AVALUE);
CON>     RETURN AVALUE;
CON>   END
CON>
CON>   FUNCTION GET_MIN RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RETURN CAST(RDB$GET_CONTEXT('USER_SESSION', 'MIN_VALUE') AS INTEGER);
CON>   END
CON>
CON>   FUNCTION SET_MIN(AVALUE INTEGER) RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RDB$SET_CONTEXT('USER_SESSION', 'MIN_VALUE', AVALUE);
CON>     RETURN AVALUE;
CON>   END
CON>
CON>   FUNCTION GET_STEP RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RETURN CAST(RDB$GET_CONTEXT('USER_SESSION', 'STEP_VALUE') AS INTEGER);
CON>   END
CON>
CON>   FUNCTION SET_STEP(AVALUE INTEGER) RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RDB$SET_CONTEXT('USER_SESSION', 'STEP_VALUE', AVALUE);
CON>     RETURN AVALUE;
CON>   END
CON>
CON>   FUNCTION GET_CURRENT_VALUE RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RETURN CAST(RDB$GET_CONTEXT('USER_SESSION', 'CURRENT_VALUE') AS 
INTEGER);
CON>   END
CON>
CON>   FUNCTION SET_CURRENT_VALUE(AVALUE INTEGER) RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     RDB$SET_CONTEXT('USER_SESSION', 'CURRENT_VALUE', AVALUE);
CON>     RETURN AVALUE;
CON>   END
CON>
CON>   FUNCTION NEXT_VALUE RETURNS INTEGER
CON>   AS
CON>   BEGIN
CON>     IF (NOT IS_END()) THEN
CON>       SET_CURRENT_VALUE(GET_CURRENT_VALUE() + GET_STEP());
CON>     RETURN GET_CURRENT_VALUE();
CON>   END
CON>
CON>   FUNCTION IS_END RETURNS BOOLEAN
CON>   AS
CON>   BEGIN
CON>     RETURN GET_CURRENT_VALUE() > GET_MAX();
CON>   END
CON>
CON>   PROCEDURE INITIALIZE(MIN_VALUE INTEGER, MAX_VALUE INTEGER, STEP INTEGER)
CON>   AS
CON>   BEGIN
CON>     SET_MIN(MIN_VALUE);
CON>     SET_MAX(MAX_VALUE);
CON>     SET_STEP(STEP);
CON>     SET_CURRENT_VALUE(MIN_VALUE);
CON>   END
CON>
CON> END^
SQL> EXECUTE BLOCK
CON> RETURNS (
CON>     OUT INTEGER)
CON> AS
CON> BEGIN
CON>   EXECUTE PROCEDURE PKG_SEQUENCE.INITIALIZE(10, 140, 5);
CON>   OUT = PKG_SEQUENCE.GET_CURRENT_VALUE();
CON>   SUSPEND;
CON>   WHILE (NOT PKG_SEQUENCE.IS_END()) DO
CON>   BEGIN
CON>     OUT = PKG_SEQUENCE.NEXT_VALUE();
CON>     SUSPEND;
CON>   END
CON> END^
Statement failed, SQLSTATE = 08006
Error reading data from the connection.
SQL>



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

------------------------------------------------------------------------------
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to