summaryrefslogtreecommitdiff
path: root/sql/sql_show.cc
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2004-02-16 10:31:05 +0200
committerunknown <monty@mysql.com>2004-02-16 10:31:05 +0200
commit0c259c54b062f065e375fa185556cdf7fd419c13 (patch)
treee792af64f95eba198633387e3b36f50f096c3001 /sql/sql_show.cc
parent70eef0cb05296b7c60c7dbc32811d306675e997a (diff)
parentd00fbce3083f11d071300447e11dab124debb2b7 (diff)
downloadmariadb-git-0c259c54b062f065e375fa185556cdf7fd419c13.tar.gz
Merge with public tree
client/mysqldump.c: Auto merged configure.in: Auto merged include/m_ctype.h: Auto merged include/m_string.h: Auto merged include/my_global.h: Auto merged mysql-test/r/ctype_utf8.result: Auto merged mysql-test/r/fulltext.result: Auto merged mysql-test/r/subselect.result: Auto merged mysql-test/t/fulltext.test: Auto merged mysql-test/t/grant.test: Auto merged mysql-test/t/subselect.test: Auto merged mysql-test/t/union.test: Auto merged sql/field.cc: Auto merged sql/field.h: Auto merged sql/item.cc: Auto merged sql/item_func.cc: Auto merged sql/item_strfunc.cc: Auto merged sql/mysql_priv.h: Auto merged sql/set_var.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_parse.cc: Auto merged sql/share/english/errmsg.txt: Auto merged sql/sql_select.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_string.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_yacc.yy: Auto merged strings/ctype-mb.c: Auto merged strings/ctype-simple.c: Auto merged mysql-test/r/warnings.result: Fix error numbers after merge sql/share/czech/errmsg.txt: Add missing ',' and fix typo sql/share/danish/errmsg.txt: Add missing ',' and fix typo sql/share/dutch/errmsg.txt: Add missing ',' and fix typo sql/share/estonian/errmsg.txt: Add missing ',' and fix typo sql/share/french/errmsg.txt: Add missing ',' and fix typo sql/share/german/errmsg.txt: Add missing ',' and fix typo sql/share/greek/errmsg.txt: Add missing ',' and fix typo sql/share/hungarian/errmsg.txt: Add missing ',' and fix typo sql/share/italian/errmsg.txt: Add missing ',' and fix typo sql/share/japanese/errmsg.txt: Add missing ',' and fix typo sql/share/korean/errmsg.txt: Add missing ',' and fix typo sql/share/norwegian-ny/errmsg.txt: Add missing ',' and fix typo sql/share/norwegian/errmsg.txt: Add missing ',' and fix typo sql/share/polish/errmsg.txt: Add missing ',' and fix typo sql/share/portuguese/errmsg.txt: Add missing ',' and fix typo sql/share/romanian/errmsg.txt: Add missing ',' and fix typo sql/share/russian/errmsg.txt: Add missing ',' and fix typo sql/share/slovak/errmsg.txt: Add missing ',' and fix typo sql/share/spanish/errmsg.txt: Add missing ',' and fix typo sql/share/swedish/errmsg.txt: Add missing ',' and fix typo sql/share/ukrainian/errmsg.txt: Add missing ',' and fix typo
Diffstat (limited to 'sql/sql_show.cc')
-rw-r--r--sql/sql_show.cc30
1 files changed, 18 insertions, 12 deletions
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index f076e2fe802..8ed44d618fb 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -692,11 +692,6 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
if (!wild || !wild[0] ||
!wild_case_compare(system_charset_info, field->field_name,wild))
{
-#ifdef NOT_USED
- if (thd->col_access & TABLE_ACLS ||
- ! check_grant_column(thd,table,field->field_name,
- (uint) strlen(field->field_name),1))
-#endif
{
byte *pos;
uint flags=field->flags;
@@ -711,6 +706,12 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
if (verbose)
protocol->store(field->has_charset() ? field->charset()->name : "NULL",
system_charset_info);
+ /*
+ Altough TIMESTAMP fields can't contain NULL as its value they
+ will accept NULL if you will try to insert such value and will
+ convert it to current TIMESTAMP. So YES here means that NULL
+ is allowed for assignment but can't be returned.
+ */
pos=(byte*) ((flags & NOT_NULL_FLAG) &&
field->type() != FIELD_TYPE_TIMESTAMP ?
"" : "YES");
@@ -720,7 +721,11 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
(field->flags & MULTIPLE_KEY_FLAG) ? "MUL":"");
protocol->store((char*) pos, system_charset_info);
- if (field->type() == FIELD_TYPE_TIMESTAMP ||
+ /*
+ We handle first TIMESTAMP column in special way because its
+ default value is ignored and current timestamp used instead.
+ */
+ if (table->timestamp_field == field ||
field->unireg_check == Field::NEXT_NUMBER)
null_default_value=1;
if (!null_default_value && !field->is_null())
@@ -995,9 +1000,8 @@ mysqld_show_keys(THD *thd, TABLE_LIST *table_list)
protocol->store_null();
/* Check if we have a key part that only uses part of the field */
- if (!key_part->field ||
- key_part->length !=
- table->field[key_part->fieldnr-1]->key_length())
+ if (!(key_info->flags & HA_FULLTEXT) && (!key_part->field ||
+ key_part->length != table->field[key_part->fieldnr-1]->key_length()))
protocol->store_tiny((longlong) key_part->length);
else
protocol->store_null();
@@ -1206,7 +1210,7 @@ static int
store_create_info(THD *thd, TABLE *table, String *packet)
{
List<Item> field_list;
- char tmp[MAX_FIELD_WIDTH], *for_str, buff[128], *end;
+ char tmp[MAX_FIELD_WIDTH], *for_str, buff[128], *end, *alias;
String type(tmp, sizeof(tmp),&my_charset_bin);
Field **ptr,*field;
uint primary_key;
@@ -1232,7 +1236,9 @@ store_create_info(THD *thd, TABLE *table, String *packet)
packet->append("CREATE TEMPORARY TABLE ", 23);
else
packet->append("CREATE TABLE ", 13);
- append_identifier(thd,packet, table->real_name, strlen(table->real_name));
+ alias= (lower_case_table_names == 2 ? table->table_name :
+ table->real_name);
+ append_identifier(thd, packet, alias, strlen(alias));
packet->append(" (\n", 3);
for (ptr=table->field ; (field= *ptr); ptr++)
@@ -1280,7 +1286,7 @@ store_create_info(THD *thd, TABLE *table, String *packet)
packet->append(" NOT NULL", 9);
has_default= (field->type() != FIELD_TYPE_BLOB &&
- field->type() != FIELD_TYPE_TIMESTAMP &&
+ table->timestamp_field != field &&
field->unireg_check != Field::NEXT_NUMBER);
if (has_default)