Repeat Temporary Table access from ReadOnly Transaction and ReadWrite 
transaction causes Internal Firebird consistency check (cannot find record back 
version (291), file: vio.cpp line: 4905)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: CORE-3959
                 URL: http://tracker.firebirdsql.org/browse/CORE-3959
             Project: Firebird Core
          Issue Type: Bug
          Components: Engine
    Affects Versions: 2.5.1
         Environment: Windows 7 - 64bits  - Server Version: WI-V2.5.2.26536 
Firebird 2.5 32bits - Delphi 2007 with Fibplus
            Reporter: acacio2000
         Attachments: Bug.rar

This error occurs with Firebird 2.5.1 too !!

I create an application with one database connection and two transactions

transaction 1 (readonly) parameters:
read
nowait
rec_version
read_committed

transaction 2 (readwrite) parameters:
write
nowait
rec_version
read_committed

I have a Query Select from one Stored Procedure (FU_X1) access by transaction 
1, this Stored Procedure delete all records from temporary table and insert 
records in temporary table. I started transaction (READ), but never commit it !
I have a second Stored Procedure (SAVE_X1)  access by transaction 2, this 
update records in temporary table. I started transaction, execute Stored 
Procedure, commit transaction, it´s works fine
But when I try reopen a Query again, cause a corrupted database

Unsuccessful execution caused by a system error that precludes successful 
execution of subsequent statements.
Internal Firebird consistency check (cannot find record back version (291), 
file: vio.cpp line: 4905).

DDL:

CREATE GLOBAL TEMPORARY TABLE X1 (
    ID    INTEGER,
    NAME  VARCHAR(10)
) ON COMMIT PRESERVE ROWS;


/******************************************************************************/
/***                           Stored Procedures                            ***/
/******************************************************************************/


SET TERM ^ ;

ALTER PROCEDURE FU_X1
RETURNS (
    SID INTEGER,
    SNAME VARCHAR(10))
AS
begin
  delete
  from
      X1;

  insert into X1
  values (
      1,
      '1');
  insert into X1
  values (
      2,
      '2');
  insert into X1
  values (
      3,
      '3');
  insert into X1
  values (
      4,
      '4');
  insert into X1
  values (
      5,
      '5');

  for
      select
          X1.ID,
          X1.NAME
      from
          X1
      into
          SID,
          SNAME
  do
    suspend;
end^


ALTER PROCEDURE SAVE_X1 (
    PID INTEGER,
    PNAME VARCHAR(10))
AS
begin
  update X1
  set
      NAME = :PNAME
  where
      X1.ID = :PID;
  if (row_count = 0) then
    insert into X1
    values (
        :PID,
        :PNAME);
end^

SET TERM ; ^



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

       

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to