diff options
author | unknown <bell@sanja.is.com.ua> | 2004-09-25 15:07:50 +0300 |
---|---|---|
committer | unknown <bell@sanja.is.com.ua> | 2004-09-25 15:07:50 +0300 |
commit | 4038218b18ba6fb6d73072d97271347cdec45b7c (patch) | |
tree | 6bd4bba629b8b0435aa6a79d0bd511568abfef60 /sql/field.cc | |
parent | 580f12cc048cac99e5594ce94ab0b2ca63cad41a (diff) | |
download | mariadb-git-4038218b18ba6fb6d73072d97271347cdec45b7c.tar.gz |
postreview fixes (BUG#5618 & BUG#5590)
sql/field.cc:
fixed compatibility fields type detection
sql/item.cc:
fixed compatibility fields detection with using standard method for all fields, also some bugs are fixed
sql/sql_derived.cc:
some cleanup
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 63 |
1 files changed, 41 insertions, 22 deletions
diff --git a/sql/field.cc b/sql/field.cc index 8a1c5ec5271..dbdd44633f0 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -172,42 +172,51 @@ static bool test_if_real(const char *str,int length, CHARSET_INFO *cs) FIELD_CAST_STOP */ static Field::field_cast_enum field_cast_decimal[]= -{Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, +{Field::FIELD_CAST_DECIMAL, + Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_tiny[]= -{Field::FIELD_CAST_SHORT, Field::FIELD_CAST_MEDIUM, Field::FIELD_CAST_LONG, +{Field::FIELD_CAST_TINY, + Field::FIELD_CAST_SHORT, Field::FIELD_CAST_MEDIUM, Field::FIELD_CAST_LONG, Field::FIELD_CAST_LONGLONG, Field::FIELD_CAST_FLOAT, Field::FIELD_CAST_DOUBLE, Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_short[]= -{Field::FIELD_CAST_MEDIUM, Field::FIELD_CAST_LONG, Field::FIELD_CAST_LONGLONG, +{Field::FIELD_CAST_SHORT, + Field::FIELD_CAST_MEDIUM, Field::FIELD_CAST_LONG, Field::FIELD_CAST_LONGLONG, Field::FIELD_CAST_FLOAT, Field::FIELD_CAST_DOUBLE, Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_medium[]= -{Field::FIELD_CAST_LONG, Field::FIELD_CAST_LONGLONG, +{Field::FIELD_CAST_MEDIUM, + Field::FIELD_CAST_LONG, Field::FIELD_CAST_LONGLONG, Field::FIELD_CAST_DOUBLE, Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_long[]= -{Field::FIELD_CAST_LONGLONG, +{Field::FIELD_CAST_LONG, + Field::FIELD_CAST_LONGLONG, Field::FIELD_CAST_DOUBLE, Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_longlong[]= -{Field::FIELD_CAST_DOUBLE, +{Field::FIELD_CAST_LONGLONG, + Field::FIELD_CAST_DOUBLE, Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_float[]= -{Field::FIELD_CAST_DOUBLE, +{Field::FIELD_CAST_FLOAT, + Field::FIELD_CAST_DOUBLE, Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_double[]= -{Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, +{Field::FIELD_CAST_DOUBLE, + Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_null[]= -{Field::FIELD_CAST_DECIMAL, Field::FIELD_CAST_TINY, Field::FIELD_CAST_SHORT, +{Field::FIELD_CAST_NULL, + Field::FIELD_CAST_DECIMAL, Field::FIELD_CAST_TINY, Field::FIELD_CAST_SHORT, Field::FIELD_CAST_MEDIUM, Field::FIELD_CAST_LONG, Field::FIELD_CAST_LONGLONG, Field::FIELD_CAST_FLOAT, Field::FIELD_CAST_DOUBLE, Field::FIELD_CAST_TIMESTAMP, Field::FIELD_CAST_YEAR, @@ -218,44 +227,54 @@ static Field::field_cast_enum field_cast_null[]= Field::FIELD_CAST_GEOM, Field::FIELD_CAST_ENUM, Field::FIELD_CAST_SET, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_timestamp[]= -{Field::FIELD_CAST_DATETIME, +{Field::FIELD_CAST_TIMESTAMP, + Field::FIELD_CAST_DATETIME, Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_year[]= -{Field::FIELD_CAST_SHORT, Field::FIELD_CAST_MEDIUM, Field::FIELD_CAST_LONG, +{Field::FIELD_CAST_YEAR, + Field::FIELD_CAST_SHORT, Field::FIELD_CAST_MEDIUM, Field::FIELD_CAST_LONG, Field::FIELD_CAST_LONGLONG, Field::FIELD_CAST_FLOAT, Field::FIELD_CAST_DOUBLE, Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_date[]= -{Field::FIELD_CAST_DATETIME, +{Field::FIELD_CAST_DATE, + Field::FIELD_CAST_DATETIME, Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_newdate[]= -{Field::FIELD_CAST_DATETIME, +{Field::FIELD_CAST_NEWDATE, + Field::FIELD_CAST_DATETIME, Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_time[]= -{Field::FIELD_CAST_DATETIME, +{Field::FIELD_CAST_TIME, + Field::FIELD_CAST_DATETIME, Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_datetime[]= -{Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, +{Field::FIELD_CAST_DATETIME, + Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_string[]= -{Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; +{Field::FIELD_CAST_STRING, + Field::FIELD_CAST_VARSTRING, Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_varstring[]= -{Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; +{Field::FIELD_CAST_VARSTRING, + Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_blob[]= -{Field::FIELD_CAST_STOP}; +{Field::FIELD_CAST_BLOB, + Field::FIELD_CAST_STOP}; +/* + Geometrical, enum and set fields can be casted only to expressions +*/ static Field::field_cast_enum field_cast_geom[]= {Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_enum[]= -{Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, - Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; +{Field::FIELD_CAST_STOP}; static Field::field_cast_enum field_cast_set[]= -{Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING, - Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP}; +{Field::FIELD_CAST_STOP}; // Array of pointers on conversion table for all fields types casting static Field::field_cast_enum *field_cast_array[]= {0, //FIELD_CAST_STOP |