summaryrefslogtreecommitdiff
path: root/sql/item_sum.cc
diff options
context:
space:
mode:
authorunknown <evgen@moonbone.local>2005-08-05 00:34:42 +0400
committerunknown <evgen@moonbone.local>2005-08-05 00:34:42 +0400
commit456fa30503c0f2427823ca74a7e3674c63116692 (patch)
treeea443ade0b265ff4d840c6bc185eb459f3a51c95 /sql/item_sum.cc
parent512ac1d3a0c7e8373a7b596695267bc046b16cba (diff)
parent8296c396f9b26b9a9477d56c2312095323b60b3c (diff)
downloadmariadb-git-456fa30503c0f2427823ca74a7e3674c63116692.tar.gz
Manual merge of #11335 bugfix
sql/item_sum.cc: Auto merged mysql-test/r/view.result: Manual merge mysql-test/t/view.test: Manual megre sql/sql_select.cc: Manual merge
Diffstat (limited to 'sql/item_sum.cc')
-rw-r--r--sql/item_sum.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/sql/item_sum.cc b/sql/item_sum.cc
index b669a8c426d..bbcea4705fa 100644
--- a/sql/item_sum.cc
+++ b/sql/item_sum.cc
@@ -321,6 +321,22 @@ Field *Item_sum_hybrid::create_tmp_field(bool group, TABLE *table,
field->flags&= ~NOT_NULL_FLAG;
return field;
}
+ /*
+ DATE/TIME fields have STRING_RESULT result types.
+ In order to preserve field type, it's needed to handle DATE/TIME
+ fields creations separately.
+ */
+ switch (args[0]->field_type()) {
+ case MYSQL_TYPE_DATE:
+ return new Field_date(maybe_null, name, table, collation.collation);
+ case MYSQL_TYPE_TIME:
+ return new Field_time(maybe_null, name, table, collation.collation);
+ case MYSQL_TYPE_TIMESTAMP:
+ case MYSQL_TYPE_DATETIME:
+ return new Field_datetime(maybe_null, name, table, collation.collation);
+ default:
+ break;
+ }
return Item_sum::create_tmp_field(group, table, convert_blob_length);
}