1
0
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:
unknown
2002-11-21 02:07:14 +02:00
parent 548e59c685
commit 2723dbdb5e
39 changed files with 223 additions and 41 deletions

View File

@@ -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;