Function with text blob return encoding issue with FB30
Hi *!
database default charset WIN1250
CREATE DOMAIN XTXTBLOB AS BLOB SUB_TYPE 1 SEGMENT SIZE 80 CHARACTER SET WIN1250 COLLATE WIN1250; CREATE DOMAIN XVAR100N AS VARCHAR(100) CHARACTER SET WIN1250 NOT NULL COLLATE PXW_HUNDC; CREATE TABLE kv (KULCS XVAR100N, ERTEK XTXTBLOB);
CREATE OR ALTER FUNCTION kv_list RETURNS xtxtblob AS DECLARE VARIABLE valasz xtxtblob; BEGIN valasz = ( SELECT LIST(TRIM(x.ertek), '#') FROM (SELECT v.ertek FROM kv v ORDER BY v.kulcs) x); RETURN valasz; END
CREATE OR ALTER PROCEDURE kv_list2 RETURNS ( valasz xtxtblob) AS BEGIN valasz = ( SELECT LIST(TRIM(x.ertek), '#') FROM (SELECT v.ertek FROM kv v ORDER BY v.kulcs) x); SUSPEND; END
Using UTF8 connection INSERT INTO kv(kulcs, ertek) VALUES('1', 'Első sor'); INSERT INTO kv(kulcs, ertek) VALUES('2', 'Második sor'); SELECT LIST(TRIM(x.ertek), '#' ) FROM (SELECT v.ertek FROM kv v ORDER BY v.kulcs) x;--fine SELECT * FROM kv_list2;--fine SELECT kv_list() FROM rdb$database;--wrong: Els� sor#M�sodik sor
Wrong with FB30. FB40 and FB50 is fine.
It seems to be the same as https://github.com/FirebirdSQL/firebird/issues/7604 The fix was not ported to Firebird 3.x.