Commit 274c3826 authored by brian@zim.(none)'s avatar brian@zim.(none)

Merge baker@bk-internal.mysql.com:/home/bk/mysql-4.1

into zim.(none):/home/brian/mysql/mysql-4.1
parents 6e2caeb0 4f19826d
...@@ -489,7 +489,7 @@ __bam_new_file(dbp, txn, fhp, name) ...@@ -489,7 +489,7 @@ __bam_new_file(dbp, txn, fhp, name)
goto err; goto err;
} else { } else {
#ifdef DIAGNOSTIC #ifdef DIAGNOSTIC
memset(buf, dbp->pgsize, 0); memset(buf, 0, dbp->pgsize);
#endif #endif
root = (PAGE *)buf; root = (PAGE *)buf;
} }
......
...@@ -409,7 +409,7 @@ __ham_new_file(dbp, txn, fhp, name) ...@@ -409,7 +409,7 @@ __ham_new_file(dbp, txn, fhp, name)
goto err; goto err;
} else { } else {
#ifdef DIAGNOSTIC #ifdef DIAGNOSTIC
memset(buf, dbp->pgsize, 0); memset(buf, 0, dbp->pgsize);
#endif #endif
page = (PAGE *)buf; page = (PAGE *)buf;
} }
......
...@@ -3073,9 +3073,14 @@ void tee_fprintf(FILE *file, const char *fmt, ...) ...@@ -3073,9 +3073,14 @@ void tee_fprintf(FILE *file, const char *fmt, ...)
#ifdef OS2 #ifdef OS2
fflush( file); fflush( file);
#endif #endif
va_end(args);
if (opt_outfile) if (opt_outfile)
{
va_start(args, fmt);
(void) vfprintf(OUTFILE, fmt, args); (void) vfprintf(OUTFILE, fmt, args);
va_end(args); va_end(args);
}
} }
......
...@@ -77,3 +77,10 @@ big5_bin 6109 ...@@ -77,3 +77,10 @@ big5_bin 6109
big5_bin 61 big5_bin 61
big5_bin 6120 big5_bin 6120
drop table t1; drop table t1;
SET NAMES big5;
CREATE TABLE t1 (a text) character set big5;
INSERT INTO t1 VALUES ('ùØ');
SELECT * FROM t1;
a
ùØ
DROP TABLE t1;
...@@ -16,3 +16,12 @@ SET collation_connection='big5_chinese_ci'; ...@@ -16,3 +16,12 @@ SET collation_connection='big5_chinese_ci';
-- source include/ctype_filesort.inc -- source include/ctype_filesort.inc
SET collation_connection='big5_bin'; SET collation_connection='big5_bin';
-- source include/ctype_filesort.inc -- source include/ctype_filesort.inc
#
# Bugs#9357: TEXT columns break string with special word in BIG5 charset.
#
SET NAMES big5;
CREATE TABLE t1 (a text) character set big5;
INSERT INTO t1 VALUES ('');
SELECT * FROM t1;
DROP TABLE t1;
...@@ -18,8 +18,8 @@ ...@@ -18,8 +18,8 @@
#include <string.h> #include <string.h>
Signal::Signal(){ Signal::Signal(){
memset(&header, sizeof(header), 0); memset(&header, 0, sizeof(header));
memset(theData, sizeof(theData), 0); memset(theData, 0, sizeof(theData));
} }
void void
......
...@@ -6271,6 +6271,43 @@ my_mb_wc_big5(CHARSET_INFO *cs __attribute__((unused)), ...@@ -6271,6 +6271,43 @@ my_mb_wc_big5(CHARSET_INFO *cs __attribute__((unused)),
return 2; return 2;
} }
/*
Returns a well formed length of a BIG5 string.
CP950 and HKSCS additional characters are also accepted.
*/
static
uint my_well_formed_len_big5(CHARSET_INFO *cs __attribute__((unused)),
const char *b, const char *e, uint pos)
{
const char *b0= b;
const char *emb= e - 1; /* Last possible end of an MB character */
while (pos && b < e)
{
/*
Cast to int8 for extra safety. "char" can be unsigned
by default on some platforms.
*/
if (((int8)b[0]) >= 0)
{
/* Single byte ascii character */
b++;
}
else if ((b < emb) && isbig5code((uchar)*b, (uchar)b[1]))
{
/* Double byte character */
b+= 2;
}
else
{
/* Wrong byte sequence */
break;
}
}
return b - b0;
}
static MY_COLLATION_HANDLER my_collation_big5_chinese_ci_handler = static MY_COLLATION_HANDLER my_collation_big5_chinese_ci_handler =
{ {
NULL, /* init */ NULL, /* init */
...@@ -6291,7 +6328,7 @@ static MY_CHARSET_HANDLER my_charset_big5_handler= ...@@ -6291,7 +6328,7 @@ static MY_CHARSET_HANDLER my_charset_big5_handler=
mbcharlen_big5, mbcharlen_big5,
my_numchars_mb, my_numchars_mb,
my_charpos_mb, my_charpos_mb,
my_well_formed_len_mb, my_well_formed_len_big5,
my_lengthsp_8bit, my_lengthsp_8bit,
my_numcells_8bit, my_numcells_8bit,
my_mb_wc_big5, /* mb_wc */ my_mb_wc_big5, /* mb_wc */
......
...@@ -11617,6 +11617,7 @@ static void test_bug7990() ...@@ -11617,6 +11617,7 @@ static void test_bug7990()
static void test_bug8378() static void test_bug8378()
{ {
#ifdef HAVE_CHARSET_gbk
MYSQL *lmysql; MYSQL *lmysql;
char out[9]; /* strlen(TEST_BUG8378)*2+1 */ char out[9]; /* strlen(TEST_BUG8378)*2+1 */
int len; int len;
...@@ -11651,6 +11652,7 @@ static void test_bug8378() ...@@ -11651,6 +11652,7 @@ static void test_bug8378()
DIE_UNLESS(memcmp(out, TEST_BUG8378_OUT, len) == 0); DIE_UNLESS(memcmp(out, TEST_BUG8378_OUT, len) == 0);
mysql_close(lmysql); mysql_close(lmysql);
#endif
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment