summaryrefslogtreecommitdiff
path: root/sql/field.h
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2004-06-17 13:48:31 +0300
committerunknown <bell@sanja.is.com.ua>2004-06-17 13:48:31 +0300
commit6edb8d5bc7e00f46ed7a59561faae90483e0a1fc (patch)
tree6665dfabfc97f1e2083a0a381e92e37441dee7b5 /sql/field.h
parentb01f938791c9edb65a6beb5db385cacecaed6a4e (diff)
downloadmariadb-git-6edb8d5bc7e00f46ed7a59561faae90483e0a1fc.tar.gz
after review fix (BUG#4067)
sql/field.cc: method getting maximum display length for fields sql/field.h: method getting maximum display length for fields sql/item.cc: code cleanup switch replaced with new method sql/item.h: method getting maximum display length for fields
Diffstat (limited to 'sql/field.h')
-rw-r--r--sql/field.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/sql/field.h b/sql/field.h
index 002a7228164..2b6ef28c184 100644
--- a/sql/field.h
+++ b/sql/field.h
@@ -267,6 +267,8 @@ public:
void set_warning(const unsigned int level, const unsigned int code);
virtual field_cast_enum field_cast_type()= 0;
bool field_cast_compatible(field_cast_enum type);
+ /* maximum possible display length */
+ virtual uint32 max_length()= 0;
friend bool reopen_table(THD *,struct st_table *,bool);
friend int cre_myisam(my_string name, register TABLE *form, uint options,
ulonglong auto_increment_value);
@@ -336,6 +338,7 @@ public:
CHARSET_INFO *charset(void) const { return field_charset; }
void set_charset(CHARSET_INFO *charset) { field_charset=charset; }
bool binary() const { return field_charset->state & MY_CS_BINSORT ? 1 : 0; }
+ uint32 max_length() { return field_length; }
friend class create_field;
};
@@ -366,6 +369,7 @@ public:
void overflow(bool negative);
bool zero_pack() const { return 0; }
void sql_type(String &str) const;
+ uint32 max_length() { return field_length; }
field_cast_enum field_cast_type() { return FIELD_CAST_DECIMAL; }
};
@@ -397,6 +401,7 @@ public:
void sort_string(char *buff,uint length);
uint32 pack_length() const { return 1; }
void sql_type(String &str) const;
+ uint32 max_length() { return 4; }
field_cast_enum field_cast_type() { return FIELD_CAST_TINY; }
};
@@ -433,6 +438,7 @@ public:
void sort_string(char *buff,uint length);
uint32 pack_length() const { return 2; }
void sql_type(String &str) const;
+ uint32 max_length() { return 6; }
field_cast_enum field_cast_type() { return FIELD_CAST_SHORT; }
};
@@ -464,6 +470,7 @@ public:
void sort_string(char *buff,uint length);
uint32 pack_length() const { return 3; }
void sql_type(String &str) const;
+ uint32 max_length() { return 8; }
field_cast_enum field_cast_type() { return FIELD_CAST_MEDIUM; }
};
@@ -500,6 +507,7 @@ public:
void sort_string(char *buff,uint length);
uint32 pack_length() const { return 4; }
void sql_type(String &str) const;
+ uint32 max_length() { return 11; }
field_cast_enum field_cast_type() { return FIELD_CAST_LONG; }
};
@@ -539,6 +547,7 @@ public:
uint32 pack_length() const { return 8; }
void sql_type(String &str) const;
bool store_for_compare() { return 1; }
+ uint32 max_length() { return 20; }
field_cast_enum field_cast_type() { return FIELD_CAST_LONGLONG; }
};
#endif
@@ -573,6 +582,7 @@ public:
void sort_string(char *buff,uint length);
uint32 pack_length() const { return sizeof(float); }
void sql_type(String &str) const;
+ uint32 max_length() { return 24; }
field_cast_enum field_cast_type() { return FIELD_CAST_FLOAT; }
};
@@ -607,6 +617,7 @@ public:
void sort_string(char *buff,uint length);
uint32 pack_length() const { return sizeof(double); }
void sql_type(String &str) const;
+ uint32 max_length() { return 53; }
field_cast_enum field_cast_type() { return FIELD_CAST_DOUBLE; }
};
@@ -637,6 +648,7 @@ public:
uint32 pack_length() const { return 0; }
void sql_type(String &str) const;
uint size_of() const { return sizeof(*this); }
+ uint32 max_length() { return 4; }
field_cast_enum field_cast_type() { return FIELD_CAST_NULL; }
};
@@ -1034,6 +1046,7 @@ public:
bool has_charset(void) const
{ return charset() == &my_charset_bin ? FALSE : TRUE; }
field_cast_enum field_cast_type() { return FIELD_CAST_BLOB; }
+ uint32 max_length();
};
#ifdef HAVE_SPATIAL
@@ -1062,6 +1075,7 @@ public:
void get_key_image(char *buff,uint length, CHARSET_INFO *cs,imagetype type);
void set_key_image(char *buff,uint length, CHARSET_INFO *cs);
+ uint32 max_length() { return field_length; }
field_cast_enum field_cast_type() { return FIELD_CAST_GEOM; }
};
#endif /*HAVE_SPATIAL*/