mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Automatic conversion from CHAR(length) to BLOB when length > 255
New operators MOD and DIV SELECT ... FROM DUAL TRUE = 1 and FALSE = 0 include/mysqld_error.h: New warning message mysql-test/r/func_system.result: Added testing of new functions mysql-test/r/func_test.result: Added testing of new functions mysql-test/r/type_blob.result: Added testing of new functions mysql-test/t/func_system.test: Added testing of new functions mysql-test/t/func_test.test: Added testing of new functions mysql-test/t/type_blob.test: Added testing of new functions sql/item_func.cc: Added function DIV sql/item_func.h: Added function DIV sql/lex.h: New keywords sql/share/czech/errmsg.txt: New warning message sql/share/danish/errmsg.txt: New warning message sql/share/dutch/errmsg.txt: New warning message sql/share/english/errmsg.txt: New warning message sql/share/estonian/errmsg.txt: New warning message sql/share/french/errmsg.txt: New warning message sql/share/german/errmsg.txt: New warning message sql/share/greek/errmsg.txt: New warning message sql/share/hungarian/errmsg.txt: New warning message sql/share/italian/errmsg.txt: New warning message sql/share/japanese/errmsg.txt: New warning message sql/share/korean/errmsg.txt: New warning message sql/share/norwegian-ny/errmsg.txt: New warning message sql/share/norwegian/errmsg.txt: New warning message sql/share/polish/errmsg.txt: New warning message sql/share/portuguese/errmsg.txt: New warning message sql/share/romanian/errmsg.txt: New warning message sql/share/russian/errmsg.txt: New warning message sql/share/serbian/errmsg.txt: New warning message sql/share/slovak/errmsg.txt: New warning message sql/share/spanish/errmsg.txt: New warning message sql/share/swedish/errmsg.txt: New warning message Translated a lot of error messages sql/share/ukrainian/errmsg.txt: New warning message sql/sql_class.cc: Added support for warnings during parsing sql/sql_class.h: Added support for warnings during parsing sql/sql_error.cc: Added support for warnings during parsing sql/sql_lex.cc: Fixed comment sql/sql_parse.cc: Added automatic conversion from CHAR(length) to BLOB when length > 255 Added support for BLOB(length) sql/sql_yacc.yy: New operators MOD and DIV SELECT ... FROM DUAL TRUE = 1 and FALSE = 0
This commit is contained in:
@@ -3026,6 +3026,7 @@ bool add_field_to_list(char *field_name, enum_field_types type,
|
||||
THD *thd=current_thd;
|
||||
LEX *lex= &thd->lex;
|
||||
uint allowed_type_modifier=0;
|
||||
char warn_buff[MYSQL_ERRMSG_SIZE];
|
||||
DBUG_ENTER("add_field_to_list");
|
||||
|
||||
if (strlen(field_name) > NAME_LEN)
|
||||
@@ -3117,8 +3118,6 @@ bool add_field_to_list(char *field_name, enum_field_types type,
|
||||
if (!length) new_field->length=20;
|
||||
allowed_type_modifier= AUTO_INCREMENT_FLAG;
|
||||
break;
|
||||
case FIELD_TYPE_STRING:
|
||||
case FIELD_TYPE_VAR_STRING:
|
||||
case FIELD_TYPE_NULL:
|
||||
case FIELD_TYPE_GEOMETRY:
|
||||
break;
|
||||
@@ -3129,10 +3128,35 @@ bool add_field_to_list(char *field_name, enum_field_types type,
|
||||
if (new_field->decimals)
|
||||
new_field->length++;
|
||||
break;
|
||||
case FIELD_TYPE_STRING:
|
||||
case FIELD_TYPE_VAR_STRING:
|
||||
if (new_field->length < MAX_FIELD_WIDTH || default_value)
|
||||
break;
|
||||
/* Convert long CHAR() and VARCHAR columns to TEXT or BLOB */
|
||||
new_field->sql_type= FIELD_TYPE_BLOB;
|
||||
sprintf(warn_buff, ER(ER_AUTO_CONVERT), field_name, "CHAR",
|
||||
(cs == my_charset_bin) ? "BLOB" : "TEXT");
|
||||
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, ER_AUTO_CONVERT,
|
||||
warn_buff);
|
||||
/* fall through */
|
||||
case FIELD_TYPE_BLOB:
|
||||
case FIELD_TYPE_TINY_BLOB:
|
||||
case FIELD_TYPE_LONG_BLOB:
|
||||
case FIELD_TYPE_MEDIUM_BLOB:
|
||||
if (new_field->length)
|
||||
{
|
||||
/* The user has given a length to the blob column */
|
||||
if (new_field->length < 256)
|
||||
type= FIELD_TYPE_TINY_BLOB;
|
||||
if (new_field->length < 65536)
|
||||
type= FIELD_TYPE_BLOB;
|
||||
else if (new_field->length < 256L*256L*256L)
|
||||
type= FIELD_TYPE_MEDIUM_BLOB;
|
||||
else
|
||||
type= FIELD_TYPE_LONG_BLOB;
|
||||
new_field->length= 0;
|
||||
}
|
||||
new_field->sql_type= type;
|
||||
if (default_value) // Allow empty as default value
|
||||
{
|
||||
String str,*res;
|
||||
|
||||
Reference in New Issue
Block a user