Loading Docs/manual.texi +7 −0 Original line number Diff line number Diff line Loading @@ -51770,6 +51770,8 @@ not yet 100% confident in this code. Allow one to start multiple MySQL servers on windows (code backported from 4.0.2). @item Fixed that @code{--core-file} works on Linux (at least on kernel 2.4.18). @item Fixed a problem with BDB and @code{ALTER TABLE}. @item Fixed reference to freed memory when doing complicated @code{GROUP BY Loading Loading @@ -51855,6 +51857,11 @@ Changed initialisation of @code{RND()} to make it less predicatable. Fixed problem with @code{GROUP BY} on result with expression that created a @code{BLOB} field. @item Fixed problem with @code{GROUP BY} on columns that have NULL values. To solve this we now create an MyISAM temporary table when doing a group by on a possible NULL item. In MySQL 4.0.5 we can again use in memory HEAP tables for this case. @item Fixed problem with privilege tables when downgrading from 4.0.2 to 3.23. @item Fixed thread bug in @code{SLAVE START}, @code{SLAVE STOP} and automatic repair mysql-test/t/merge.test +19 −0 Original line number Diff line number Diff line Loading @@ -185,3 +185,22 @@ CREATE TABLE t ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0 select max(b) from t where a = 2; select max(b) from t1 where a = 2; drop table if exists t,t1,t2; # # temporary merge tables # drop table if exists t1, t2, t3, t4, t5, t6; create table t1 (a int not null); create table t2 (a int not null); insert into t1 values (1); insert into t2 values (2); create temporary table t3 (a int not null) TYPE=MERGE UNION=(t1,t2); select * from t3; create temporary table t4 (a int not null); create temporary table t5 (a int not null); insert into t4 values (1); insert into t5 values (2); create temporary table t6 (a int not null) TYPE=MERGE UNION=(t4,t5); select * from t6; drop table if exists t1, t2, t3, t4, t5, t6; sql/ha_myisammrg.cc +22 −1 Original line number Diff line number Diff line Loading @@ -371,7 +371,28 @@ int ha_myisammrg::create(const char *name, register TABLE *form, sizeof(char*)))) DBUG_RETURN(1); for (pos=table_names ; tables ; tables=tables->next) *pos++= tables->real_name; { char *table_name; if (create_info->options & HA_LEX_CREATE_TMP_TABLE) { TABLE **tbl=find_temporary_table(current_thd, tables->db, tables->real_name); if (!tbl) { table_name=sql_alloc(1+ my_snprintf(buff,FN_REFLEN,"%s/%s/%s",mysql_real_data_home, tables->db, tables->real_name)); if (!table_name) DBUG_RETURN(1); strcpy(table_name, buff); } else table_name=(*tbl)->path; } else table_name=tables->real_name; *pos++= table_name; } *pos=0; DBUG_RETURN(myrg_create(fn_format(buff,name,"","",2+4+16), (const char **) table_names, Loading sql/mysqld.cc +4 −0 Original line number Diff line number Diff line Loading @@ -1404,7 +1404,11 @@ information that should help you find out what is causing the crash.\n"); #endif /* HAVE_STACKTRACE */ if (test_flags & TEST_CORE_ON_SIGNAL) { fprintf(stderr, "Writing a core file\n"); fflush(stderr); write_core(sig); } exit(1); } Loading sql/stacktrace.c +1 −1 Original line number Diff line number Diff line Loading @@ -206,7 +206,7 @@ resolve it\n"); /* Produce a core for the thread */ #ifdef HAVE_LINUXTHREADS #ifdef NOT_USED /* HAVE_LINUXTHREADS */ void write_core(int sig) { signal(sig, SIG_DFL); Loading Loading
Docs/manual.texi +7 −0 Original line number Diff line number Diff line Loading @@ -51770,6 +51770,8 @@ not yet 100% confident in this code. Allow one to start multiple MySQL servers on windows (code backported from 4.0.2). @item Fixed that @code{--core-file} works on Linux (at least on kernel 2.4.18). @item Fixed a problem with BDB and @code{ALTER TABLE}. @item Fixed reference to freed memory when doing complicated @code{GROUP BY Loading Loading @@ -51855,6 +51857,11 @@ Changed initialisation of @code{RND()} to make it less predicatable. Fixed problem with @code{GROUP BY} on result with expression that created a @code{BLOB} field. @item Fixed problem with @code{GROUP BY} on columns that have NULL values. To solve this we now create an MyISAM temporary table when doing a group by on a possible NULL item. In MySQL 4.0.5 we can again use in memory HEAP tables for this case. @item Fixed problem with privilege tables when downgrading from 4.0.2 to 3.23. @item Fixed thread bug in @code{SLAVE START}, @code{SLAVE STOP} and automatic repair
mysql-test/t/merge.test +19 −0 Original line number Diff line number Diff line Loading @@ -185,3 +185,22 @@ CREATE TABLE t ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0 select max(b) from t where a = 2; select max(b) from t1 where a = 2; drop table if exists t,t1,t2; # # temporary merge tables # drop table if exists t1, t2, t3, t4, t5, t6; create table t1 (a int not null); create table t2 (a int not null); insert into t1 values (1); insert into t2 values (2); create temporary table t3 (a int not null) TYPE=MERGE UNION=(t1,t2); select * from t3; create temporary table t4 (a int not null); create temporary table t5 (a int not null); insert into t4 values (1); insert into t5 values (2); create temporary table t6 (a int not null) TYPE=MERGE UNION=(t4,t5); select * from t6; drop table if exists t1, t2, t3, t4, t5, t6;
sql/ha_myisammrg.cc +22 −1 Original line number Diff line number Diff line Loading @@ -371,7 +371,28 @@ int ha_myisammrg::create(const char *name, register TABLE *form, sizeof(char*)))) DBUG_RETURN(1); for (pos=table_names ; tables ; tables=tables->next) *pos++= tables->real_name; { char *table_name; if (create_info->options & HA_LEX_CREATE_TMP_TABLE) { TABLE **tbl=find_temporary_table(current_thd, tables->db, tables->real_name); if (!tbl) { table_name=sql_alloc(1+ my_snprintf(buff,FN_REFLEN,"%s/%s/%s",mysql_real_data_home, tables->db, tables->real_name)); if (!table_name) DBUG_RETURN(1); strcpy(table_name, buff); } else table_name=(*tbl)->path; } else table_name=tables->real_name; *pos++= table_name; } *pos=0; DBUG_RETURN(myrg_create(fn_format(buff,name,"","",2+4+16), (const char **) table_names, Loading
sql/mysqld.cc +4 −0 Original line number Diff line number Diff line Loading @@ -1404,7 +1404,11 @@ information that should help you find out what is causing the crash.\n"); #endif /* HAVE_STACKTRACE */ if (test_flags & TEST_CORE_ON_SIGNAL) { fprintf(stderr, "Writing a core file\n"); fflush(stderr); write_core(sig); } exit(1); } Loading
sql/stacktrace.c +1 −1 Original line number Diff line number Diff line Loading @@ -206,7 +206,7 @@ resolve it\n"); /* Produce a core for the thread */ #ifdef HAVE_LINUXTHREADS #ifdef NOT_USED /* HAVE_LINUXTHREADS */ void write_core(int sig) { signal(sig, SIG_DFL); Loading