Commit f3f5eb5c authored by istruewing@chilla.local's avatar istruewing@chilla.local

Merge bk-internal.mysql.com:/home/bk/mysql-4.1

into  chilla.local:/home/mydev/mysql-4.1-axmrg
parents f92ae8d6 9b8c7ffc
...@@ -10,10 +10,16 @@ use Fcntl ':flock'; ...@@ -10,10 +10,16 @@ use Fcntl ':flock';
# Requested IDs are stored in a hash and released upon END. # Requested IDs are stored in a hash and released upon END.
# #
my %mtr_unique_assigned_ids = (); my %mtr_unique_assigned_ids = ();
my $mtr_unique_pid;
BEGIN {
$mtr_unique_pid = $$ unless defined $mtr_unique_pid;
}
END { END {
while(my ($id,$file) = each(%mtr_unique_assigned_ids)) { if($mtr_unique_pid == $$) {
print "Autoreleasing $file:$id\n"; while(my ($id,$file) = each(%mtr_unique_assigned_ids)) {
mtr_release_unique_id($file, $id); print "Autoreleasing $file:$id\n";
mtr_release_unique_id($file, $id);
}
} }
} }
......
...@@ -671,3 +671,9 @@ Catalog Database Table Table_alias Column Column_alias Type Length Max length Is ...@@ -671,3 +671,9 @@ Catalog Database Table Table_alias Column Column_alias Type Length Max length Is
def asbinary(g) 252 8192 0 Y 128 0 63 def asbinary(g) 252 8192 0 Y 128 0 63
asbinary(g) asbinary(g)
drop table t1; 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/bad_gis_data.dat' into table t1;
ERROR 01000: Data truncated; NULL supplied to NOT NULL column 'b' at row 1
alter table t1 enable keys;
drop table t1;
...@@ -363,11 +363,18 @@ drop table t1; ...@@ -363,11 +363,18 @@ drop table t1;
select (asWKT(geomfromwkb((0x000000000140240000000000004024000000000000)))); select (asWKT(geomfromwkb((0x000000000140240000000000004024000000000000))));
select (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440)))); select (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))));
# End of 4.1 tests
--enable_metadata --enable_metadata
create table t1 (g GEOMETRY); create table t1 (g GEOMETRY);
select * from t1; select * from t1;
select asbinary(g) from t1; select asbinary(g) from t1;
--disable_metadata --disable_metadata
drop table t1; 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/bad_gis_data.dat' into table t1;
alter table t1 enable keys;
drop table t1;
# End of 4.1 tests
...@@ -111,6 +111,7 @@ SUFFIXES = .sh ...@@ -111,6 +111,7 @@ SUFFIXES = .sh
-e 's!@''pkglibdir''@!$(pkglibdir)!g' \ -e 's!@''pkglibdir''@!$(pkglibdir)!g' \
-e 's!@''pkgincludedir''@!$(pkgincludedir)!g' \ -e 's!@''pkgincludedir''@!$(pkgincludedir)!g' \
-e 's!@''pkgdatadir''@!$(pkgdatadir)!g' \ -e 's!@''pkgdatadir''@!$(pkgdatadir)!g' \
-e 's!@''sysconfdir''@!$(sysconfdir)!g' \
-e 's!@''CC''@!@CC@!'\ -e 's!@''CC''@!@CC@!'\
-e 's!@''CXX''@!@CXX@!'\ -e 's!@''CXX''@!@CXX@!'\
-e 's!@''GXX''@!@GXX@!'\ -e 's!@''GXX''@!@GXX@!'\
......
...@@ -462,8 +462,8 @@ MySQLaccess::Report::Print_Header(); ...@@ -462,8 +462,8 @@ MySQLaccess::Report::Print_Header();
if (-f "./$script_conf") { if (-f "./$script_conf") {
require "./$script_conf"; require "./$script_conf";
} }
elsif (-f "/etc/$script_conf") { elsif (-f "@sysconfdir@/$script_conf") {
require "/etc/$script_conf"; require "@sysconfdir@/$script_conf";
} }
# **************************** # ****************************
...@@ -929,7 +929,7 @@ sub MergeConfigFile { ...@@ -929,7 +929,7 @@ sub MergeConfigFile {
# ================================= # =================================
sub MergeConfigFiles { sub MergeConfigFiles {
my ($name,$pass,$uid,$gid,$quota,$comment,$gcos,$dir,$shell) = getpwuid $<; my ($name,$pass,$uid,$gid,$quota,$comment,$gcos,$dir,$shell) = getpwuid $<;
MergeConfigFile("/etc/my.cnf"); MergeConfigFile("@sysconfdir@/my.cnf");
MergeConfigFile("$dir/.my.cnf"); MergeConfigFile("$dir/.my.cnf");
} }
......
...@@ -429,9 +429,9 @@ sub find_groups ...@@ -429,9 +429,9 @@ sub find_groups
} }
else else
{ {
if (-f "/etc/my.cnf" && -r "/etc/my.cnf") if (-f "@sysconfdir@/my.cnf" && -r "@sysconfdir@/my.cnf")
{ {
open(MY_CNF, "</etc/my.cnf") && (@tmp=<MY_CNF>) && close(MY_CNF); open(MY_CNF, "<@sysconfdir@/my.cnf") && (@tmp=<MY_CNF>) && close(MY_CNF);
} }
for ($i = 0; ($line = shift @tmp); $i++) for ($i = 0; ($line = shift @tmp); $i++)
{ {
...@@ -658,7 +658,7 @@ sub example ...@@ -658,7 +658,7 @@ sub example
# (as per Linux/Unix standard). You may even replace the # (as per Linux/Unix standard). You may even replace the
# /etc/init.d/mysql.server script with it. # /etc/init.d/mysql.server script with it.
# #
# Before using, you must create a my.cnf file either in /etc/my.cnf # Before using, you must create a my.cnf file either in @sysconfdir@/my.cnf
# or /root/.my.cnf and add the [mysqld_multi] and [mysqld#] groups. # or /root/.my.cnf and add the [mysqld_multi] and [mysqld#] groups.
# #
# The script can be found from support-files/mysqld_multi.server.sh # The script can be found from support-files/mysqld_multi.server.sh
......
...@@ -1137,10 +1137,11 @@ void Field_null::sql_type(String &res) const ...@@ -1137,10 +1137,11 @@ void Field_null::sql_type(String &res) const
This is an number stored as a pre-space (or pre-zero) string This is an number stored as a pre-space (or pre-zero) string
****************************************************************************/ ****************************************************************************/
void int
Field_decimal::reset(void) Field_decimal::reset(void)
{ {
Field_decimal::store("0",1,&my_charset_bin); Field_decimal::store("0",1,&my_charset_bin);
return 0;
} }
void Field_decimal::overflow(bool negative) void Field_decimal::overflow(bool negative)
......
...@@ -126,7 +126,7 @@ class Field ...@@ -126,7 +126,7 @@ class Field
bool eq(Field *field) { return ptr == field->ptr && null_ptr == field->null_ptr; } bool eq(Field *field) { return ptr == field->ptr && null_ptr == field->null_ptr; }
virtual bool eq_def(Field *field); virtual bool eq_def(Field *field);
virtual uint32 pack_length() const { return (uint32) field_length; } virtual uint32 pack_length() const { return (uint32) field_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 reset_fields() {}
virtual void set_default() virtual void set_default()
{ {
...@@ -387,10 +387,10 @@ class Field_decimal :public Field_num { ...@@ -387,10 +387,10 @@ class Field_decimal :public Field_num {
enum_field_types type() const { return FIELD_TYPE_DECIMAL;} enum_field_types type() const { return FIELD_TYPE_DECIMAL;}
enum ha_base_keytype key_type() const enum ha_base_keytype key_type() const
{ return zerofill ? HA_KEYTYPE_BINARY : HA_KEYTYPE_NUM; } { 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(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
double val_real(void); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
...@@ -418,10 +418,10 @@ class Field_tiny :public Field_num { ...@@ -418,10 +418,10 @@ class Field_tiny :public Field_num {
enum_field_types type() const { return FIELD_TYPE_TINY;} enum_field_types type() const { return FIELD_TYPE_TINY;}
enum ha_base_keytype key_type() const enum ha_base_keytype key_type() const
{ return unsigned_flag ? HA_KEYTYPE_BINARY : HA_KEYTYPE_INT8; } { return unsigned_flag ? HA_KEYTYPE_BINARY : HA_KEYTYPE_INT8; }
int store(const char *to,uint length,CHARSET_INFO *charset); int store(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
void reset(void) { ptr[0]=0; } int reset(void) { ptr[0]=0; return 0; }
double val_real(void); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
...@@ -454,10 +454,10 @@ class Field_short :public Field_num { ...@@ -454,10 +454,10 @@ class Field_short :public Field_num {
enum_field_types type() const { return FIELD_TYPE_SHORT;} enum_field_types type() const { return FIELD_TYPE_SHORT;}
enum ha_base_keytype key_type() const enum ha_base_keytype key_type() const
{ return unsigned_flag ? HA_KEYTYPE_USHORT_INT : HA_KEYTYPE_SHORT_INT;} { return unsigned_flag ? HA_KEYTYPE_USHORT_INT : HA_KEYTYPE_SHORT_INT;}
int store(const char *to,uint length,CHARSET_INFO *charset); int store(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
void reset(void) { ptr[0]=ptr[1]=0; } int reset(void) { ptr[0]=ptr[1]=0; return 0; }
double val_real(void); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
...@@ -488,7 +488,7 @@ class Field_medium :public Field_num { ...@@ -488,7 +488,7 @@ class Field_medium :public Field_num {
int store(const char *to,uint length,CHARSET_INFO *charset); int store(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
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); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
...@@ -521,10 +521,10 @@ class Field_long :public Field_num { ...@@ -521,10 +521,10 @@ class Field_long :public Field_num {
enum_field_types type() const { return FIELD_TYPE_LONG;} enum_field_types type() const { return FIELD_TYPE_LONG;}
enum ha_base_keytype key_type() const enum ha_base_keytype key_type() const
{ return unsigned_flag ? HA_KEYTYPE_ULONG_INT : HA_KEYTYPE_LONG_INT; } { return unsigned_flag ? HA_KEYTYPE_ULONG_INT : HA_KEYTYPE_LONG_INT; }
int store(const char *to,uint length,CHARSET_INFO *charset); int store(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
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); double val_real(void);
longlong val_int(void); longlong val_int(void);
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
...@@ -559,10 +559,14 @@ class Field_longlong :public Field_num { ...@@ -559,10 +559,14 @@ class Field_longlong :public Field_num {
enum_field_types type() const { return FIELD_TYPE_LONGLONG;} enum_field_types type() const { return FIELD_TYPE_LONGLONG;}
enum ha_base_keytype key_type() const enum ha_base_keytype key_type() const
{ return unsigned_flag ? HA_KEYTYPE_ULONGLONG : HA_KEYTYPE_LONGLONG; } { return unsigned_flag ? HA_KEYTYPE_ULONGLONG : HA_KEYTYPE_LONGLONG; }
int store(const char *to,uint length,CHARSET_INFO *charset); int store(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
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); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
...@@ -594,10 +598,10 @@ class Field_float :public Field_num { ...@@ -594,10 +598,10 @@ class Field_float :public Field_num {
{} {}
enum_field_types type() const { return FIELD_TYPE_FLOAT;} enum_field_types type() const { return FIELD_TYPE_FLOAT;}
enum ha_base_keytype key_type() const { return HA_KEYTYPE_FLOAT; } enum ha_base_keytype key_type() const { return HA_KEYTYPE_FLOAT; }
int store(const char *to,uint length,CHARSET_INFO *charset); int store(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
void reset(void) { bzero(ptr,sizeof(float)); } int reset(void) { bzero(ptr,sizeof(float)); return 0; }
double val_real(void); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
...@@ -628,10 +632,10 @@ class Field_double :public Field_num { ...@@ -628,10 +632,10 @@ class Field_double :public Field_num {
{} {}
enum_field_types type() const { return FIELD_TYPE_DOUBLE;} enum_field_types type() const { return FIELD_TYPE_DOUBLE;}
enum ha_base_keytype key_type() const { return HA_KEYTYPE_DOUBLE; } enum ha_base_keytype key_type() const { return HA_KEYTYPE_DOUBLE; }
int store(const char *to,uint length,CHARSET_INFO *charset); int store(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
void reset(void) { bzero(ptr,sizeof(double)); } int reset(void) { bzero(ptr,sizeof(double)); return 0; }
double val_real(void); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
...@@ -658,9 +662,9 @@ class Field_null :public Field_str { ...@@ -658,9 +662,9 @@ class Field_null :public Field_str {
enum_field_types type() const { return FIELD_TYPE_NULL;} enum_field_types type() const { return FIELD_TYPE_NULL;}
int store(const char *to, uint length, CHARSET_INFO *cs) int store(const char *to, uint length, CHARSET_INFO *cs)
{ null[0]=1; return 0; } { null[0]=1; return 0; }
int store(double nr) { null[0]=1; return 0; } int store(double nr) { null[0]=1; return 0; }
int store(longlong nr) { null[0]=1; return 0; } int store(longlong nr) { null[0]=1; return 0; }
void reset(void) {} int reset(void) { return 0; }
double val_real(void) { return 0.0;} double val_real(void) { return 0.0;}
longlong val_int(void) { return 0;} longlong val_int(void) { return 0;}
String *val_str(String *value,String *value2) String *val_str(String *value,String *value2)
...@@ -687,7 +691,7 @@ class Field_timestamp :public Field_str { ...@@ -687,7 +691,7 @@ class Field_timestamp :public Field_str {
int store(const char *to,uint length,CHARSET_INFO *charset); int store(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
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); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
...@@ -763,10 +767,10 @@ class Field_date :public Field_str { ...@@ -763,10 +767,10 @@ class Field_date :public Field_str {
enum_field_types type() const { return FIELD_TYPE_DATE;} enum_field_types type() const { return FIELD_TYPE_DATE;}
enum ha_base_keytype key_type() const { return HA_KEYTYPE_ULONG_INT; } enum ha_base_keytype key_type() const { return HA_KEYTYPE_ULONG_INT; }
enum Item_result cmp_type () const { return INT_RESULT; } enum Item_result cmp_type () const { return INT_RESULT; }
int store(const char *to,uint length,CHARSET_INFO *charset); int store(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
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); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
...@@ -795,7 +799,7 @@ class Field_newdate :public Field_str { ...@@ -795,7 +799,7 @@ class Field_newdate :public Field_str {
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
void store_time(TIME *ltime,timestamp_type type); void 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); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
...@@ -826,10 +830,10 @@ class Field_time :public Field_str { ...@@ -826,10 +830,10 @@ class Field_time :public Field_str {
enum_field_types type() const { return FIELD_TYPE_TIME;} enum_field_types type() const { return FIELD_TYPE_TIME;}
enum ha_base_keytype key_type() const { return HA_KEYTYPE_INT24; } enum ha_base_keytype key_type() const { return HA_KEYTYPE_INT24; }
enum Item_result cmp_type () const { return INT_RESULT; } enum Item_result cmp_type () const { return INT_RESULT; }
int store(const char *to,uint length,CHARSET_INFO *charset); int store(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
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); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
...@@ -867,7 +871,11 @@ class Field_datetime :public Field_str { ...@@ -867,7 +871,11 @@ class Field_datetime :public Field_str {
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
void store_time(TIME *ltime,timestamp_type type); void 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); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
...@@ -905,9 +913,13 @@ class Field_string :public Field_str { ...@@ -905,9 +913,13 @@ class Field_string :public Field_str {
enum ha_base_keytype key_type() const enum ha_base_keytype key_type() const
{ return binary() ? HA_KEYTYPE_BINARY : HA_KEYTYPE_TEXT; } { return binary() ? HA_KEYTYPE_BINARY : HA_KEYTYPE_TEXT; }
bool zero_pack() const { return 0; } bool zero_pack() const { return 0; }
void reset(void) { charset()->cset->fill(charset(),ptr,field_length,' '); } int reset(void)
int store(const char *to,uint length,CHARSET_INFO *charset); {
int store(longlong nr); charset()->cset->fill(charset(),ptr,field_length,' ');
return 0;
}
int store(const char *to,uint length,CHARSET_INFO *charset);
int store(longlong nr);
int store(double nr) { return Field_str::store(nr); } /* QQ: To be deleted */ int store(double nr) { return Field_str::store(nr); } /* QQ: To be deleted */
double val_real(void); double val_real(void);
longlong val_int(void); longlong val_int(void);
...@@ -948,7 +960,7 @@ class Field_varstring :public Field_str { ...@@ -948,7 +960,7 @@ class Field_varstring :public Field_str {
enum ha_base_keytype key_type() const enum ha_base_keytype key_type() const
{ return binary() ? HA_KEYTYPE_VARBINARY : HA_KEYTYPE_VARTEXT; } { return binary() ? HA_KEYTYPE_VARBINARY : HA_KEYTYPE_VARTEXT; }
bool zero_pack() const { return 0; } bool zero_pack() const { return 0; }
void reset(void) { bzero(ptr,field_length+2); } int reset(void) { bzero(ptr,field_length+2); return 0; }
uint32 pack_length() const { return (uint32) field_length+2; } uint32 pack_length() const { return (uint32) field_length+2; }
uint32 key_length() const { return (uint32) field_length; } uint32 key_length() const { return (uint32) field_length; }
int store(const char *to,uint length,CHARSET_INFO *charset); int store(const char *to,uint length,CHARSET_INFO *charset);
...@@ -1017,7 +1029,7 @@ class Field_blob :public Field_str { ...@@ -1017,7 +1029,7 @@ class Field_blob :public Field_str {
{ {
return (uint32) (((ulonglong) 1 << (packlength*8)) -1); 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 reset_fields() { bzero((char*) &value,sizeof(value)); }
void store_length(uint32 number); void store_length(uint32 number);
inline uint32 get_length(uint row_offset=0) inline uint32 get_length(uint row_offset=0)
...@@ -1093,6 +1105,7 @@ class Field_geom :public Field_blob { ...@@ -1093,6 +1105,7 @@ class Field_geom :public Field_blob {
int store(const char *to, uint length, CHARSET_INFO *charset); int store(const char *to, uint length, CHARSET_INFO *charset);
int store(double nr) { return 1; } int store(double nr) { return 1; }
int store(longlong nr) { return 1; } int store(longlong nr) { return 1; }
int reset(void) { return !maybe_null(); }
void get_key_image(char *buff,uint length, CHARSET_INFO *cs,imagetype type); void get_key_image(char *buff,uint length, CHARSET_INFO *cs,imagetype type);
void set_key_image(char *buff,uint length, CHARSET_INFO *cs); void set_key_image(char *buff,uint length, CHARSET_INFO *cs);
...@@ -1123,7 +1136,7 @@ class Field_enum :public Field_str { ...@@ -1123,7 +1136,7 @@ class Field_enum :public Field_str {
int store(const char *to,uint length,CHARSET_INFO *charset); int store(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr); int store(double nr);
int store(longlong nr); int store(longlong nr);
void reset() { bzero(ptr,packlength); } int reset() { bzero(ptr,packlength); return 0; }
double val_real(void); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
......
...@@ -527,7 +527,12 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table, ...@@ -527,7 +527,12 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table,
(enclosed_length && length == 4 && !memcmp(pos,"NULL",4)) || (enclosed_length && length == 4 && !memcmp(pos,"NULL",4)) ||
(length == 1 && read_info.found_null)) (length == 1 && read_info.found_null))
{ {
field->reset(); if (field->reset())
{
my_error(ER_WARN_NULL_TO_NOTNULL, MYF(0), field->field_name,
thd->row_count);
DBUG_RETURN(1);
}
field->set_null(); field->set_null();
if (!field->maybe_null()) if (!field->maybe_null())
{ {
...@@ -560,7 +565,12 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table, ...@@ -560,7 +565,12 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table,
for (; sql_field ; sql_field=(Item_field*) it++) for (; sql_field ; sql_field=(Item_field*) it++)
{ {
sql_field->field->set_null(); sql_field->field->set_null();
sql_field->field->reset(); if (sql_field->field->reset())
{
my_error(ER_WARN_NULL_TO_NOTNULL, MYF(0),sql_field->field->field_name,
thd->row_count);
DBUG_RETURN(1);
}
thd->cuted_fields++; thd->cuted_fields++;
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_TOO_FEW_RECORDS, ER_WARN_TOO_FEW_RECORDS,
......
...@@ -549,6 +549,7 @@ fi ...@@ -549,6 +549,7 @@ fi
%doc %attr(644, root, man) %{_mandir}/man1/mysqlman.1* %doc %attr(644, root, man) %{_mandir}/man1/mysqlman.1*
%doc %attr(644, root, man) %{_mandir}/man1/isamchk.1* %doc %attr(644, root, man) %{_mandir}/man1/isamchk.1*
%doc %attr(644, root, man) %{_mandir}/man1/isamlog.1* %doc %attr(644, root, man) %{_mandir}/man1/isamlog.1*
%doc %attr(644, root, man) %{_mandir}/man1/my_print_defaults.1*
%doc %attr(644, root, man) %{_mandir}/man1/myisam_ftdump.1* %doc %attr(644, root, man) %{_mandir}/man1/myisam_ftdump.1*
%doc %attr(644, root, man) %{_mandir}/man1/myisamchk.1* %doc %attr(644, root, man) %{_mandir}/man1/myisamchk.1*
%doc %attr(644, root, man) %{_mandir}/man1/myisamlog.1* %doc %attr(644, root, man) %{_mandir}/man1/myisamlog.1*
...@@ -560,6 +561,7 @@ fi ...@@ -560,6 +561,7 @@ fi
%doc %attr(644, root, man) %{_mandir}/man1/mysql_fix_privilege_tables.1* %doc %attr(644, root, man) %{_mandir}/man1/mysql_fix_privilege_tables.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysqlhotcopy.1* %doc %attr(644, root, man) %{_mandir}/man1/mysqlhotcopy.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysql.server.1* %doc %attr(644, root, man) %{_mandir}/man1/mysql.server.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysql_tzinfo_to_sql.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysql_zap.1* %doc %attr(644, root, man) %{_mandir}/man1/mysql_zap.1*
%doc %attr(644, root, man) %{_mandir}/man1/pack_isam.1* %doc %attr(644, root, man) %{_mandir}/man1/pack_isam.1*
%doc %attr(644, root, man) %{_mandir}/man1/perror.1* %doc %attr(644, root, man) %{_mandir}/man1/perror.1*
...@@ -724,6 +726,11 @@ fi ...@@ -724,6 +726,11 @@ fi
# itself - note that they must be ordered by date (important when # itself - note that they must be ordered by date (important when
# merging BK trees) # merging BK trees)
%changelog %changelog
* Thu Dec 14 2006 Joerg Bruehe <joerg@mysql.com>
- Include the new man pages for "my_print_defaults" and "mysql_tzinfo_to_sql"
in the server RPM.
* Thu Nov 16 2006 Joerg Bruehe <joerg@mysql.com> * Thu Nov 16 2006 Joerg Bruehe <joerg@mysql.com>
- Explicitly note that the "MySQL-shared" RPMs (as built by MySQL AB) - Explicitly note that the "MySQL-shared" RPMs (as built by MySQL AB)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment