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
c6d9cf1b
Commit
c6d9cf1b
authored
Dec 12, 2006
by
gluh@gluh.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge mysql.com:/home/gluh/MySQL/Merge/5.1
into mysql.com:/home/gluh/MySQL/Merge/5.1-opt
parents
c24381bd
883aa8d9
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
135 additions
and
76 deletions
+135
-76
mysql-test/r/gis.result
mysql-test/r/gis.result
+16
-10
mysql-test/r/subselect.result
mysql-test/r/subselect.result
+6
-0
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
mysql-test/t/subselect.test
mysql-test/t/subselect.test
+8
-0
sql/field.cc
sql/field.cc
+4
-2
sql/field.h
sql/field.h
+64
-51
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+2
-1
sql/sql_load.cc
sql/sql_load.cc
+13
-1
storage/archive/ha_archive.cc
storage/archive/ha_archive.cc
+7
-3
No files found.
mysql-test/r/gis.result
View file @
c6d9cf1b
...
@@ -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 16777216 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 set to default value; NULL supplied to 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);
...
@@ -697,16 +713,6 @@ alter table t1 add primary key pti(pt);
...
@@ -697,16 +713,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 16777216 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/r/subselect.result
View file @
c6d9cf1b
...
@@ -3592,3 +3592,9 @@ FROM t1) t;
...
@@ -3592,3 +3592,9 @@ FROM t1) t;
COUNT(*)
COUNT(*)
3000
3000
DROP TABLE t1,t2;
DROP TABLE t1,t2;
CREATE TABLE t1 (s1 char(1));
INSERT INTO t1 VALUES ('a');
SELECT * FROM t1 WHERE _utf8'a' = ANY (SELECT s1 FROM t1);
s1
a
DROP TABLE t1;
mysql-test/std_data/bad_gis_data.dat
0 → 100644
View file @
c6d9cf1b
foo
mysql-test/t/gis.test
View file @
c6d9cf1b
...
@@ -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
;
mysql-test/t/subselect.test
View file @
c6d9cf1b
...
@@ -2496,3 +2496,11 @@ SELECT SQL_NO_CACHE COUNT(*)
...
@@ -2496,3 +2496,11 @@ SELECT SQL_NO_CACHE COUNT(*)
FROM
t1
)
t
;
FROM
t1
)
t
;
DROP
TABLE
t1
,
t2
;
DROP
TABLE
t1
,
t2
;
#
# Bug#20835 (literal string with =any values)
#
CREATE
TABLE
t1
(
s1
char
(
1
));
INSERT
INTO
t1
VALUES
(
'a'
);
SELECT
*
FROM
t1
WHERE
_utf8
'a'
=
ANY
(
SELECT
s1
FROM
t1
);
DROP
TABLE
t1
;
sql/field.cc
View file @
c6d9cf1b
...
@@ -1609,10 +1609,11 @@ void Field_null::sql_type(String &res) const
...
@@ -1609,10 +1609,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
)
...
@@ -2257,9 +2258,10 @@ Field_new_decimal::Field_new_decimal(uint32 len_arg,
...
@@ -2257,9 +2258,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 @
c6d9cf1b
...
@@ -155,7 +155,7 @@ class Field
...
@@ -155,7 +155,7 @@ class Field
*/
*/
virtual
uint32
data_length
()
{
return
pack_length
();
}
virtual
uint32
data_length
()
{
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
()
{
{
...
@@ -521,10 +521,10 @@ class Field_decimal :public Field_real {
...
@@ -521,10 +521,10 @@ 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
);
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
*
);
...
@@ -559,7 +559,7 @@ class Field_new_decimal :public Field_num {
...
@@ -559,7 +559,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
);
...
@@ -596,10 +596,10 @@ class Field_tiny :public Field_num {
...
@@ -596,10 +596,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
,
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
*
);
...
@@ -631,10 +631,10 @@ class Field_short :public Field_num {
...
@@ -631,10 +631,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
,
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
*
);
...
@@ -661,10 +661,10 @@ class Field_medium :public Field_num {
...
@@ -661,10 +661,10 @@ class Field_medium :public Field_num {
enum_field_types
type
()
const
{
return
FIELD_TYPE_INT24
;}
enum_field_types
type
()
const
{
return
FIELD_TYPE_INT24
;}
enum
ha_base_keytype
key_type
()
const
enum
ha_base_keytype
key_type
()
const
{
return
unsigned_flag
?
HA_KEYTYPE_UINT24
:
HA_KEYTYPE_INT24
;
}
{
return
unsigned_flag
?
HA_KEYTYPE_UINT24
:
HA_KEYTYPE_INT24
;
}
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
*
);
...
@@ -696,10 +696,10 @@ class Field_long :public Field_num {
...
@@ -696,10 +696,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
,
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
);
...
@@ -733,10 +733,14 @@ class Field_longlong :public Field_num {
...
@@ -733,10 +733,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
,
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
*
);
...
@@ -768,10 +772,10 @@ class Field_float :public Field_real {
...
@@ -768,10 +772,10 @@ class Field_float :public Field_real {
{}
{}
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
,
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
*
);
...
@@ -804,7 +808,7 @@ class Field_double :public Field_real {
...
@@ -804,7 +808,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
*
);
...
@@ -831,10 +835,10 @@ class Field_null :public Field_str {
...
@@ -831,10 +835,10 @@ 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
,
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
;
}
...
@@ -863,7 +867,7 @@ class Field_timestamp :public Field_str {
...
@@ -863,7 +867,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
*
);
...
@@ -938,10 +942,10 @@ class Field_date :public Field_str {
...
@@ -938,10 +942,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
,
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
*
);
...
@@ -971,7 +975,7 @@ class Field_newdate :public Field_str {
...
@@ -971,7 +975,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
*
);
...
@@ -1003,10 +1007,10 @@ class Field_time :public Field_str {
...
@@ -1003,10 +1007,10 @@ class Field_time :public Field_str {
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_time
(
TIME
*
ltime
,
timestamp_type
type
);
int
store_time
(
TIME
*
ltime
,
timestamp_type
type
);
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
*
);
...
@@ -1044,7 +1048,11 @@ class Field_datetime :public Field_str {
...
@@ -1044,7 +1048,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
*
);
...
@@ -1087,9 +1095,13 @@ class Field_string :public Field_longstr {
...
@@ -1087,9 +1095,13 @@ 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
)
int
store
(
const
char
*
to
,
uint
length
,
CHARSET_INFO
*
charset
);
{
int
store
(
longlong
nr
,
bool
unsigned_val
);
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 */
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
);
...
@@ -1141,7 +1153,7 @@ class Field_varstring :public Field_longstr {
...
@@ -1141,7 +1153,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
...
@@ -1249,7 +1261,7 @@ class Field_blob :public Field_longstr {
...
@@ -1249,7 +1261,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
)
...
@@ -1333,6 +1345,7 @@ class Field_geom :public Field_blob {
...
@@ -1333,6 +1345,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*/
...
@@ -1434,7 +1447,7 @@ class Field_bit :public Field {
...
@@ -1434,7 +1447,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/item_cmpfunc.cc
View file @
c6d9cf1b
...
@@ -797,7 +797,8 @@ bool Item_in_optimizer::fix_left(THD *thd, Item **ref)
...
@@ -797,7 +797,8 @@ bool Item_in_optimizer::fix_left(THD *thd, Item **ref)
}
}
not_null_tables_cache
=
args
[
0
]
->
not_null_tables
();
not_null_tables_cache
=
args
[
0
]
->
not_null_tables
();
with_sum_func
=
args
[
0
]
->
with_sum_func
;
with_sum_func
=
args
[
0
]
->
with_sum_func
;
const_item_cache
=
args
[
0
]
->
const_item
();
if
((
const_item_cache
=
args
[
0
]
->
const_item
()))
cache
->
store
(
args
[
0
]);
return
0
;
return
0
;
}
}
...
...
sql/sql_load.cc
View file @
c6d9cf1b
...
@@ -710,7 +710,12 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list,
...
@@ -710,7 +710,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
;
...
@@ -759,6 +764,13 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list,
...
@@ -759,6 +764,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
...
...
storage/archive/ha_archive.cc
View file @
c6d9cf1b
...
@@ -458,7 +458,7 @@ ARCHIVE_SHARE *ha_archive::get_share(const char *table_name,
...
@@ -458,7 +458,7 @@ ARCHIVE_SHARE *ha_archive::get_share(const char *table_name,
Since we now possibly no real_path, we will use it instead if it exists.
Since we now possibly no real_path, we will use it instead if it exists.
*/
*/
if
(
*
share
->
real_path
)
if
(
*
share
->
real_path
)
fn_format
(
share
->
data_file_name
,
share
->
real_path
,
""
,
ARZ
,
fn_format
(
share
->
data_file_name
,
table_name
,
share
->
real_path
,
ARZ
,
MY_REPLACE_EXT
|
MY_UNPACK_FILENAME
);
MY_REPLACE_EXT
|
MY_UNPACK_FILENAME
);
VOID
(
my_hash_insert
(
&
archive_open_tables
,
(
byte
*
)
share
));
VOID
(
my_hash_insert
(
&
archive_open_tables
,
(
byte
*
)
share
));
thr_lock_init
(
&
share
->
lock
);
thr_lock_init
(
&
share
->
lock
);
...
@@ -686,9 +686,13 @@ int ha_archive::create(const char *name, TABLE *table_arg,
...
@@ -686,9 +686,13 @@ int ha_archive::create(const char *name, TABLE *table_arg,
goto
error
;
goto
error
;
}
}
/*
We reuse name_buff since it is available.
*/
write_meta_file
(
create_file
,
0
,
stats
.
auto_increment_value
,
0
,
write_meta_file
(
create_file
,
0
,
stats
.
auto_increment_value
,
0
,
(
char
*
)
create_info
->
data_file_name
,
(
create_info
->
data_file_name
&&
FALSE
);
dirname_part
(
name_buff
,
(
char
*
)
create_info
->
data_file_name
))
?
name_buff
:
0
,
FALSE
);
my_close
(
create_file
,
MYF
(
0
));
my_close
(
create_file
,
MYF
(
0
));
/*
/*
...
...
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