Subject Re: [firebird-support] from FB 2.5.2 to 2.5.6 and C application
Author
Adding some notes:

Examples stat3.e and stat5.e from /opt/firebird/examples/stat/ don't work, while stat2.e works.
I'm getting the same -901 "request synchronization error".

Steps to reproduce:

Extract somewhere FirebirdCS-2.5.6.27020-0.i686.tar.gz
"su" to be root.
Run install.sh, creates backup, ask for password.
Replace /opt/firebird/security2.fdb with symlink to reallife security2.fdb.
Get /etc/init.d/firebird from somewhere.
service firebird start

cd /opt/firebird/examples/stat
cp ../include/example.h .
/opt/firebird/bin/gpre -d employee.fdb stat2.e
export ISC_USER=sysdba
export ISC_PASSWORD=...
export ISC_DATABASE=employee.fdb
cc -lfbclient stat2.c -o stat2
./stat2
(Same for stat3.e and stat5.e)

Like I said, in FB 2.5.6 stat3 and stat5 throw error.
If I do the same with FB 2.5.5 then these examples work.


---------- Původní zpráva ----------
Od: ehmmm.firebird@... [firebird-support] <firebird-support@yahoogroups.com>
Komu: firebird-support@yahoogroups.com
Datum: 26. 7. 2016 20:46:58
Předmět: [firebird-support] from FB 2.5.2 to 2.5.6 and C application


 

Hi,
we have server with Debian 6.0 squeeze and there we have Firebird 2.5.2 (superclassic) which sometimes hangs and I don't know why.
So my idea was to install there FB 2.5.6.
I downloaded FB 2.5.6 superclassic i686 (debian is amd64 but previous firebird seems to be i686 so I decided to continue using i686) tar.gz, extracted it and executed install.sh.
I think I was quite successful. I didn't make backups of *.fdb files, I only copied older security2.fdb into /opt/firebird and copied some init script from /opet/firebird/misc into /etc/init.d
My PHP webapges work well, my Python apps work well, FlameRobin works well.
The only problem I have with some old C programs running on the same server, precompiled via GPRE utility.
These C apps fail for example on then line (just example) EXEC SQL FETCH cur_al...:

int i, id, status;

EXEC SQL CONNECT DB USER '...' PASSWORD '...';
EXEC SQL SET TRANSACTION READ WRITE WAIT ISOLATION LEVEL READ COMMITTED;

EXEC SQL DECLARE cur_al CURSOR FOR SELECT id_blabla, status FROM blabla;

EXEC SQL OPEN cur_al;
while(SQLCODE == 0) {
    EXEC SQL FETCH cur_al INTO :id, :status;
    if (SQLCODE == 0) { ... }
}

EXEC SQL CLOSE cur_al;

...

It throws error -901 and messages "Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements" and "request synchronization error".

I'm not author of these C apps and I'm not very skilled in C on linux, I only found some Makefile so I tried run "make". But it didn't help.

What should I try? Should I look somewhere for some libraries?

The most interesting for me is that when I download and install FB 2.5.5 or 2.5.4 (I must admit that upgrading/downgrading firebird inside 2.5.x is quite easy) then these C apps seems to work correctly. (?) Is there any explanation for this?

=

=