Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
95564bfe
Commit
95564bfe
authored
Dec 14, 2006
by
df@kahlann.erinye.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge kahlann.erinye.com:/home/df/mysql/build/mysql-5.0
into kahlann.erinye.com:/home/df/mysql/build/mysql-5.0-build
parents
bd44245e
635a5641
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
113 additions
and
73 deletions
+113
-73
mysql-test/r/gis.result
mysql-test/r/gis.result
+16
-10
mysql-test/std_data/bad_gis_data.dat
mysql-test/std_data/bad_gis_data.dat
+1
-0
mysql-test/t/gis.test
mysql-test/t/gis.test
+14
-8
sql/field.cc
sql/field.cc
+4
-2
sql/field.h
sql/field.h
+65
-52
sql/sql_load.cc
sql/sql_load.cc
+13
-1
No files found.
mysql-test/r/gis.result
View file @
95564bfe
...
@@ -673,6 +673,22 @@ POINT(10 10)
...
@@ -673,6 +673,22 @@ POINT(10 10)
select (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))));
select (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))));
(asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))))
(asWKT(geomfromwkb((0x010100000000000000000024400000000000002440))))
POINT(10 10)
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 table t1 (s1 geometry not null,s2 char(100));
create trigger t1_bu before update on t1 for each row set new.s1 = null;
create trigger t1_bu before update on t1 for each row set new.s1 = null;
insert into t1 values (null,null);
insert into t1 values (null,null);
...
@@ -696,16 +712,6 @@ alter table t1 add primary key pti(pt);
...
@@ -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
ERROR 42000: BLOB/TEXT column 'pt' used in key specification without a key length
alter table t1 add primary key pti(pt(20));
alter table t1 add primary key pti(pt(20));
drop table t1;
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)');
create table t1 select GeomFromText('point(1 1)');
desc t1;
desc t1;
Field Type Null Key Default Extra
Field Type Null Key Default Extra
...
...
mysql-test/std_data/bad_gis_data.dat
0 → 100644
View file @
95564bfe
foo
mysql-test/t/gis.test
View file @
95564bfe
...
@@ -375,6 +375,20 @@ drop table t1;
...
@@ -375,6 +375,20 @@ drop table t1;
select
(
asWKT
(
geomfromwkb
((
0x000000000140240000000000004024000000000000
))));
select
(
asWKT
(
geomfromwkb
((
0x000000000140240000000000004024000000000000
))));
select
(
asWKT
(
geomfromwkb
((
0x010100000000000000000024400000000000002440
))));
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
# End of 4.1 tests
#
#
...
@@ -410,15 +424,7 @@ alter table t1 add primary key pti(pt);
...
@@ -410,15 +424,7 @@ alter table t1 add primary key pti(pt);
alter
table
t1
add
primary
key
pti
(
pt
(
20
));
alter
table
t1
add
primary
key
pti
(
pt
(
20
));
drop
table
t1
;
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)'
);
create
table
t1
select
GeomFromText
(
'point(1 1)'
);
desc
t1
;
desc
t1
;
drop
table
t1
;
drop
table
t1
;
sql/field.cc
View file @
95564bfe
...
@@ -1569,10 +1569,11 @@ void Field_null::sql_type(String &res) const
...
@@ -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
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
(
STRING_WITH_LEN
(
"0"
),
&
my_charset_bin
);
Field_decimal
::
store
(
STRING_WITH_LEN
(
"0"
),
&
my_charset_bin
);
return
0
;
}
}
void
Field_decimal
::
overflow
(
bool
negative
)
void
Field_decimal
::
overflow
(
bool
negative
)
...
@@ -2217,9 +2218,10 @@ Field_new_decimal::Field_new_decimal(uint32 len_arg,
...
@@ -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
);
store_value
(
&
decimal_zero
);
return
0
;
}
}
...
...
sql/field.h
View file @
95564bfe
...
@@ -150,7 +150,7 @@ class Field
...
@@ -150,7 +150,7 @@ class Field
*/
*/
virtual
uint32
data_length
(
const
char
*
from
)
{
return
pack_length
();
}
virtual
uint32
data_length
(
const
char
*
from
)
{
return
pack_length
();
}
virtual
uint32
sort_length
()
const
{
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
reset_fields
()
{}
virtual
void
set_default
()
virtual
void
set_default
()
{
{
...
@@ -450,7 +450,7 @@ class Field_decimal :public Field_real {
...
@@ -450,7 +450,7 @@ class Field_decimal :public Field_real {
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
,
bool
unsigned_val
);
int
store
(
longlong
nr
,
bool
unsigned_val
);
...
@@ -490,7 +490,7 @@ class Field_new_decimal :public Field_num {
...
@@ -490,7 +490,7 @@ class Field_new_decimal :public Field_num {
enum_field_types
type
()
const
{
return
FIELD_TYPE_NEWDECIMAL
;}
enum_field_types
type
()
const
{
return
FIELD_TYPE_NEWDECIMAL
;}
enum
ha_base_keytype
key_type
()
const
{
return
HA_KEYTYPE_BINARY
;
}
enum
ha_base_keytype
key_type
()
const
{
return
HA_KEYTYPE_BINARY
;
}
Item_result
result_type
()
const
{
return
DECIMAL_RESULT
;
}
Item_result
result_type
()
const
{
return
DECIMAL_RESULT
;
}
void
reset
(
void
);
int
reset
(
void
);
bool
store_value
(
const
my_decimal
*
decimal_value
);
bool
store_value
(
const
my_decimal
*
decimal_value
);
void
set_value_on_overflow
(
my_decimal
*
decimal_value
,
bool
sign
);
void
set_value_on_overflow
(
my_decimal
*
decimal_value
,
bool
sign
);
int
store
(
const
char
*
to
,
uint
length
,
CHARSET_INFO
*
charset
);
int
store
(
const
char
*
to
,
uint
length
,
CHARSET_INFO
*
charset
);
...
@@ -530,7 +530,7 @@ class Field_tiny :public Field_num {
...
@@ -530,7 +530,7 @@ class Field_tiny :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
,
bool
unsigned_val
);
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
);
double
val_real
(
void
);
longlong
val_int
(
void
);
longlong
val_int
(
void
);
String
*
val_str
(
String
*
,
String
*
);
String
*
val_str
(
String
*
,
String
*
);
...
@@ -566,7 +566,7 @@ class Field_short :public Field_num {
...
@@ -566,7 +566,7 @@ class Field_short :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
,
bool
unsigned_val
);
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
);
double
val_real
(
void
);
longlong
val_int
(
void
);
longlong
val_int
(
void
);
String
*
val_str
(
String
*
,
String
*
);
String
*
val_str
(
String
*
,
String
*
);
...
@@ -597,7 +597,7 @@ class Field_medium :public Field_num {
...
@@ -597,7 +597,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
,
bool
unsigned_val
);
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
);
double
val_real
(
void
);
longlong
val_int
(
void
);
longlong
val_int
(
void
);
String
*
val_str
(
String
*
,
String
*
);
String
*
val_str
(
String
*
,
String
*
);
...
@@ -633,7 +633,7 @@ class Field_long :public Field_num {
...
@@ -633,7 +633,7 @@ class Field_long :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
,
bool
unsigned_val
);
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
);
double
val_real
(
void
);
longlong
val_int
(
void
);
longlong
val_int
(
void
);
bool
send_binary
(
Protocol
*
protocol
);
bool
send_binary
(
Protocol
*
protocol
);
...
@@ -671,7 +671,11 @@ class Field_longlong :public Field_num {
...
@@ -671,7 +671,11 @@ class Field_longlong :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
,
bool
unsigned_val
);
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
);
double
val_real
(
void
);
longlong
val_int
(
void
);
longlong
val_int
(
void
);
String
*
val_str
(
String
*
,
String
*
);
String
*
val_str
(
String
*
,
String
*
);
...
@@ -707,7 +711,7 @@ class Field_float :public Field_real {
...
@@ -707,7 +711,7 @@ class Field_float :public Field_real {
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
,
bool
unsigned_val
);
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
);
double
val_real
(
void
);
longlong
val_int
(
void
);
longlong
val_int
(
void
);
String
*
val_str
(
String
*
,
String
*
);
String
*
val_str
(
String
*
,
String
*
);
...
@@ -741,7 +745,7 @@ class Field_double :public Field_real {
...
@@ -741,7 +745,7 @@ class Field_double :public Field_real {
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
,
bool
unsigned_val
);
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
);
double
val_real
(
void
);
longlong
val_int
(
void
);
longlong
val_int
(
void
);
String
*
val_str
(
String
*
,
String
*
);
String
*
val_str
(
String
*
,
String
*
);
...
@@ -771,7 +775,7 @@ class Field_null :public Field_str {
...
@@ -771,7 +775,7 @@ class Field_null :public Field_str {
int
store
(
double
nr
)
{
null
[
0
]
=
1
;
return
0
;
}
int
store
(
double
nr
)
{
null
[
0
]
=
1
;
return
0
;
}
int
store
(
longlong
nr
,
bool
unsigned_val
)
{
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
;
}
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
;}
double
val_real
(
void
)
{
return
0.0
;}
longlong
val_int
(
void
)
{
return
0
;}
longlong
val_int
(
void
)
{
return
0
;}
my_decimal
*
val_decimal
(
my_decimal
*
)
{
return
0
;
}
my_decimal
*
val_decimal
(
my_decimal
*
)
{
return
0
;
}
...
@@ -801,7 +805,7 @@ class Field_timestamp :public Field_str {
...
@@ -801,7 +805,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
,
bool
unsigned_val
);
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
);
double
val_real
(
void
);
longlong
val_int
(
void
);
longlong
val_int
(
void
);
String
*
val_str
(
String
*
,
String
*
);
String
*
val_str
(
String
*
,
String
*
);
...
@@ -880,7 +884,7 @@ class Field_date :public Field_str {
...
@@ -880,7 +884,7 @@ class Field_date :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
,
bool
unsigned_val
);
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
);
double
val_real
(
void
);
longlong
val_int
(
void
);
longlong
val_int
(
void
);
String
*
val_str
(
String
*
,
String
*
);
String
*
val_str
(
String
*
,
String
*
);
...
@@ -909,7 +913,7 @@ class Field_newdate :public Field_str {
...
@@ -909,7 +913,7 @@ class Field_newdate :public Field_str {
int
store
(
double
nr
);
int
store
(
double
nr
);
int
store
(
longlong
nr
,
bool
unsigned_val
);
int
store
(
longlong
nr
,
bool
unsigned_val
);
int
store_time
(
TIME
*
ltime
,
timestamp_type
type
);
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
);
double
val_real
(
void
);
longlong
val_int
(
void
);
longlong
val_int
(
void
);
String
*
val_str
(
String
*
,
String
*
);
String
*
val_str
(
String
*
,
String
*
);
...
@@ -944,7 +948,7 @@ class Field_time :public Field_str {
...
@@ -944,7 +948,7 @@ class Field_time :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
,
bool
unsigned_val
);
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
);
double
val_real
(
void
);
longlong
val_int
(
void
);
longlong
val_int
(
void
);
String
*
val_str
(
String
*
,
String
*
);
String
*
val_str
(
String
*
,
String
*
);
...
@@ -982,7 +986,11 @@ class Field_datetime :public Field_str {
...
@@ -982,7 +986,11 @@ class Field_datetime :public Field_str {
int
store
(
double
nr
);
int
store
(
double
nr
);
int
store
(
longlong
nr
,
bool
unsigned_val
);
int
store
(
longlong
nr
,
bool
unsigned_val
);
int
store_time
(
TIME
*
ltime
,
timestamp_type
type
);
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
);
double
val_real
(
void
);
longlong
val_int
(
void
);
longlong
val_int
(
void
);
String
*
val_str
(
String
*
,
String
*
);
String
*
val_str
(
String
*
,
String
*
);
...
@@ -1025,7 +1033,11 @@ class Field_string :public Field_longstr {
...
@@ -1025,7 +1033,11 @@ class Field_string :public Field_longstr {
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
)
{
charset
()
->
cset
->
fill
(
charset
(),
ptr
,
field_length
,
' '
);
return
0
;
}
int
store
(
const
char
*
to
,
uint
length
,
CHARSET_INFO
*
charset
);
int
store
(
const
char
*
to
,
uint
length
,
CHARSET_INFO
*
charset
);
int
store
(
longlong
nr
,
bool
unsigned_val
);
int
store
(
longlong
nr
,
bool
unsigned_val
);
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 */
...
@@ -1082,7 +1094,7 @@ class Field_varstring :public Field_longstr {
...
@@ -1082,7 +1094,7 @@ class Field_varstring :public Field_longstr {
enum_field_types
type
()
const
{
return
MYSQL_TYPE_VARCHAR
;
}
enum_field_types
type
()
const
{
return
MYSQL_TYPE_VARCHAR
;
}
enum
ha_base_keytype
key_type
()
const
;
enum
ha_base_keytype
key_type
()
const
;
bool
zero_pack
()
const
{
return
0
;
}
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
pack_length
()
const
{
return
(
uint32
)
field_length
+
length_bytes
;
}
uint32
key_length
()
const
{
return
(
uint32
)
field_length
;
}
uint32
key_length
()
const
{
return
(
uint32
)
field_length
;
}
uint32
sort_length
()
const
uint32
sort_length
()
const
...
@@ -1183,7 +1195,7 @@ class Field_blob :public Field_longstr {
...
@@ -1183,7 +1195,7 @@ class Field_blob :public Field_longstr {
{
{
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
)
...
@@ -1264,6 +1276,7 @@ class Field_geom :public Field_blob {
...
@@ -1264,6 +1276,7 @@ class Field_geom :public Field_blob {
int
store_decimal
(
const
my_decimal
*
);
int
store_decimal
(
const
my_decimal
*
);
void
get_key_image
(
char
*
buff
,
uint
length
,
imagetype
type
);
void
get_key_image
(
char
*
buff
,
uint
length
,
imagetype
type
);
uint
size_of
()
const
{
return
sizeof
(
*
this
);
}
uint
size_of
()
const
{
return
sizeof
(
*
this
);
}
int
reset
(
void
)
{
return
!
maybe_null
();
}
};
};
#endif
/*HAVE_SPATIAL*/
#endif
/*HAVE_SPATIAL*/
...
@@ -1292,7 +1305,7 @@ class Field_enum :public Field_str {
...
@@ -1292,7 +1305,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
,
bool
unsigned_val
);
int
store
(
longlong
nr
,
bool
unsigned_val
);
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
*
);
...
@@ -1353,7 +1366,7 @@ class Field_bit :public Field {
...
@@ -1353,7 +1366,7 @@ class Field_bit :public Field {
uint32
max_length
()
{
return
field_length
;
}
uint32
max_length
()
{
return
field_length
;
}
uint
size_of
()
const
{
return
sizeof
(
*
this
);
}
uint
size_of
()
const
{
return
sizeof
(
*
this
);
}
Item_result
result_type
()
const
{
return
INT_RESULT
;
}
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
(
const
char
*
to
,
uint
length
,
CHARSET_INFO
*
charset
);
int
store
(
double
nr
);
int
store
(
double
nr
);
int
store
(
longlong
nr
,
bool
unsigned_val
);
int
store
(
longlong
nr
,
bool
unsigned_val
);
...
...
sql/sql_load.cc
View file @
95564bfe
...
@@ -696,7 +696,12 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list,
...
@@ -696,7 +696,12 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list,
if
(
item
->
type
()
==
Item
::
FIELD_ITEM
)
if
(
item
->
type
()
==
Item
::
FIELD_ITEM
)
{
{
Field
*
field
=
((
Item_field
*
)
item
)
->
field
;
Field
*
field
=
((
Item_field
*
)
item
)
->
field
;
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
==
table
->
next_number_field
)
if
(
field
==
table
->
next_number_field
)
table
->
auto_increment_field_not_null
=
TRUE
;
table
->
auto_increment_field_not_null
=
TRUE
;
...
@@ -745,6 +750,13 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list,
...
@@ -745,6 +750,13 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list,
{
{
if
(
item
->
type
()
==
Item
::
FIELD_ITEM
)
if
(
item
->
type
()
==
Item
::
FIELD_ITEM
)
{
{
Field
*
field
=
((
Item_field
*
)
item
)
->
field
;
if
(
field
->
reset
())
{
my_error
(
ER_WARN_NULL_TO_NOTNULL
,
MYF
(
0
),
field
->
field_name
,
thd
->
row_count
);
DBUG_RETURN
(
1
);
}
/*
/*
QQ: We probably should not throw warning for each field.
QQ: We probably should not throw warning for each field.
But how about intention to always have the same number
But how about intention to always have the same number
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment