mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-4.1
into deer.(none):/home/hf/work/mysql-4.1.233
This commit is contained in:
@@ -458,3 +458,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select high_priority issimple(multipoint(point(3,6),point(4,10))) AS `issimple(MultiPoint(Point(3, 6), Point(4, 10)))`,issimple(point(3,6)) AS `issimple(Point(3, 6))`
|
Note 1003 select high_priority issimple(multipoint(point(3,6),point(4,10))) AS `issimple(MultiPoint(Point(3, 6), Point(4, 10)))`,issimple(point(3,6)) AS `issimple(Point(3, 6))`
|
||||||
|
create table t1 (a geometry not null);
|
||||||
|
insert into t1 values (GeomFromText('Point(1 2)'));
|
||||||
|
insert into t1 values ('Garbage');
|
||||||
|
ERROR HY000: Unknown error
|
||||||
|
insert IGNORE into t1 values ('Garbage');
|
||||||
|
ERROR HY000: Unknown error
|
||||||
|
alter table t1 add spatial index(a);
|
||||||
|
drop table t1;
|
||||||
|
@@ -160,3 +160,13 @@ SELECT SRID(GeomFromText('LineString(1 1,2 2)',101));
|
|||||||
explain extended SELECT SRID(GeomFromText('LineString(1 1,2 2)',101));
|
explain extended SELECT SRID(GeomFromText('LineString(1 1,2 2)',101));
|
||||||
#select issimple(MultiPoint(Point(3, 6), Point(4, 10))), issimple(Point(3, 6)),issimple(PolygonFromText('POLYGON((10 10,20 10,20 20,10 20,10 10))')),issimple(GeometryFromText('POINT(1 4)')), issimple(AsWKB(GeometryFromText('POINT(1 4)')));
|
#select issimple(MultiPoint(Point(3, 6), Point(4, 10))), issimple(Point(3, 6)),issimple(PolygonFromText('POLYGON((10 10,20 10,20 20,10 20,10 10))')),issimple(GeometryFromText('POINT(1 4)')), issimple(AsWKB(GeometryFromText('POINT(1 4)')));
|
||||||
explain extended select issimple(MultiPoint(Point(3, 6), Point(4, 10))), issimple(Point(3, 6));
|
explain extended select issimple(MultiPoint(Point(3, 6), Point(4, 10))), issimple(Point(3, 6));
|
||||||
|
|
||||||
|
create table t1 (a geometry not null);
|
||||||
|
insert into t1 values (GeomFromText('Point(1 2)'));
|
||||||
|
-- error 1105
|
||||||
|
insert into t1 values ('Garbage');
|
||||||
|
-- error 1105
|
||||||
|
insert IGNORE into t1 values ('Garbage');
|
||||||
|
alter table t1 add spatial index(a);
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
@@ -5081,7 +5081,7 @@ int Field_geom::store(const char *from, uint length, CHARSET_INFO *cs)
|
|||||||
wkb_type= uint4korr(from + WKB_HEADER_SIZE);
|
wkb_type= uint4korr(from + WKB_HEADER_SIZE);
|
||||||
if (wkb_type < (uint32) Geometry::wkb_point ||
|
if (wkb_type < (uint32) Geometry::wkb_point ||
|
||||||
wkb_type > (uint32) Geometry::wkb_end)
|
wkb_type > (uint32) Geometry::wkb_end)
|
||||||
return 1;
|
return -1;
|
||||||
Field_blob::store_length(length);
|
Field_blob::store_length(length);
|
||||||
if (table->copy_blobs || length <= MAX_FIELD_WIDTH)
|
if (table->copy_blobs || length <= MAX_FIELD_WIDTH)
|
||||||
{ // Must make a copy
|
{ // Must make a copy
|
||||||
@@ -5094,7 +5094,7 @@ int Field_geom::store(const char *from, uint length, CHARSET_INFO *cs)
|
|||||||
|
|
||||||
err:
|
err:
|
||||||
bzero(ptr, Field_blob::pack_length());
|
bzero(ptr, Field_blob::pack_length());
|
||||||
return 1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /*HAVE_SPATIAL*/
|
#endif /*HAVE_SPATIAL*/
|
||||||
|
@@ -1184,8 +1184,8 @@ Field *make_field(char *ptr, uint32 field_length,
|
|||||||
struct st_table *table);
|
struct st_table *table);
|
||||||
uint pack_length_to_packflag(uint type);
|
uint pack_length_to_packflag(uint type);
|
||||||
uint32 calc_pack_length(enum_field_types type,uint32 length);
|
uint32 calc_pack_length(enum_field_types type,uint32 length);
|
||||||
bool set_field_to_null(Field *field);
|
int set_field_to_null(Field *field);
|
||||||
bool set_field_to_null_with_conversions(Field *field, bool no_conversions);
|
int set_field_to_null_with_conversions(Field *field, bool no_conversions);
|
||||||
bool test_if_int(const char *str, int length, const char *int_end,
|
bool test_if_int(const char *str, int length, const char *int_end,
|
||||||
CHARSET_INFO *cs);
|
CHARSET_INFO *cs);
|
||||||
|
|
||||||
|
@@ -109,7 +109,7 @@ static void do_outer_field_to_null_str(Copy_field *copy)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
int
|
||||||
set_field_to_null(Field *field)
|
set_field_to_null(Field *field)
|
||||||
{
|
{
|
||||||
if (field->real_maybe_null())
|
if (field->real_maybe_null())
|
||||||
@@ -127,7 +127,7 @@ set_field_to_null(Field *field)
|
|||||||
if (!current_thd->no_errors)
|
if (!current_thd->no_errors)
|
||||||
my_printf_error(ER_BAD_NULL_ERROR,ER(ER_BAD_NULL_ERROR),MYF(0),
|
my_printf_error(ER_BAD_NULL_ERROR,ER(ER_BAD_NULL_ERROR),MYF(0),
|
||||||
field->field_name);
|
field->field_name);
|
||||||
return 1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -145,11 +145,11 @@ set_field_to_null(Field *field)
|
|||||||
|
|
||||||
RETURN VALUES
|
RETURN VALUES
|
||||||
0 Field could take 0 or an automatic conversion was used
|
0 Field could take 0 or an automatic conversion was used
|
||||||
1 Field could not take NULL and no conversion was used.
|
-1 Field could not take NULL and no conversion was used.
|
||||||
If no_conversion was not set, an error message is printed
|
If no_conversion was not set, an error message is printed
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool
|
int
|
||||||
set_field_to_null_with_conversions(Field *field, bool no_conversions)
|
set_field_to_null_with_conversions(Field *field, bool no_conversions)
|
||||||
{
|
{
|
||||||
if (field->real_maybe_null())
|
if (field->real_maybe_null())
|
||||||
@@ -159,7 +159,7 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (no_conversions)
|
if (no_conversions)
|
||||||
return 1;
|
return -1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Check if this is a special type, which will get a special walue
|
Check if this is a special type, which will get a special walue
|
||||||
@@ -184,7 +184,7 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions)
|
|||||||
if (!current_thd->no_errors)
|
if (!current_thd->no_errors)
|
||||||
my_printf_error(ER_BAD_NULL_ERROR,ER(ER_BAD_NULL_ERROR),MYF(0),
|
my_printf_error(ER_BAD_NULL_ERROR,ER(ER_BAD_NULL_ERROR),MYF(0),
|
||||||
field->field_name);
|
field->field_name);
|
||||||
return 1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
13
sql/item.cc
13
sql/item.cc
@@ -639,7 +639,7 @@ int Item_param::save_in_field(Field *field, bool no_conversions)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
String *result=val_str(&str_value);
|
String *result=val_str(&str_value);
|
||||||
return (field->store(result->ptr(),result->length(),field->charset())) ? -1 : 0;
|
return field->store(result->ptr(),result->length(),field->charset());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Item_param::get_time(TIME *res)
|
bool Item_param::get_time(TIME *res)
|
||||||
@@ -1244,7 +1244,7 @@ int Item::save_in_field(Field *field, bool no_conversions)
|
|||||||
field->set_notnull();
|
field->set_notnull();
|
||||||
error=field->store(nr);
|
error=field->store(nr);
|
||||||
}
|
}
|
||||||
return (error) ? -1 : 0;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1255,8 +1255,7 @@ int Item_string::save_in_field(Field *field, bool no_conversions)
|
|||||||
if (null_value)
|
if (null_value)
|
||||||
return set_field_to_null(field);
|
return set_field_to_null(field);
|
||||||
field->set_notnull();
|
field->set_notnull();
|
||||||
return (field->store(result->ptr(),result->length(),collation.collation)) ?
|
return field->store(result->ptr(),result->length(),collation.collation);
|
||||||
-1 : 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int Item_uint::save_in_field(Field *field, bool no_conversions)
|
int Item_uint::save_in_field(Field *field, bool no_conversions)
|
||||||
@@ -1275,7 +1274,7 @@ int Item_int::save_in_field(Field *field, bool no_conversions)
|
|||||||
if (null_value)
|
if (null_value)
|
||||||
return set_field_to_null(field);
|
return set_field_to_null(field);
|
||||||
field->set_notnull();
|
field->set_notnull();
|
||||||
return (field->store(nr)) ? -1 : 0;
|
return field->store(nr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1285,7 +1284,7 @@ int Item_real::save_in_field(Field *field, bool no_conversions)
|
|||||||
if (null_value)
|
if (null_value)
|
||||||
return set_field_to_null(field);
|
return set_field_to_null(field);
|
||||||
field->set_notnull();
|
field->set_notnull();
|
||||||
return (field->store(nr)) ? -1 : 0;
|
return field->store(nr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@@ -1347,7 +1346,7 @@ int Item_varbinary::save_in_field(Field *field, bool no_conversions)
|
|||||||
longlong nr=val_int();
|
longlong nr=val_int();
|
||||||
error=field->store(nr);
|
error=field->store(nr);
|
||||||
}
|
}
|
||||||
return (error) ? -1 : 0;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1095,7 +1095,7 @@ get_mm_leaf(PARAM *param, COND *conf_func, Field *field, KEY_PART *key_part,
|
|||||||
field->cmp_type() != value->result_type())
|
field->cmp_type() != value->result_type())
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
|
||||||
if (value->save_in_field(field, 1) > 0)
|
if (value->save_in_field(field, 1) < 0)
|
||||||
{
|
{
|
||||||
/* This happens when we try to insert a NULL field in a not null column */
|
/* This happens when we try to insert a NULL field in a not null column */
|
||||||
DBUG_RETURN(&null_element); // cmp with NULL is never true
|
DBUG_RETURN(&null_element); // cmp with NULL is never true
|
||||||
|
@@ -2423,7 +2423,7 @@ fill_record(List<Item> &fields,List<Item> &values, bool ignore_errors)
|
|||||||
TABLE *table= rfield->table;
|
TABLE *table= rfield->table;
|
||||||
if (rfield == table->next_number_field)
|
if (rfield == table->next_number_field)
|
||||||
table->auto_increment_field_not_null= true;
|
table->auto_increment_field_not_null= true;
|
||||||
if (value->save_in_field(rfield, 0) > 0 && !ignore_errors)
|
if ((value->save_in_field(rfield, 0) < 0) && !ignore_errors)
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
@@ -2444,7 +2444,7 @@ fill_record(Field **ptr,List<Item> &values, bool ignore_errors)
|
|||||||
TABLE *table= field->table;
|
TABLE *table= field->table;
|
||||||
if (field == table->next_number_field)
|
if (field == table->next_number_field)
|
||||||
table->auto_increment_field_not_null= true;
|
table->auto_increment_field_not_null= true;
|
||||||
if (value->save_in_field(field, 0) == 1 && !ignore_errors)
|
if ((value->save_in_field(field, 0) < 0) && !ignore_errors)
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
Reference in New Issue
Block a user