Re: A mb problem in PostgreSQL

Started by Tatsuo Ishiiabout 25 years ago4 messages
#1Tatsuo Ishii
t-ishii@sra.co.jp

Chih-Chang,

Do you remember the mb problem about Big5?

Sure.

Now I have tested all Big5 chars (with ETen extension -- some chars in
CNS 11643-1992 Plane 3) by the program in the attachment on
PostgreSQL 7.0.3 with patches from you show me.
The execution result is also in the attachment.
The first two insertion fails are normal, because these two chars are
duplicated in Big5.
But the 3rd Big5 char (0xF9DC <- > CNS Plane3 0x4B5C) insertion
is failed. I have no idea about why it is a "Unterminated quoted
string".
Could you see where the problem is?

Thanks for the testing effort!

Please apply following one-line-patch and test it again. If it's ok, I
will commit it to both current and stable trees.
--
Tatsuo Ishii

*** postgresql-7.0.3/src/backend/utils/mb/big5.c~	Thu May 27 00:19:54 1999
--- postgresql-7.0.3/src/backend/utils/mb/big5.c	Thu Dec  7 13:39:01 2000
***************
*** 322,328 ****
  			if (b2c3[i][0] == big5)
  			{
  				*lc = LC_CNS11643_3;
! 				return (b2c3[i][1]);
  			}
  		}
--- 322,328 ----
  			if (b2c3[i][0] == big5)
  			{
  				*lc = LC_CNS11643_3;
! 				return (b2c3[i][1] | 0x8080U);
  			}
  		}
#2Chih-Chang Hsieh
cch@cc.kmu.edu.tw
In reply to: Tatsuo Ishii (#1)

Tatsuo,

Tatsuo Ishii 嚙篇嚙瘩嚙瘦

Please apply following one-line-patch and test it again. If it's ok, I
will commit it to both current and stable trees.

! return (b2c3[i][1] | 0x8080U);

Yes, it's OK. Thank you!
But I wonder why we need to "| 0x8080U"?
b2c3[][] and BIG5toCNS()'s return value are both unsigned short, aren't they?

--
Chih-Chang Hsieh

#3Tatsuo Ishii
t-ishii@sra.co.jp
In reply to: Chih-Chang Hsieh (#2)
Re: Re: A mb problem in PostgreSQL

Please apply following one-line-patch and test it again. If it's ok, I
will commit it to both current and stable trees.

! return (b2c3[i][1] | 0x8080U);

Yes, it's OK. Thank you!
But I wonder why we need to "| 0x8080U"?
b2c3[][] and BIG5toCNS()'s return value are both unsigned short, aren't they?

b2c3 has CNS 11643-1992 value. That is, we need to add 0x8080 to
convert to EUC_TW.
--
Tatsuo Ishii

#4Tatsuo Ishii
t-ishii@sra.co.jp
In reply to: Chih-Chang Hsieh (#2)
Re: Re: A mb problem in PostgreSQL

Please apply following one-line-patch and test it again. If it's ok, I
will commit it to both current and stable trees.

! return (b2c3[i][1] | 0x8080U);

Yes, it's OK. Thank you!

Thanks for the testings. I will commit soon.

But I wonder why we need to "| 0x8080U"?
b2c3[][] and BIG5toCNS()'s return value are both unsigned short, aren't they?

Since the function returns EUC_TW. In b2c3[] we have CNS 11643-1992
value, and we need to add 0x8080 to convert from CNS 11643-1992 to
EUC.
--
Tatsuo Ishii