rdb$db_key cannot be used in psql with a char(8) as documented
--------------------------------------------------------------

                 Key: CORE-5810
                 URL: http://tracker.firebirdsql.org/browse/CORE-5810
             Project: Firebird Core
          Issue Type: Bug
          Components: Engine
    Affects Versions: 2.5.7
         Environment: Linux - fedora 26
            Reporter: Ray Holme


SQL script follows:
----
select rdb$db_key, recordid from invoice;
set term ^;
create or alter procedure fubar returns (recordid integer) as
 declare variable align1 DECIMAL(18, 4);
 declare variable rdb_id char(8);
 declare variable align2 DECIMAL(18, 4);
 begin
  align1= 1;
  align2= 1;
  for select rdb$db_key from invoice into :rdb_id do
   begin
    select recordid from invoice where rdb$db_key = :rdb_id into :recordid;
    suspend;
   end
 end^
set term ;^
select distinct 'failure coming' from invoice;
select * from fubar;
----
---- results shown below - procedure should have returned the 9 keys shown in 
the select output
DB_KEY               RECORDID 
================ ============ 
A800000002000000            1 
A800000004000000            2 
A800000006000000            3 
A800000008000000            4 
A80000000A000000            5 
A80000000C000000            6 
A80000000E000000            7 
A800000010000000           10 
A800000012000000           11 


CONSTANT       
============== 
failure coming 


    RECORDID 
============ 
Statement failed, SQLSTATE = 22000
Malformed string
-At procedure 'FUBAR' line: 4, col: 3
After line 13 in file /tmp/try.sql

------

a) this should work as shown in the book

b) perhaps PSQL needs a new type (FB_QUAD == GDS_QUAD == ISC_QUAD or ....)
    instead of a char, this type should probably look and feel like a 64 bit 
int, or 2 32-bit ints
    alignment properties would then resemble the real thing as found in C

c) note that the first byte of the db_key has a high bit of 1 in this case
    (not so in book) - this might be a problem for a char(8)  - not a UCHAR(8)
    the alignment variables shown in this example were added to see if 
alignment was the problem but did nothing

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

Reply via email to