summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <gluh@mysql.com/eagle.(none)>2007-12-13 14:38:01 +0400
committerunknown <gluh@mysql.com/eagle.(none)>2007-12-13 14:38:01 +0400
commit618cb7a81890f090b96461506571c1d17bb3db88 (patch)
tree28b4bc0e502c720919f822159006bdd22dcd0b17 /sql
parent069ca6d0f7c7e73acf2bfd185027eba4c8589a9d (diff)
parentf5c8240c43ab448f9249e0f088d9954a5c8cdb7d (diff)
downloadmariadb-git-618cb7a81890f090b96461506571c1d17bb3db88.tar.gz
Merge mysql.com:/home/gluh/MySQL/Merge/4.1
into mysql.com:/home/gluh/MySQL/Merge/4.1-opt include/mysql_com.h: Auto merged myisam/mi_check.c: Auto merged
Diffstat (limited to 'sql')
-rw-r--r--sql/field.cc2
-rw-r--r--sql/field.h1
-rw-r--r--sql/item_geofunc.cc2
-rw-r--r--sql/mysqld.cc20
-rw-r--r--sql/protocol.cc5
-rw-r--r--sql/sql_table.cc8
6 files changed, 28 insertions, 10 deletions
diff --git a/sql/field.cc b/sql/field.cc
index 5b43b9b1955..ed6523e9299 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -6975,7 +6975,7 @@ uint32 Field_blob::max_length()
case 3:
return 16777215 * field_charset->mbmaxlen;
case 4:
- return (uint32) 4294967295U;
+ return max_field_size;
default:
DBUG_ASSERT(0); // we should never go here
return 0;
diff --git a/sql/field.h b/sql/field.h
index 20f1209a439..29be9ef38d4 100644
--- a/sql/field.h
+++ b/sql/field.h
@@ -26,6 +26,7 @@
#define NOT_FIXED_DEC 31
#define DATETIME_DEC 6
+const uint32 max_field_size= (uint32) 4294967295U;
class Send_field;
class Protocol;
diff --git a/sql/item_geofunc.cc b/sql/item_geofunc.cc
index 6cb8c790319..7900396e5d8 100644
--- a/sql/item_geofunc.cc
+++ b/sql/item_geofunc.cc
@@ -29,7 +29,7 @@ void Item_geometry_func::fix_length_and_dec()
{
collation.set(&my_charset_bin);
decimals=0;
- max_length=MAX_BLOB_WIDTH;
+ max_length= max_field_size;
maybe_null= 1;
}
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 51332053df6..62105e0093a 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -193,7 +193,7 @@ typedef fp_except fp_except_t;
this on freebsd
*/
-inline void reset_floating_point_exceptions()
+inline void set_proper_floating_point_mode()
{
/* Don't fall for overflow, underflow,divide-by-zero or loss of precision */
#if defined(__i386__)
@@ -204,8 +204,22 @@ inline void reset_floating_point_exceptions()
FP_X_IMP));
#endif
}
+#elif defined(__sgi)
+/* for IRIX to use set_fpc_csr() */
+#include <sys/fpu.h>
+
+inline void set_proper_floating_point_mode()
+{
+ /* Enable denormalized DOUBLE values support for IRIX */
+ {
+ union fpc_csr n;
+ n.fc_word = get_fpc_csr();
+ n.fc_struct.flush = 0;
+ set_fpc_csr(n.fc_word);
+ }
+}
#else
-#define reset_floating_point_exceptions()
+#define set_proper_floating_point_mode()
#endif /* __FreeBSD__ && HAVE_IEEEFP_H */
} /* cplusplus */
@@ -2876,7 +2890,7 @@ static int init_server_components()
query_cache_init();
query_cache_resize(query_cache_size);
randominit(&sql_rand,(ulong) start_time,(ulong) start_time/2);
- reset_floating_point_exceptions();
+ set_proper_floating_point_mode();
init_thr_lock();
#ifdef HAVE_REPLICATION
init_slave_list();
diff --git a/sql/protocol.cc b/sql/protocol.cc
index 7c7dfaf7bef..f7a34fde94a 100644
--- a/sql/protocol.cc
+++ b/sql/protocol.cc
@@ -56,7 +56,10 @@ void send_error(THD *thd, uint sql_errno, const char *err)
{
#ifndef EMBEDDED_LIBRARY
uint length;
- char buff[MYSQL_ERRMSG_SIZE+2], *pos;
+ /*
+ buff[]: sql_errno:2 + ('#':1 + SQLSTATE_LENGTH:5) + MYSQL_ERRMSG_SIZE:512
+ */
+ char buff[2+1+SQLSTATE_LENGTH+MYSQL_ERRMSG_SIZE], *pos;
#endif
const char *orig_err= err;
NET *net= &thd->net;
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 0316d6a3c10..a1df7e21b73 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -2429,12 +2429,12 @@ int mysql_create_like_table(THD* thd, TABLE_LIST* table,
strxmov(src_path, (*tmp_table)->path, reg_ext, NullS);
else
{
- strxmov(src_path, mysql_data_home, "/", src_db, "/", src_table,
- reg_ext, NullS);
+ char *tablename_pos= strxmov(src_path, mysql_data_home, "/", NullS);
+ strxmov(tablename_pos, src_db, "/", src_table, reg_ext, NullS);
+ if (lower_case_table_names)
+ my_casedn_str(files_charset_info, tablename_pos);
/* Resolve symlinks (for windows) */
fn_format(src_path, src_path, "", "", MYF(MY_UNPACK_FILENAME));
- if (lower_case_table_names)
- my_casedn_str(files_charset_info, src_path);
if (access(src_path, F_OK))
{
my_error(ER_BAD_TABLE_ERROR, MYF(0), src_table);