Commit 73392ebe authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi

Fix bug in CONCAT_WS()

Update of glibc patch from MySQL 4.0
parent f0928187
diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet ../glibc-2.2.5/linuxthreads/internals.h ./linuxthreads/internals.h diff -r -c --exclude=*.info* glibc-2.2.4/linuxthreads/internals.h glibc-2.2.4-new/linuxthreads/internals.h
--- ../glibc-2.2.5/linuxthreads/internals.h Thu Nov 29 00:44:16 2001 *** glibc-2.2.4/linuxthreads/internals.h Mon Jul 23 20:54:13 2001
+++ ./linuxthreads/internals.h Fri Feb 22 21:18:09 2002 --- glibc-2.2.4-new/linuxthreads/internals.h Tue Apr 16 15:08:03 2002
@@ -343,7 +343,7 @@ ***************
THREAD_SELF implementation is used, this must be a power of two and *** 339,345 ****
a multiple of PAGE_SIZE. */ THREAD_SELF implementation is used, this must be a power of two and
#ifndef STACK_SIZE a multiple of PAGE_SIZE. */
-#define STACK_SIZE (2 * 1024 * 1024) #ifndef STACK_SIZE
+#define STACK_SIZE (128 * 1024) ! #define STACK_SIZE (2 * 1024 * 1024)
#endif #endif
/* The initial size of the thread stack. Must be a multiple of PAGE_SIZE. */ /* The initial size of the thread stack. Must be a multiple of PAGE_SIZE. */
diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet ../glibc-2.2.5/linuxthreads/sysdeps/unix/sysv/linux/bits/local_lim.h ./linuxthreads/sysdeps/unix/sysv/linux/bits/local_lim.h --- 339,345 ----
--- ../glibc-2.2.5/linuxthreads/sysdeps/unix/sysv/linux/bits/local_lim.h Thu Jun 8 13:49:49 2000 THREAD_SELF implementation is used, this must be a power of two and
+++ ./linuxthreads/sysdeps/unix/sysv/linux/bits/local_lim.h Fri Feb 22 21:18:09 2002 a multiple of PAGE_SIZE. */
@@ -64,7 +64,7 @@ #ifndef STACK_SIZE
/* The number of threads per process. */ ! #define STACK_SIZE (128 * 1024)
#define _POSIX_THREAD_THREADS_MAX 64 #endif
/* This is the value this implementation supports. */
-#define PTHREAD_THREADS_MAX 1024 /* The initial size of the thread stack. Must be a multiple of PAGE_SIZE. */
+#define PTHREAD_THREADS_MAX 4096 diff -r -c --exclude=*.info* glibc-2.2.4/linuxthreads/sysdeps/unix/sysv/linux/bits/local_lim.h glibc-2.2.4-new/linuxthreads/sysdeps/unix/sysv/linux/bits/local_lim.h
*** glibc-2.2.4/linuxthreads/sysdeps/unix/sysv/linux/bits/local_lim.h Fri Jun 9 22:17:35 2000
/* Maximum amount by which a process can descrease its asynchronous I/O --- glibc-2.2.4-new/linuxthreads/sysdeps/unix/sysv/linux/bits/local_lim.h Tue Apr 16 15:10:38 2002
priority level. */ ***************
diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet ../glibc-2.2.5/nss/nsswitch.c ./nss/nsswitch.c *** 64,70 ****
--- ../glibc-2.2.5/nss/nsswitch.c Tue Jul 17 02:21:36 2001 /* The number of threads per process. */
+++ ./nss/nsswitch.c Fri Feb 22 21:18:09 2002 #define _POSIX_THREAD_THREADS_MAX 64
@@ -515,8 +515,16 @@ /* This is the value this implementation supports. */
+ (line - name + 1)); ! #define PTHREAD_THREADS_MAX 1024
if (new_service == NULL)
return result; /* Maximum amount by which a process can descrease its asynchronous I/O
- priority level. */
+#ifdef DO_STATIC_NSS --- 64,70 ----
+ if (strncmp(name,"files",5) == 0 || /* The number of threads per process. */
+ strncmp(name,"dns",3) == 0) #define _POSIX_THREAD_THREADS_MAX 64
+#endif /* This is the value this implementation supports. */
*((char *) __mempcpy (new_service->name, name, line - name)) = '\0'; ! #define PTHREAD_THREADS_MAX 4096
+#ifdef DO_STATIC_NSS
+ else /* Maximum amount by which a process can descrease its asynchronous I/O
+ *((char *) __mempcpy (new_service->name, "files", 5)) = '\0'; priority level. */
+#endif diff -r -c --exclude=*.info* glibc-2.2.4/nss/nsswitch.c glibc-2.2.4-new/nss/nsswitch.c
+ *** glibc-2.2.4/nss/nsswitch.c Mon Jul 23 20:54:48 2001
--- glibc-2.2.4-new/nss/nsswitch.c Fri May 3 04:17:44 2002
/* Set default actions. */ ***************
new_service->actions[2 + NSS_STATUS_TRYAGAIN] = NSS_ACTION_CONTINUE; *** 496,501 ****
diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet ../glibc-2.2.5/time/Makefile ./time/Makefile --- 496,502 ----
--- ../glibc-2.2.5/time/Makefile Fri Feb 22 21:27:19 2002 {
+++ ./time/Makefile Fri Feb 22 21:26:47 2002 service_user *new_service;
@@ -37,8 +37,8 @@ const char *name;
+ int name_alloc_len;
include ../Rules
while (isspace (line[0]))
-tz-cflags = -DTZDIR='"$(zonedir)"' \ ++line;
- -DTZDEFAULT='"$(localtime-file)"' \ ***************
+tz-cflags = -DTZDIR='"/usr/share/zoneinfo/"' \ *** 510,522 ****
+ -DTZDEFAULT='"/etc/localtime"' \ if (name == line)
-DTZDEFRULES='"$(posixrules-file)"' return result;
CFLAGS-tzfile.c = $(tz-cflags)
diff -Nur --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet ../glibc-2.2.5/timezone/Makefile ./timezone/Makefile new_service = (service_user *) malloc (sizeof (service_user)
--- ../glibc-2.2.5/timezone/Makefile Wed Aug 29 16:45:25 2001 ! + (line - name + 1));
+++ ./timezone/Makefile Fri Feb 22 21:18:09 2002 if (new_service == NULL)
@@ -159,8 +159,8 @@ return result;
$(objpfx)zic: $(objpfx)scheck.o $(objpfx)ialloc.o ! *((char *) __mempcpy (new_service->name, name, line - name)) = '\0';
-tz-cflags = -DTZDIR='"$(zonedir)"' \ /* Set default actions. */
- -DTZDEFAULT='"$(localtime-file)"' \ new_service->actions[2 + NSS_STATUS_TRYAGAIN] = NSS_ACTION_CONTINUE;
+tz-cflags = -DTZDIR='"/usr/share/zoneinfo/"' \ --- 511,533 ----
+ -DTZDEFAULT='"/etc/localtime"' \ if (name == line)
-DTZDEFRULES='"$(posixrules-file)"' \ return result;
-DTM_GMTOFF=tm_gmtoff -DTM_ZONE=tm_zone
+ name_alloc_len = line - name + 1;
+
+ #ifdef DO_STATIC_NSS
+ if (!((name_alloc_len == 6 && strncmp(name,"files",5) == 0) ||
+ (name_alloc_len == 4 && strncmp(name,"dns",3) == 0)))
+ {
+ name = (char*) "files";
+ name_alloc_len=6;
+ }
+ #endif
new_service = (service_user *) malloc (sizeof (service_user)
! + name_alloc_len);
if (new_service == NULL)
return result;
! *((char *) __mempcpy (new_service->name, name, name_alloc_len)) = '\0';
/* Set default actions. */
new_service->actions[2 + NSS_STATUS_TRYAGAIN] = NSS_ACTION_CONTINUE;
diff -r -c --exclude=*.info* glibc-2.2.4/time/Makefile glibc-2.2.4-new/time/Makefile
*** glibc-2.2.4/time/Makefile Fri Aug 10 22:12:07 2001
--- glibc-2.2.4-new/time/Makefile Tue Apr 16 15:11:09 2002
***************
*** 37,44 ****
include ../Rules
! tz-cflags = -DTZDIR='"$(zonedir)"' \
! -DTZDEFAULT='"$(localtime-file)"' \
-DTZDEFRULES='"$(posixrules-file)"'
CFLAGS-tzfile.c = $(tz-cflags)
--- 37,44 ----
include ../Rules
! tz-cflags = -DTZDIR='"/usr/share/zoneinfo/"' \
! -DTZDEFAULT='"/etc/localtime"' \
-DTZDEFRULES='"$(posixrules-file)"'
CFLAGS-tzfile.c = $(tz-cflags)
diff -r -c --exclude=*.info* glibc-2.2.4/timezone/Makefile glibc-2.2.4-new/timezone/Makefile
*** glibc-2.2.4/timezone/Makefile Mon Jul 23 20:58:05 2001
--- glibc-2.2.4-new/timezone/Makefile Tue Apr 16 15:11:09 2002
***************
*** 159,166 ****
$(objpfx)zic: $(objpfx)scheck.o $(objpfx)ialloc.o
! tz-cflags = -DTZDIR='"$(zonedir)"' \
! -DTZDEFAULT='"$(localtime-file)"' \
-DTZDEFRULES='"$(posixrules-file)"' \
-DTM_GMTOFF=tm_gmtoff -DTM_ZONE=tm_zone
--- 159,166 ----
$(objpfx)zic: $(objpfx)scheck.o $(objpfx)ialloc.o
! tz-cflags = -DTZDIR='"/usr/share/zoneinfo/"' \
! -DTZDEFAULT='"/etc/localtime"' \
-DTZDEFRULES='"$(posixrules-file)"' \
-DTM_GMTOFF=tm_gmtoff -DTM_ZONE=tm_zone
...@@ -46916,6 +46916,8 @@ not yet 100% confident in this code. ...@@ -46916,6 +46916,8 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.51 @appendixsubsec Changes in release 3.23.51
@itemize @bullet @itemize @bullet
@item @item
Fixed bug in @code{CONCAT_WS()} that cut the result.
@item
Changed name of variables @code{Com_show_master_stat} to Changed name of variables @code{Com_show_master_stat} to
@code{Com_show_master_status} and @code{Com_show_slave_stat} to @code{Com_show_master_status} and @code{Com_show_slave_stat} to
@code{Com_show_slave_status}. @code{Com_show_slave_status}.
number alpha new
1413006 idlfmv 1413006<---->idlfmv
1413065 smpsfz 1413065<---->smpsfz
1413127 sljrhx 1413127<---->sljrhx
1413304 qerfnd 1413304<---->qerfnd
new
1413006<---->idlfmv
number alpha new
1413006 idlfmv 1413006<->idlfmv
number alpha new
1413006 idlfmv 1413006-idlfmv-idlfmv-idlfmv-idlfmv-idlfmv-idlfmv-idlfmv
number alpha new
1413006 idlfmv 1413006<------------------>idlfmv
#
# Test of problem with CONCAT_WS() and long separators.
#
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 ( number INT NOT NULL, alpha CHAR(6) NOT NULL );
INSERT INTO t1 VALUES (1413006,'idlfmv'),
(1413065,'smpsfz'),(1413127,'sljrhx'),(1413304,'qerfnd');
SELECT number, alpha, CONCAT_WS('<---->',number,alpha) AS new
FROM t1 GROUP BY number;
SELECT CONCAT_WS('<---->',number,alpha) AS new
FROM t1 GROUP BY new LIMIT 1;
SELECT number, alpha, CONCAT_WS('<->',number,alpha) AS new
FROM t1 GROUP BY new LIMIT 1;
SELECT number, alpha, CONCAT_WS('-',number,alpha,alpha,alpha,alpha,alpha,alpha,alpha) AS new
FROM t1 GROUP BY new LIMIT 1;
SELECT number, alpha, CONCAT_WS('<------------------>',number,alpha) AS new
FROM t1 GROUP BY new LIMIT 1;
drop table t1;
...@@ -313,7 +313,7 @@ null: ...@@ -313,7 +313,7 @@ null:
void Item_func_concat_ws::fix_length_and_dec() void Item_func_concat_ws::fix_length_and_dec()
{ {
max_length=0; max_length=separator->max_length*(arg_count-1);
for (uint i=0 ; i < arg_count ; i++) for (uint i=0 ; i < arg_count ; i++)
max_length+=args[i]->max_length; max_length+=args[i]->max_length;
if (max_length > MAX_BLOB_WIDTH) if (max_length > MAX_BLOB_WIDTH)
......
...@@ -209,13 +209,13 @@ ...@@ -209,13 +209,13 @@
"E' scaduto il timeout per l'attesa del lock", "E' scaduto il timeout per l'attesa del lock",
"Il numero totale di lock e' maggiore della grandezza della tabella di lock", "Il numero totale di lock e' maggiore della grandezza della tabella di lock",
"I lock di aggiornamento non possono essere acquisiti durante una transazione 'READ UNCOMMITTED'", "I lock di aggiornamento non possono essere acquisiti durante una transazione 'READ UNCOMMITTED'",
"DROP DATABASE not allowed while thread is holding global read lock", "DROP DATABASE non e' permesso mentre il thread ha un lock globale di lettura",
"CREATE DATABASE not allowed while thread is holding global read lock", "CREATE DATABASE non e' permesso mentre il thread ha un lock globale di lettura",
"Wrong arguments to %s", "Argomenti errati a %s",
"%-.32s@%-.64s is not allowed to create new users", "A %-.32s@%-.64s non e' permesso creare nuovi utenti",
"Incorrect table definition; All MERGE tables must be in the same database", "Definizione della tabella errata; tutte le tabelle di tipo MERGE devono essere nello stesso database",
"Deadlock found when trying to get lock; Try restarting transaction", "Trovato deadlock durante il lock; Provare a far ripartire la transazione",
"The used table type doesn't support FULLTEXT indexes", "La tabella usata non supporta gli indici FULLTEXT",
"Cannot add foreign key constraint", "Impossibile aggiungere il vincolo di integrita' referenziale (foreign key constraint)",
"Cannot add a child row: a foreign key constraint fails", "Impossibile aggiungere la riga: un vincolo d'integrita' referenziale non e' soddisfatto",
"Cannot delete a parent row: a foreign key constraint fails", "Impossibile cancellare la riga: un vincolo d'integrita' referenziale non e' soddisfatto",
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