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
52e66d7c
Commit
52e66d7c
authored
Dec 12, 2006
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge mysql.com:/home/gluh/MySQL/Merge/5.0
into mysql.com:/home/gluh/MySQL/Merge/5.0-opt
parents
1e8739c3
c067aa58
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 @
52e66d7c
...
...
@@ -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
...
...
mysql-test/std_data/bad_gis_data.dat
0 → 100644
View file @
52e66d7c
foo
mysql-test/t/gis.test
View file @
52e66d7c
...
...
@@ -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
;
sql/field.cc
View file @
52e66d7c
...
...
@@ -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
;
}
...
...
sql/field.h
View file @
52e66d7c
...
...
@@ -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
);
...
...
sql/sql_load.cc
View file @
52e66d7c
...
...
@@ -696,7 +696,12 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list,
if
(
item
->
type
()
==
Item
::
FIELD_ITEM
)
{
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
();
if
(
field
==
table
->
next_number_field
)
table
->
auto_increment_field_not_null
=
TRUE
;
...
...
@@ -745,6 +750,13 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list,
{
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.
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