summaryrefslogtreecommitdiff
path: root/sql/sql_analyse.cc
diff options
context:
space:
mode:
authorunknown <monty@mashka.mysql.fi>2002-12-14 17:43:01 +0200
committerunknown <monty@mashka.mysql.fi>2002-12-14 17:43:01 +0200
commitf935c6a2861414dac42b77c80010881ca674b1f0 (patch)
treeec4419624a982054d0682faee38e3ea102cd16d9 /sql/sql_analyse.cc
parent4a81706558ca558abd22fbcaee2a41ecba66c2d7 (diff)
downloadmariadb-git-f935c6a2861414dac42b77c80010881ca674b1f0.tar.gz
Fixes for binary protocol (complement to last push)
Changed timestamp to return string in YYYY-MM-DD HH:MM:SS format. DATE_ADD() and related functions now returns correct DATE/DATETIME type depending on argument types. Now all tests passes, still some work left to remove warnings in log files from mysql-test-run mysql-test/r/cast.result: New result for time mysql-test/r/delayed.result: Timestamp update mysql-test/r/derived.result: Fix after bulk insert change mysql-test/r/explain.result: Fix after bulk insert change mysql-test/r/func_date_add.result: Timestamp change mysql-test/r/func_str.result: Timestamp change mysql-test/r/func_time.result: Timestamp change mysql-test/r/innodb.result: Timestamp change mysql-test/r/join_outer.result: Fix after bulk insert change mysql-test/r/key_primary.result: Fix after bulk insert change mysql-test/r/keywords.result: Timestamp change mysql-test/r/merge.result: Removed warning mysql-test/r/odbc.result: Fix after bulk insert change mysql-test/r/range.result: Fix after bulk insert change mysql-test/r/select.result: Fix after bulk insert change mysql-test/r/subselect.result: Fixed EXPLAIN output mysql-test/r/type_datetime.result: Timestamp update mysql-test/r/type_ranges.result: Timestamp update mysql-test/r/type_timestamp.result: Timestamp update mysql-test/r/union.result: EXPLAIN UPDATE mysql-test/t/func_str.test: Timestamp update mysql-test/t/func_time.test: New test for interval type result mysql-test/t/merge.test: Remove warnings of wrong drop table mysql-test/t/type_datetime.test: Timestamp change mysql-test/t/type_timestamp.test: Timestamp change sql/field.cc: Changed timestamp to return string in YYYY-MM-DD HH:MM:SS format sql/field.h: Changed timestamp to return string in YYYY-MM-DD HH:MM:SS format sql/item.cc: Binary protocol update sql/item.h: Binary protocol update sql/item_func.cc: Added comment sql/item_func.h: @variables are always returned to the client as strings sql/item_timefunc.cc: Changed INTERVAL to return correct type sql/item_timefunc.h: Changed INTERVAL to return correct type sql/mysqld.cc: Changed default pthread_attr_setstacksize to 129K sql/protocol.cc: More type checking sql/set_var.cc: Fixed that @convert works ok with new protocol sql/sql_analyse.cc: Fixed bug in analyze sql/sql_class.cc: Fixed bug from last push in LIMIT sql/sql_error.cc: More optimal types sql/sql_repl.cc: Binary protocol changes sql/sql_select.cc: Fixed bug in multi-table-update Changed EXPLAIN to return NULL instead of empty strings sql/sql_show.cc: Binary protocol
Diffstat (limited to 'sql/sql_analyse.cc')
-rw-r--r--sql/sql_analyse.cc50
1 files changed, 26 insertions, 24 deletions
diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc
index ecd9f635060..acd67ad66d7 100644
--- a/sql/sql_analyse.cc
+++ b/sql/sql_analyse.cc
@@ -310,30 +310,7 @@ void field_str::add()
was_maybe_zerofill = num_info.maybe_zerofill;
}
- if (room_in_tree)
- {
- if (res != &s)
- s.copy(*res);
- if (!tree_search(&tree, (void*) &s, tree.custom_arg)) // If not in tree
- {
- s.copy(); // slow, when SAFE_MALLOC is in use
- if (!tree_insert(&tree, (void*) &s, 0, tree.custom_arg))
- {
- room_in_tree = 0; // Remove tree, out of RAM ?
- delete_tree(&tree);
- }
- else
- {
- bzero((char*) &s, sizeof(s)); // Let tree handle free of this
- if ((treemem += length) > pc->max_treemem)
- {
- room_in_tree = 0; // Remove tree, too big tree
- delete_tree(&tree);
- }
- }
- }
- }
-
+ /* Update min and max arguments */
if (!found)
{
found = 1;
@@ -364,6 +341,31 @@ void field_str::add()
max_arg.copy(*res);
}
}
+
+ if (room_in_tree)
+ {
+ if (res != &s)
+ s.copy(*res);
+ if (!tree_search(&tree, (void*) &s, tree.custom_arg)) // If not in tree
+ {
+ s.copy(); // slow, when SAFE_MALLOC is in use
+ if (!tree_insert(&tree, (void*) &s, 0, tree.custom_arg))
+ {
+ room_in_tree = 0; // Remove tree, out of RAM ?
+ delete_tree(&tree);
+ }
+ else
+ {
+ bzero((char*) &s, sizeof(s)); // Let tree handle free of this
+ if ((treemem += length) > pc->max_treemem)
+ {
+ room_in_tree = 0; // Remove tree, too big tree
+ delete_tree(&tree);
+ }
+ }
+ }
+ }
+
if ((num_info.zerofill && (max_length != min_length)) ||
(was_zero_fill && (max_length != min_length)))
can_be_still_num = 0; // zerofilled numbers must be of same length