Incorrect TEXT BLOB charset transliteration on VIEW update in UTF8 connection
-----------------------------------------------------------------------------

                 Key: CORE-3601
                 URL: http://tracker.firebirdsql.org/browse/CORE-3601
             Project: Firebird Core
          Issue Type: Bug
          Components: Charsets/Collation
    Affects Versions: 2.5.0
            Reporter: Radek Palmowski


On UTF8 connection:
isc_get_segment from V_T_TEST.MEMO_UTF8  V_T_TEST.MEMO_WIN1250 returns buffer 
as utf-8 string
but
isc_put_segment on V_T_TEST.MEMO_UTF8 with buffer as utf-8 is OK
isc_put_segment on V_T_TEST.MEMO_WIN1250 with buffer as utf-8 not transliterate 
character set and stores in table incorrect as utf-8 
isc_put_segment on V_T_TEST.MEMO_WIN1250 with buffer as win1250  report error 
malformed string

on table T_TEST isc_get_segment, isc_put_segment with buffer utf-8 works OK


CREATE TABLE T_TEST (
    ID            UID NOT NULL /* UID = BIGINT */,
    MEMO_UTF8     MEMO_UTF8 /* MEMO_UTF8 = BLOB SUB_TYPE 1 SEGMENT SIZE 100 */,
    MEMO_WIN1250  MEMO_WIN1250 /* MEMO_WIN1250 = BLOB SUB_TYPE 1 SEGMENT SIZE 
100 */,
    MEMO_OCTETS   MEMO_OCTETS /* MEMO_OCTETS = BLOB SUB_TYPE 1 SEGMENT SIZE 100 
*/
);

ALTER TABLE T_TEST ADD CONSTRAINT PK_T_TEST PRIMARY KEY (ID);

CREATE OR ALTER VIEW V_T_TEST(
    ID,
    MEMO_UTF8,
    MEMO_WIN1250,
    MEMO_OCTETS)
AS
SELECT
  T.ID,
  T.MEMO_UTF8,
  T.MEMO_WIN1250,
  T.MEMO_OCTETS
FROM T_TEST T
;

SET TERM ^ ;


/* Trigger: V_T_TEST_BD */
CREATE OR ALTER TRIGGER V_T_TEST_BD FOR V_T_TEST
ACTIVE BEFORE DELETE POSITION 0
AS
BEGIN
  DELETE FROM T_TEST
  WHERE ID = OLD.ID;
END
^


/* Trigger: V_T_TEST_BI */
CREATE OR ALTER TRIGGER V_T_TEST_BI FOR V_T_TEST
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  INSERT INTO T_TEST(
    ID,
    MEMO_UTF8,
    MEMO_WIN1250,
    MEMO_OCTETS)
  VALUES(
    NEW.ID,
    NEW.MEMO_UTF8,
    NEW.MEMO_WIN1250,
    NEW.MEMO_OCTETS);
END
^


/* Trigger: V_T_TEST_BU */
CREATE OR ALTER TRIGGER V_T_TEST_BU FOR V_T_TEST
ACTIVE BEFORE UPDATE POSITION 0
AS
BEGIN
  UPDATE T_TEST SET
    ID = NEW.ID,
    MEMO_UTF8 = NEW.MEMO_UTF8,
    MEMO_WIN1250 = NEW.MEMO_WIN1250,
    MEMO_OCTETS = NEW.MEMO_OCTETS
  WHERE ID = OLD.ID;
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

        

------------------------------------------------------------------------------
BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA
http://p.sf.net/sfu/rim-devcon-copy2
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to