summaryrefslogtreecommitdiff
path: root/sql/protocol.cc
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2005-02-10 18:01:06 +0200
committerunknown <bell@sanja.is.com.ua>2005-02-10 18:01:06 +0200
commit72eb17f18d7e8094152aa2c3757f6d5ab24f9f76 (patch)
tree828e47008d5e9d854ff445efdc1768f3619981f4 /sql/protocol.cc
parentc02f4c5b6c1ee39b62a2074db476cde0632d5f62 (diff)
parent7684e10018503eba3bf281d587993761fae6e5fb (diff)
downloadmariadb-git-72eb17f18d7e8094152aa2c3757f6d5ab24f9f76.tar.gz
merge
include/mysql_com.h: Auto merged mysql-test/r/view.result: Auto merged mysql-test/t/view.test: Auto merged sql/item.cc: Auto merged sql/protocol.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_select.cc: Auto merged
Diffstat (limited to 'sql/protocol.cc')
-rw-r--r--sql/protocol.cc40
1 files changed, 40 insertions, 0 deletions
diff --git a/sql/protocol.cc b/sql/protocol.cc
index c61a3eb9f7c..cfd7a955951 100644
--- a/sql/protocol.cc
+++ b/sql/protocol.cc
@@ -753,6 +753,7 @@ bool Protocol_simple::store(const char *from, uint length,
DBUG_ASSERT(field_types == 0 ||
field_types[field_pos] == MYSQL_TYPE_DECIMAL ||
field_types[field_pos] == MYSQL_TYPE_BIT ||
+ field_types[field_pos] == MYSQL_TYPE_NEWDECIMAL ||
(field_types[field_pos] >= MYSQL_TYPE_ENUM &&
field_types[field_pos] <= MYSQL_TYPE_GEOMETRY));
field_pos++;
@@ -769,6 +770,7 @@ bool Protocol_simple::store(const char *from, uint length,
DBUG_ASSERT(field_types == 0 ||
field_types[field_pos] == MYSQL_TYPE_DECIMAL ||
field_types[field_pos] == MYSQL_TYPE_BIT ||
+ field_types[field_pos] == MYSQL_TYPE_NEWDECIMAL ||
(field_types[field_pos] >= MYSQL_TYPE_ENUM &&
field_types[field_pos] <= MYSQL_TYPE_GEOMETRY));
field_pos++;
@@ -831,6 +833,26 @@ bool Protocol_simple::store_longlong(longlong from, bool unsigned_flag)
}
+bool Protocol_simple::store_decimal(const my_decimal *d)
+{
+#ifndef DEBUG_OFF
+ DBUG_ASSERT(field_types == 0 ||
+ field_types[field_pos] == MYSQL_TYPE_NEWDECIMAL);
+ field_pos++;
+#endif
+ int buf_size= my_decimal_string_length(d);
+ char *buff= (char *)my_alloca(buf_size);
+ String str(buff, buf_size, &my_charset_bin);
+ if (my_decimal2string(E_DEC_FATAL_ERROR, d, 0, 0, 0, &str))
+ {
+ my_afree(buff);
+ return TRUE;
+ }
+ my_afree(buff);
+ return net_store_data(str.ptr(), str.length());
+}
+
+
bool Protocol_simple::store(float from, uint32 decimals, String *buffer)
{
#ifndef DEBUG_OFF
@@ -1045,6 +1067,24 @@ bool Protocol_prep::store_longlong(longlong from, bool unsigned_flag)
return 0;
}
+bool Protocol_prep::store_decimal(const my_decimal *d)
+{
+#ifndef DEBUG_OFF
+ DBUG_ASSERT(field_types == 0 ||
+ field_types[field_pos] == MYSQL_TYPE_NEWDECIMAL);
+ field_pos++;
+#endif
+ int buf_size= my_decimal_string_length(d);
+ char *buff= (char *)my_alloca(buf_size);
+ String str(buff, buf_size, &my_charset_bin);
+ if (my_decimal2string(E_DEC_FATAL_ERROR, d, 0, 0, 0, &str))
+ {
+ my_afree(buff);
+ return TRUE;
+ }
+ my_afree(buff);
+ return store(str.ptr(), str.length(), str.charset());
+}
bool Protocol_prep::store(float from, uint32 decimals, String *buffer)
{