summaryrefslogtreecommitdiff
path: root/sql/item_timefunc.cc
diff options
context:
space:
mode:
authorunknown <bell@laptop.sanja.is.com.ua>2003-10-12 17:56:05 +0300
committerunknown <bell@laptop.sanja.is.com.ua>2003-10-12 17:56:05 +0300
commit1d17fd7d51f7100038eaa5fb4cb372c785a44010 (patch)
tree2d243d69c4c8bafa98d2f0bd9b6ed43fea552637 /sql/item_timefunc.cc
parentbc8f801bf0f239b85ee95ea5410915f0f5424fc1 (diff)
downloadmariadb-git-1d17fd7d51f7100038eaa5fb4cb372c785a44010.tar.gz
fixed printability of Items (all items except subselects)
(SCRUM) (WL#1274) sql/item.cc: fixed printability of Items sql/item.h: fixed printability of Items sql/item_cmpfunc.cc: fixed printability of Items sql/item_cmpfunc.h: fixed printability of Items sql/item_func.cc: fixed printability of Items sql/item_func.h: fixed printability of Items sql/item_geofunc.h: added DBUG_ASSERT to catch error in debuging timw sql/item_row.cc: fixed printability of Items sql/item_row.h: fixed printability of Items sql/item_strfunc.cc: fixed printability of Items sql/item_strfunc.h: fixed printability of Items sql/item_sum.cc: fixed printability of Items sql/item_sum.h: fixed printability of Items sql/item_timefunc.cc: fixed printability of Items sql/item_timefunc.h: layout fixed fixed printability of Items sql/item_uniq.h: fixed printability of Items sql/sql_yacc.yy: layout fixed correct convertion to String
Diffstat (limited to 'sql/item_timefunc.cc')
-rw-r--r--sql/item_timefunc.cc78
1 files changed, 75 insertions, 3 deletions
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc
index 31ce2ad9cdc..511e372e40a 100644
--- a/sql/item_timefunc.cc
+++ b/sql/item_timefunc.cc
@@ -1359,6 +1359,35 @@ longlong Item_date_add_interval::val_int()
((date*100L + ltime.hour)*100L+ ltime.minute)*100L + ltime.second;
}
+static const char *interval_names[]=
+{
+ "year", "month", "day", "hour", "minute",
+ "second", "microsecond", "year_month",
+ "day_hour", "day_minute", "day_second",
+ "hour_minute", "hour_second", "minute_second",
+ "day_microsecond", "hour_microsecond",
+ "minute_microsecond", "second_microsecond"
+};
+
+void Item_date_add_interval::print(String *str)
+{
+ str->append('(');
+ args[0]->print(str);
+ str->append(date_sub_interval?" - interval ":" + interval ");
+ args[1]->print(str);
+ str->append(interval_names[int_type]);
+ str->append(')');
+}
+
+void Item_extract::print(String *str)
+{
+ str->append("extract(");
+ str->append(interval_names[int_type]);
+ str->append(' ');
+ args[0]->print(str);
+ str->append(')');
+}
+
void Item_extract::fix_length_and_dec()
{
value.alloc(32); // alloc buffer
@@ -1467,10 +1496,31 @@ bool Item_extract::eq(const Item *item, bool binary_cmp) const
void Item_typecast::print(String *str)
{
- str->append("CAST(");
+ str->append("cast(");
args[0]->print(str);
- str->append(" AS ");
- str->append(func_name());
+ str->append(" as ");
+ str->append(cast_type());
+ str->append(')');
+}
+
+void Item_char_typecast::print(String *str)
+{
+ str->append("cast(");
+ args[0]->print(str);
+ str->append(" as char");
+ if (cast_length >= 0)
+ {
+ str->append('(');
+ char buff[10];
+ snprintf(buff, 10, "%d", cast_length);
+ str->append(buff);
+ str->append(')');
+ }
+ if (cast_cs)
+ {
+ str->append(" charset ");
+ str->append(cast_cs->name);
+ }
str->append(')');
}
@@ -1740,6 +1790,28 @@ null_date:
return 0;
}
+
+void Item_func_add_time::print(String *str)
+{
+ if (is_date)
+ {
+ DBUG_ASSERT(sign > 0);
+ str->append("timestamp(");
+ }
+ else
+ {
+ if (sign > 0)
+ str->append("addtime(");
+ else
+ str->append("subtime(");
+ }
+ args[0]->print(str);
+ str->append(',');
+ args[0]->print(str);
+ str->append(')');
+}
+
+
/*
TIMEDIFF(t,s) is a time function that calculates the
time value between a start and end time.