summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorbrian@zim.(none) <>2005-10-25 11:03:22 -0700
committerbrian@zim.(none) <>2005-10-25 11:03:22 -0700
commitda60b602076d78e4ac85963894b335e2775ad349 (patch)
treed2098dfdf562cdd9b56e063101ab755ab798384c /sql
parentd5c90efe974bbbfca0498453a289312a72f11b75 (diff)
parent63bac8c4e4db8c2067445a5029b1a56b73b49901 (diff)
downloadmariadb-git-da60b602076d78e4ac85963894b335e2775ad349.tar.gz
Merge baker@bk-internal.mysql.com:/home/bk/mysql-5.0
into zim.(none):/home/brian/mysql/mysql-5.0
Diffstat (limited to 'sql')
-rw-r--r--sql/item_func.cc38
-rw-r--r--sql/mysqld.cc2
-rw-r--r--sql/sql_parse.cc2
-rw-r--r--sql/sql_table.cc6
-rw-r--r--sql/sql_yacc.yy22
5 files changed, 57 insertions, 13 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 35ed9b615f2..92d57d826a5 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -1386,8 +1386,13 @@ double Item_func_ln::val_real()
{
DBUG_ASSERT(fixed == 1);
double value= args[0]->val_real();
- if ((null_value=(args[0]->null_value || value <= 0.0)))
+ if ((null_value=args[0]->null_value))
+ return 0.0;
+ if ((null_value= value <=0.0))
+ {
+ signal_divide_by_null();
return 0.0;
+ }
return log(value);
}
@@ -1400,13 +1405,23 @@ double Item_func_log::val_real()
{
DBUG_ASSERT(fixed == 1);
double value= args[0]->val_real();
- if ((null_value=(args[0]->null_value || value <= 0.0)))
+ if ((null_value=args[0]->null_value))
+ return 0.0;
+ if ((null_value= value <=0.0))
+ {
+ signal_divide_by_null();
return 0.0;
+ }
if (arg_count == 2)
{
double value2= args[1]->val_real();
- if ((null_value=(args[1]->null_value || value2 <= 0.0 || value == 1.0)))
+ if ((null_value=args[1]->null_value))
return 0.0;
+ if ((null_value= value2 <=0.0) || (value == 1.0))
+ {
+ signal_divide_by_null();
+ return 0.0;
+ }
return log(value2) / log(value);
}
return log(value);
@@ -1416,8 +1431,14 @@ double Item_func_log2::val_real()
{
DBUG_ASSERT(fixed == 1);
double value= args[0]->val_real();
- if ((null_value=(args[0]->null_value || value <= 0.0)))
+
+ if ((null_value=args[0]->null_value))
return 0.0;
+ if ((null_value= value <=0.0))
+ {
+ signal_divide_by_null();
+ return 0.0;
+ }
return log(value) / M_LN2;
}
@@ -1425,8 +1446,13 @@ double Item_func_log10::val_real()
{
DBUG_ASSERT(fixed == 1);
double value= args[0]->val_real();
- if ((null_value=(args[0]->null_value || value <= 0.0)))
- return 0.0; /* purecov: inspected */
+ if ((null_value=args[0]->null_value))
+ return 0.0;
+ if ((null_value= value <=0.0))
+ {
+ signal_divide_by_null();
+ return 0.0;
+ }
return log10(value);
}
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index e51eb481767..1d1649edc94 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -5212,7 +5212,7 @@ replicating a LOAD DATA INFILE command.",
{"sql-bin-update-same", OPT_SQL_BIN_UPDATE_SAME,
"The update log is deprecated since version 5.0, is replaced by the binary \
log and this option does nothing anymore.",
- 0, 0, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ 0, 0, 0, GET_DISABLED, NO_ARG, 0, 0, 0, 0, 0, 0},
{"sql-mode", OPT_SQL_MODE,
"Syntax: sql-mode=option[,option[,option...]] where option can be one of: REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, ONLY_FULL_GROUP_BY, NO_UNSIGNED_SUBTRACTION.",
(gptr*) &sql_mode_str, (gptr*) &sql_mode_str, 0, GET_STR, REQUIRED_ARG, 0,
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index d0585dd1a65..33020fccd8e 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -5791,7 +5791,7 @@ new_create_field(THD *thd, char *field_name, enum_field_types type,
case FIELD_TYPE_NULL:
break;
case FIELD_TYPE_NEWDECIMAL:
- if (!length)
+ if (!length && !new_field->decimals)
new_field->length= 10;
if (new_field->length > DECIMAL_MAX_PRECISION)
{
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 1e96891113b..56a55d9fbc0 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -1149,13 +1149,17 @@ static int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
{
column->length*= sql_field->charset->mbmaxlen;
- if (f_is_blob(sql_field->pack_flag))
+ if (f_is_blob(sql_field->pack_flag) ||
+ (f_is_geom(sql_field->pack_flag) && key->type != Key::SPATIAL))
{
if (!(file->table_flags() & HA_CAN_INDEX_BLOBS))
{
my_error(ER_BLOB_USED_AS_KEY, MYF(0), column->field_name);
DBUG_RETURN(-1);
}
+ if (f_is_geom(sql_field->pack_flag) && sql_field->geom_type ==
+ Field::GEOM_POINT)
+ column->length= 21;
if (!column->length)
{
my_error(ER_BLOB_KEY_WITHOUT_LENGTH, MYF(0), column->field_name);
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index b9cfb4a62f1..fb77f01d38c 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -2670,9 +2670,21 @@ create_table_option:
| CHECKSUM_SYM opt_equal ulong_num { Lex->create_info.table_options|= $3 ? HA_OPTION_CHECKSUM : HA_OPTION_NO_CHECKSUM; Lex->create_info.used_fields|= HA_CREATE_USED_CHECKSUM; }
| DELAY_KEY_WRITE_SYM opt_equal ulong_num { Lex->create_info.table_options|= $3 ? HA_OPTION_DELAY_KEY_WRITE : HA_OPTION_NO_DELAY_KEY_WRITE; Lex->create_info.used_fields|= HA_CREATE_USED_DELAY_KEY_WRITE; }
| ROW_FORMAT_SYM opt_equal row_types { Lex->create_info.row_type= $3; Lex->create_info.used_fields|= HA_CREATE_USED_ROW_FORMAT; }
- | RAID_TYPE opt_equal raid_types { Lex->create_info.raid_type= $3; Lex->create_info.used_fields|= HA_CREATE_USED_RAID;}
- | RAID_CHUNKS opt_equal ulong_num { Lex->create_info.raid_chunks= $3; Lex->create_info.used_fields|= HA_CREATE_USED_RAID;}
- | RAID_CHUNKSIZE opt_equal ulong_num { Lex->create_info.raid_chunksize= $3*RAID_BLOCK_SIZE; Lex->create_info.used_fields|= HA_CREATE_USED_RAID;}
+ | RAID_TYPE opt_equal raid_types
+ {
+ my_error(ER_WARN_DEPRECATED_SYNTAX, MYF(0), "RAID_TYPE", "PARTITION");
+ YYABORT;
+ }
+ | RAID_CHUNKS opt_equal ulong_num
+ {
+ my_error(ER_WARN_DEPRECATED_SYNTAX, MYF(0), "RAID_CHUNKS", "PARTITION");
+ YYABORT;
+ }
+ | RAID_CHUNKSIZE opt_equal ulong_num
+ {
+ my_error(ER_WARN_DEPRECATED_SYNTAX, MYF(0), "RAID_CHUNKSIZE", "PARTITION");
+ YYABORT;
+ }
| UNION_SYM opt_equal '(' table_list ')'
{
/* Move the union list to the merge_list */
@@ -2970,7 +2982,9 @@ type:
spatial_type:
GEOMETRY_SYM { $$= Field::GEOM_GEOMETRY; }
| GEOMETRYCOLLECTION { $$= Field::GEOM_GEOMETRYCOLLECTION; }
- | POINT_SYM { $$= Field::GEOM_POINT; }
+ | POINT_SYM { Lex->length= (char*)"21";
+ $$= Field::GEOM_POINT;
+ }
| MULTIPOINT { $$= Field::GEOM_MULTIPOINT; }
| LINESTRING { $$= Field::GEOM_LINESTRING; }
| MULTILINESTRING { $$= Field::GEOM_MULTILINESTRING; }