From d0dc9e7db36d3dc81aaecd761bed47bb63878108 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 30 Jun 2003 13:23:54 +0300 Subject: Remove FORCE_INIT_OF_VARS when compiling for valgrind/purify to spot wrong LINT_INIT() options Fixed bug in ALTER TABLE ... MODIFY integer-column Added ref_or_null optimization (needed for subqueries) BUILD/compile-pentium-valgrind-max: Remove FORCE_INIT_OF_VARS to spot wrong LINT_INIT() options mysql-test/r/distinct.result: Update of test results (new optimizer) mysql-test/r/null_key.result: Update after ref_or_null optimization mysql-test/r/subselect.result: Update after ref_or_null optimization mysql-test/t/null_key.test: New tests for ref_or_null optimization sql/sql_select.cc: Added ref_or_null optimization Optimized find_best_combinations() and read-functions sql/sql_select.h: Added ref_or_null optimization sql/sql_yacc.yy: Fixed bug in ALTER TABLE ... MODIFY integer-column sql/table.cc: Safety fix for ALTER TABLE .. MODIFY sql/unireg.cc: Safety fix for ALTER TABLE .. MODIFY --- sql/sql_select.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'sql/sql_select.h') diff --git a/sql/sql_select.h b/sql/sql_select.h index df21d337b54..f29729fb5b3 100644 --- a/sql/sql_select.h +++ b/sql/sql_select.h @@ -27,8 +27,10 @@ typedef struct keyuse_t { TABLE *table; Item *val; /* or value if no field */ - uint key,keypart; table_map used_tables; + uint key, keypart, optimize; + key_map keypart_map; + ha_rows ref_table_rows; } KEYUSE; class store_key; @@ -73,7 +75,7 @@ typedef struct st_join_cache { */ enum join_type { JT_UNKNOWN,JT_SYSTEM,JT_CONST,JT_EQ_REF,JT_REF,JT_MAYBE_REF, - JT_ALL, JT_RANGE, JT_NEXT, JT_FT}; + JT_ALL, JT_RANGE, JT_NEXT, JT_FT, JT_REF_OR_NULL}; class JOIN; @@ -85,6 +87,7 @@ typedef struct st_join_table { QUICK_SELECT *quick; Item *on_expr; const char *info; + byte *null_ref_key; int (*read_first_record)(struct st_join_table *tab); int (*next_select)(JOIN *,struct st_join_table *,bool); READ_RECORD read_record; -- cgit v1.2.1