summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <jani@ua141d10.elisa.omakaista.fi>2006-01-12 20:28:23 +0200
committerunknown <jani@ua141d10.elisa.omakaista.fi>2006-01-12 20:28:23 +0200
commita48380cd9a29a67cb161ffc0a9b7a037efe04297 (patch)
tree986db555a436ebf570733597877d21e2ffa95d36
parent26252fa28bfa0c2dcf7d7b47cba51f47b30b2eb7 (diff)
parent1665d2370716a44acf7d35339019ad5b9e134b99 (diff)
downloadmariadb-git-a48380cd9a29a67cb161ffc0a9b7a037efe04297.tar.gz
Merge ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-4.1
into ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.0 client/mysqlimport.c: Auto merged include/config-netware.h: Auto merged innobase/os/os0thread.c: Auto merged netware/mysqld_safe.c: Auto merged sql/item_cmpfunc.cc: Auto merged sql/mysqld.cc: Merged from 4.1. sql/sql_base.cc: Merged from 4.1. sql/sql_handler.cc: Merged from 4.1. sql/sql_select.cc: Merged from 4.1.
-rw-r--r--include/config-netware.h3
-rw-r--r--innobase/os/os0thread.c9
-rw-r--r--netware/mysqld_safe.c12
-rw-r--r--sql/mysqld.cc5
-rw-r--r--sql/sql_base.cc20
-rw-r--r--sql/sql_handler.cc8
-rw-r--r--sql/sql_select.cc7
7 files changed, 52 insertions, 12 deletions
diff --git a/include/config-netware.h b/include/config-netware.h
index f517e3c34d3..5a8b926a669 100644
--- a/include/config-netware.h
+++ b/include/config-netware.h
@@ -95,6 +95,9 @@ extern "C" {
/* On NetWare, stack grows towards lower address*/
#define STACK_DIRECTION -1
+/* On NetWare, we need to set stack size for threads, otherwise default 16K is used */
+#define NW_THD_STACKSIZE 65536
+
/* On NetWare, to fix the problem with the deletion of open files */
#define CANT_DELETE_OPEN_FILES 1
diff --git a/innobase/os/os0thread.c b/innobase/os/os0thread.c
index 847d0ee1cc7..1d1cb77b336 100644
--- a/innobase/os/os0thread.c
+++ b/innobase/os/os0thread.c
@@ -148,6 +148,15 @@ os_thread_create(
exit(1);
}
#endif
+#ifdef __NETWARE__
+ ret = pthread_attr_setstacksize(&attr,
+ (size_t) NW_THD_STACKSIZE);
+ if (ret) {
+ fprintf(stderr,
+ "InnoDB: Error: pthread_attr_setstacksize returned %d\n", ret);
+ exit(1);
+ }
+#endif
os_mutex_enter(os_sync_mutex);
os_thread_count++;
os_mutex_exit(os_sync_mutex);
diff --git a/netware/mysqld_safe.c b/netware/mysqld_safe.c
index 3a1672fdf61..9db8a441ca3 100644
--- a/netware/mysqld_safe.c
+++ b/netware/mysqld_safe.c
@@ -258,11 +258,11 @@ void finish_defaults()
void read_defaults(arg_list_t *pal)
{
arg_list_t al;
- char defaults_file[PATH_MAX];
+ char defaults_file[PATH_MAX];
char mydefaults[PATH_MAX];
char line[PATH_MAX];
FILE *fp;
-
+
// defaults output file
snprintf(defaults_file, PATH_MAX, "%s/bin/defaults.out", basedir);
remove(defaults_file);
@@ -270,7 +270,7 @@ void read_defaults(arg_list_t *pal)
// mysqladmin file
snprintf(mydefaults, PATH_MAX, "%s/bin/my_print_defaults", basedir);
- // args
+ // args
init_args(&al);
add_arg(&al, mydefaults);
if (default_option[0])
@@ -279,11 +279,11 @@ void read_defaults(arg_list_t *pal)
add_arg(&al, "server");
add_arg(&al, "mysqld_safe");
add_arg(&al, "safe_mysqld");
-
+
spawn(mydefaults, &al, TRUE, NULL, defaults_file, NULL);
-
+
free_args(&al);
-
+
// gather defaults
if ((fp= fopen(defaults_file, "r")) != NULL)
{
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 1f32a8285d1..80b22f726ae 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -3322,6 +3322,11 @@ int main(int argc, char **argv)
}
}
#endif
+#ifdef __NETWARE__
+ /* Increasing stacksize of threads on NetWare */
+
+ pthread_attr_setstacksize(&connection_attrib, NW_THD_STACKSIZE);
+#endif
(void) thr_setconcurrency(concurrency); // 10 by default
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index be3b64a5ef6..9d1720cc527 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -1388,10 +1388,20 @@ TABLE *find_locked_table(THD *thd, const char *db,const char *table_name)
/****************************************************************************
-** Reopen an table because the definition has changed. The date file for the
-** table is already closed.
-** Returns 0 if ok.
-** If table can't be reopened, the entry is unchanged.
+ Reopen an table because the definition has changed. The date file for the
+ table is already closed.
+
+ SYNOPSIS
+ reopen_table()
+ table Table to be opened
+ locked 1 if we have already a lock on LOCK_open
+
+ NOTES
+ table->query_id will be 0 if table was reopened
+
+ RETURN
+ 0 ok
+ 1 error ('table' is unchanged if table couldn't be reopened)
****************************************************************************/
bool reopen_table(TABLE *table,bool locked)
@@ -1464,8 +1474,10 @@ bool reopen_table(TABLE *table,bool locked)
(*field)->table_name= &table->alias;
}
for (key=0 ; key < table->s->keys ; key++)
+ {
for (part=0 ; part < table->key_info[key].usable_key_parts ; part++)
table->key_info[key].key_part[part].field->table= table;
+ }
if (table->triggers)
table->triggers->set_table(table);
diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc
index fae48c7d164..3370a0a1957 100644
--- a/sql/sql_handler.cc
+++ b/sql/sql_handler.cc
@@ -423,7 +423,13 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables,
if (cond && ((!cond->fixed &&
cond->fix_fields(thd, &cond)) || cond->check_cols(1)))
- goto err0;
+ {
+ if (table->query_id != thd->query_id)
+ cond->cleanup(); // File was reopened
+ if ((!cond->fixed &&
+ cond->fix_fields(thd, tables, &cond)) || cond->check_cols(1))
+ goto err0;
+ }
if (keyname)
{
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index e8f2cb2c6a0..8be8dd3e599 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -8614,6 +8614,11 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
have null
*/
hidden_null_count=null_count;
+ /*
+ We need to update hidden_field_count as we may have stored group
+ functions with constant arguments
+ */
+ param->hidden_field_count= (uint) (reg_field - table->field);
null_count= 0;
}
}
@@ -8833,7 +8838,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
}
}
- if (distinct)
+ if (distinct && field_count != param->hidden_field_count)
{
/*
Create an unique key or an unique constraint over all columns