Linux Client prepare statement can systematically crashes server if 4 SMALLINT
in a row
---------------------------------------------------------------------------------------
Key: CORE-5473
URL: http://tracker.firebirdsql.org/browse/CORE-5473
Project: Firebird Core
Issue Type: Bug
Components: API / Client Library
Affects Versions: 2.5.6
Environment: Server: SuperServer on Linux Ubuntu 16 (14 as well)
64bit; C++ Client on Linux using directly the C API (gcc 5.4 64bit)
Reporter: Philippe Truc
1. A simple table:
CREATE TABLE PersonalInfos
(
Id BIGINT NOT NULL,
Birthday TIMESTAMP,
NbChildren SMALLINT DEFAULT 0,
Status SMALLINT DEFAULT 0,
PreferredLang SMALLINT DEFAULT 0,
Sex SMALLINT DEFAULT 0
);
ALTER TABLE PersonalInfos ADD PRIMARY KEY ( Id );
CREATE SEQUENCE seq_PersonalInfos;
2. A simple stored procedure:
CREATE OR ALTER PROCEDURE spc_PersonalInfo(
Sex SMALLINT
,PreferredLang SMALLINT
,Status SMALLINT
,NbChildren SMALLINT
,Birthday TIMESTAMP
)
RETURNS(Id BIGINT)
AS BEGIN
SELECT NEXT VALUE FOR seq_PersonalInfos FROM RDB$DATABASE INTO :Id;
INSERT INTO PersonalInfos(
Id
,Sex
,PreferredLang
,Status
,NbChildren
,Birthday
) VALUES (
:Id
,:Sex
,:PreferredLang
,:Status
,:NbChildren
,:Birthday
);
END #
3. Run SuperSrerver 2.6 on Linux Ubuntu 16 (same on Ubuntu 14) 64 bit.
4. Execute stored procedure in isql-fb on Linux: no issue:
SQL> execute procedure spc_personalinfo 0,0,0,0,'2017-02-01';
ID
===================
1
3. Connect with C++ client on windows 10 (VS2013): no issue. Very same client
compiled and run on Linux (gcc54 64bit) : crashes systematically server on
calling: isc_dsql_prepare
On client side: [SQLCODE=-902]
4. Create a similar stored procedure, but with only 3 SMALLINT:
CREATE OR ALTER PROCEDURE spc_PersonalInfo2(
PreferredLang SMALLINT
,Status SMALLINT
,NbChildren SMALLINT
,Birthday TIMESTAMP
)
RETURNS(Id BIGINT)
AS BEGIN
SELECT NEXT VALUE FOR seq_PersonalInfos FROM RDB$DATABASE INTO :Id;
INSERT INTO PersonalInfos(
Id
,Sex
,PreferredLang
,Status
,NbChildren
,Birthday
) VALUES (
:Id
,0
,:PreferredLang
,:Status
,:NbChildren
,:Birthday
);
END #
--> Works without problem anymore.
Hypothesis: 4 SMALLINT = 1 BIGINT, maybe a confusion in the Linux client API? I
have no idea of the Firebird code, just the only pattern I could find to
explain this systematic crash while I have dozens of other stored procedures
and tables without issues.
--
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
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel