Commit 39d873cf authored by unknown's avatar unknown
Browse files

Merge kahlann.erinye.com:/home/df/mysql/build/mysql-5.0

into  kahlann.erinye.com:/home/df/mysql/build/mysql-5.0-build

parents f67380eb 41087253
Loading
Loading
Loading
Loading
+16 −10
Original line number Diff line number Diff line
@@ -673,6 +673,22 @@ POINT(10 10)
select (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))));
(asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))))
POINT(10 10)
create table t1 (g GEOMETRY);
select * from t1;
Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
def	test	t1	t1	g	g	255	4294967295	0	Y	144	0	63
g
select asbinary(g) from t1;
Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
def					asbinary(g)	252	8192	0	Y	128	0	63
asbinary(g)
drop table t1;
create table t1 (a TEXT, b GEOMETRY NOT NULL, SPATIAL KEY(b));
alter table t1 disable keys;
load data infile '../std_data_ln/bad_gis_data.dat' into table t1;
ERROR 22004: Column was set to data type implicit default; NULL supplied for NOT NULL column 'b' at row 1
alter table t1 enable keys;
drop table t1;
create table t1 (s1 geometry not null,s2 char(100));
create trigger t1_bu before update on t1 for each row set new.s1 = null;
insert into t1 values (null,null);
@@ -696,16 +712,6 @@ alter table t1 add primary key pti(pt);
ERROR 42000: BLOB/TEXT column 'pt' used in key specification without a key length
alter table t1 add primary key pti(pt(20));
drop table t1;
create table t1 (g GEOMETRY);
select * from t1;
Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
def	test	t1	t1	g	g	255	4294967295	0	Y	144	0	63
g
select asbinary(g) from t1;
Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
def					asbinary(g)	252	8192	0	Y	128	0	63
asbinary(g)
drop table t1;
create table t1 select GeomFromText('point(1 1)');
desc t1;
Field	Type	Null	Key	Default	Extra
+1 −0
Original line number Diff line number Diff line
foo
+14 −8
Original line number Diff line number Diff line
@@ -375,6 +375,20 @@ drop table t1;
select (asWKT(geomfromwkb((0x000000000140240000000000004024000000000000))));
select (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))));

--enable_metadata
create table t1 (g GEOMETRY);
select * from t1;
select asbinary(g) from t1;
--disable_metadata
drop table t1;

create table t1 (a TEXT, b GEOMETRY NOT NULL, SPATIAL KEY(b));
alter table t1 disable keys;
--error 1263
load data infile '../std_data_ln/bad_gis_data.dat' into table t1;
alter table t1 enable keys;
drop table t1;

# End of 4.1 tests

#
@@ -410,15 +424,7 @@ alter table t1 add primary key pti(pt);
alter table t1 add primary key pti(pt(20));
drop table t1;

--enable_metadata
create table t1 (g GEOMETRY);
select * from t1;
select asbinary(g) from t1;
--disable_metadata
drop table t1;


create table t1 select GeomFromText('point(1 1)');
desc t1;
drop table t1;
+4 −2
Original line number Diff line number Diff line
@@ -1569,10 +1569,11 @@ void Field_null::sql_type(String &res) const
  This is an number stored as a pre-space (or pre-zero) string
****************************************************************************/

void
int
Field_decimal::reset(void)
{
  Field_decimal::store(STRING_WITH_LEN("0"),&my_charset_bin);
  return 0;
}

void Field_decimal::overflow(bool negative)
@@ -2217,9 +2218,10 @@ Field_new_decimal::Field_new_decimal(uint32 len_arg,
}


void Field_new_decimal::reset(void)
int Field_new_decimal::reset(void)
{
  store_value(&decimal_zero);
  return 0;
}


+65 −52
Original line number Diff line number Diff line
@@ -150,7 +150,7 @@ class Field
  */
  virtual uint32 data_length(const char *from) { return pack_length(); }
  virtual uint32 sort_length() const { return pack_length(); }
  virtual void reset(void) { bzero(ptr,pack_length()); }
  virtual int reset(void) { bzero(ptr,pack_length()); return 0; }
  virtual void reset_fields() {}
  virtual void set_default()
  {
@@ -450,7 +450,7 @@ class Field_decimal :public Field_real {
  enum_field_types type() const { return FIELD_TYPE_DECIMAL;}
  enum ha_base_keytype key_type() const
  { return zerofill ? HA_KEYTYPE_BINARY : HA_KEYTYPE_NUM; }
  void reset(void);
  int reset(void);
  int store(const char *to,uint length,CHARSET_INFO *charset);
  int store(double nr);
  int store(longlong nr, bool unsigned_val);
@@ -490,7 +490,7 @@ class Field_new_decimal :public Field_num {
  enum_field_types type() const { return FIELD_TYPE_NEWDECIMAL;}
  enum ha_base_keytype key_type() const { return HA_KEYTYPE_BINARY; }
  Item_result result_type () const { return DECIMAL_RESULT; }
  void reset(void);
  int  reset(void);
  bool store_value(const my_decimal *decimal_value);
  void set_value_on_overflow(my_decimal *decimal_value, bool sign);
  int  store(const char *to, uint length, CHARSET_INFO *charset);
@@ -530,7 +530,7 @@ class Field_tiny :public Field_num {
  int store(const char *to,uint length,CHARSET_INFO *charset);
  int store(double nr);
  int store(longlong nr, bool unsigned_val);
  void reset(void) { ptr[0]=0; }
  int reset(void) { ptr[0]=0; return 0; }
  double val_real(void);
  longlong val_int(void);
  String *val_str(String*,String *);
@@ -566,7 +566,7 @@ class Field_short :public Field_num {
  int store(const char *to,uint length,CHARSET_INFO *charset);
  int store(double nr);
  int store(longlong nr, bool unsigned_val);
  void reset(void) { ptr[0]=ptr[1]=0; }
  int reset(void) { ptr[0]=ptr[1]=0; return 0; }
  double val_real(void);
  longlong val_int(void);
  String *val_str(String*,String *);
@@ -597,7 +597,7 @@ class Field_medium :public Field_num {
  int store(const char *to,uint length,CHARSET_INFO *charset);
  int store(double nr);
  int store(longlong nr, bool unsigned_val);
  void reset(void) { ptr[0]=ptr[1]=ptr[2]=0; }
  int reset(void) { ptr[0]=ptr[1]=ptr[2]=0; return 0; }
  double val_real(void);
  longlong val_int(void);
  String *val_str(String*,String *);
@@ -633,7 +633,7 @@ class Field_long :public Field_num {
  int store(const char *to,uint length,CHARSET_INFO *charset);
  int store(double nr);
  int store(longlong nr, bool unsigned_val);
  void reset(void) { ptr[0]=ptr[1]=ptr[2]=ptr[3]=0; }
  int reset(void) { ptr[0]=ptr[1]=ptr[2]=ptr[3]=0; return 0; }
  double val_real(void);
  longlong val_int(void);
  bool send_binary(Protocol *protocol);
@@ -671,7 +671,11 @@ class Field_longlong :public Field_num {
  int store(const char *to,uint length,CHARSET_INFO *charset);
  int store(double nr);
  int store(longlong nr, bool unsigned_val);
  void reset(void) { ptr[0]=ptr[1]=ptr[2]=ptr[3]=ptr[4]=ptr[5]=ptr[6]=ptr[7]=0; }
  int reset(void)
  {
    ptr[0]=ptr[1]=ptr[2]=ptr[3]=ptr[4]=ptr[5]=ptr[6]=ptr[7]=0;
    return 0;
  }
  double val_real(void);
  longlong val_int(void);
  String *val_str(String*,String *);
@@ -707,7 +711,7 @@ class Field_float :public Field_real {
  int store(const char *to,uint length,CHARSET_INFO *charset);
  int store(double nr);
  int store(longlong nr, bool unsigned_val);
  void reset(void) { bzero(ptr,sizeof(float)); }
  int reset(void) { bzero(ptr,sizeof(float)); return 0; }
  double val_real(void);
  longlong val_int(void);
  String *val_str(String*,String *);
@@ -741,7 +745,7 @@ class Field_double :public Field_real {
  int  store(const char *to,uint length,CHARSET_INFO *charset);
  int  store(double nr);
  int  store(longlong nr, bool unsigned_val);
  void reset(void) { bzero(ptr,sizeof(double)); }
  int reset(void) { bzero(ptr,sizeof(double)); return 0; }
  double val_real(void);
  longlong val_int(void);
  String *val_str(String*,String *);
@@ -771,7 +775,7 @@ class Field_null :public Field_str {
  int store(double nr)   { null[0]=1; return 0; }
  int store(longlong nr, bool unsigned_val) { null[0]=1; return 0; }
  int store_decimal(const my_decimal *d)  { null[0]=1; return 0; }
  void reset(void)	  {}
  int reset(void)	  { return 0; }
  double val_real(void)		{ return 0.0;}
  longlong val_int(void)	{ return 0;}
  my_decimal *val_decimal(my_decimal *) { return 0; }
@@ -801,7 +805,7 @@ class Field_timestamp :public Field_str {
  int  store(const char *to,uint length,CHARSET_INFO *charset);
  int  store(double nr);
  int  store(longlong nr, bool unsigned_val);
  void reset(void) { ptr[0]=ptr[1]=ptr[2]=ptr[3]=0; }
  int  reset(void) { ptr[0]=ptr[1]=ptr[2]=ptr[3]=0; return 0; }
  double val_real(void);
  longlong val_int(void);
  String *val_str(String*,String *);
@@ -880,7 +884,7 @@ class Field_date :public Field_str {
  int store(const char *to,uint length,CHARSET_INFO *charset);
  int store(double nr);
  int store(longlong nr, bool unsigned_val);
  void reset(void) { ptr[0]=ptr[1]=ptr[2]=ptr[3]=0; }
  int reset(void) { ptr[0]=ptr[1]=ptr[2]=ptr[3]=0; return 0; }
  double val_real(void);
  longlong val_int(void);
  String *val_str(String*,String *);
@@ -909,7 +913,7 @@ class Field_newdate :public Field_str {
  int  store(double nr);
  int  store(longlong nr, bool unsigned_val);
  int store_time(TIME *ltime, timestamp_type type);
  void reset(void) { ptr[0]=ptr[1]=ptr[2]=0; }
  int reset(void) { ptr[0]=ptr[1]=ptr[2]=0; return 0; }
  double val_real(void);
  longlong val_int(void);
  String *val_str(String*,String *);
@@ -944,7 +948,7 @@ class Field_time :public Field_str {
  int store(const char *to,uint length,CHARSET_INFO *charset);
  int store(double nr);
  int store(longlong nr, bool unsigned_val);
  void reset(void) { ptr[0]=ptr[1]=ptr[2]=0; }
  int reset(void) { ptr[0]=ptr[1]=ptr[2]=0; return 0; }
  double val_real(void);
  longlong val_int(void);
  String *val_str(String*,String *);
@@ -982,7 +986,11 @@ class Field_datetime :public Field_str {
  int  store(double nr);
  int  store(longlong nr, bool unsigned_val);
  int store_time(TIME *ltime, timestamp_type type);
  void reset(void) { ptr[0]=ptr[1]=ptr[2]=ptr[3]=ptr[4]=ptr[5]=ptr[6]=ptr[7]=0; }
  int reset(void)
  {
    ptr[0]=ptr[1]=ptr[2]=ptr[3]=ptr[4]=ptr[5]=ptr[6]=ptr[7]=0;
    return 0;
  }
  double val_real(void);
  longlong val_int(void);
  String *val_str(String*,String *);
@@ -1025,7 +1033,11 @@ class Field_string :public Field_longstr {
  enum ha_base_keytype key_type() const
    { return binary() ? HA_KEYTYPE_BINARY : HA_KEYTYPE_TEXT; }
  bool zero_pack() const { return 0; }
  void reset(void) { charset()->cset->fill(charset(),ptr,field_length,' '); }
  int reset(void)
  {
    charset()->cset->fill(charset(),ptr,field_length,' ');
    return 0;
  }
  int store(const char *to,uint length,CHARSET_INFO *charset);
  int store(longlong nr, bool unsigned_val);
  int store(double nr) { return Field_str::store(nr); } /* QQ: To be deleted */
@@ -1082,7 +1094,7 @@ class Field_varstring :public Field_longstr {
  enum_field_types type() const { return MYSQL_TYPE_VARCHAR; }
  enum ha_base_keytype key_type() const;
  bool zero_pack() const { return 0; }
  void reset(void) { bzero(ptr,field_length+length_bytes); }
  int  reset(void) { bzero(ptr,field_length+length_bytes); return 0; }
  uint32 pack_length() const { return (uint32) field_length+length_bytes; }
  uint32 key_length() const { return (uint32) field_length; }
  uint32 sort_length() const
@@ -1183,7 +1195,7 @@ class Field_blob :public Field_longstr {
  {
    return (uint32) (((ulonglong) 1 << (packlength*8)) -1);
  }
  void reset(void) { bzero(ptr, packlength+sizeof(char*)); }
  int reset(void) { bzero(ptr, packlength+sizeof(char*)); return 0; }
  void reset_fields() { bzero((char*) &value,sizeof(value)); }
  void store_length(uint32 number);
  inline uint32 get_length(uint row_offset=0)
@@ -1264,6 +1276,7 @@ class Field_geom :public Field_blob {
  int  store_decimal(const my_decimal *);
  void get_key_image(char *buff,uint length,imagetype type);
  uint size_of() const { return sizeof(*this); }
  int  reset(void) { return !maybe_null(); }
};
#endif /*HAVE_SPATIAL*/

@@ -1292,7 +1305,7 @@ class Field_enum :public Field_str {
  int  store(const char *to,uint length,CHARSET_INFO *charset);
  int  store(double nr);
  int  store(longlong nr, bool unsigned_val);
  void reset() { bzero(ptr,packlength); }
  int reset() { bzero(ptr,packlength); return 0; }
  double val_real(void);
  longlong val_int(void);
  String *val_str(String*,String *);
@@ -1353,7 +1366,7 @@ class Field_bit :public Field {
  uint32 max_length() { return field_length; }
  uint size_of() const { return sizeof(*this); }
  Item_result result_type () const { return INT_RESULT; }
  void reset(void) { bzero(ptr, bytes_in_rec); }
  int reset(void) { bzero(ptr, bytes_in_rec); return 0; }
  int store(const char *to, uint length, CHARSET_INFO *charset);
  int store(double nr);
  int store(longlong nr, bool unsigned_val);
Loading