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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
d9be8ed9
Commit
d9be8ed9
authored
Oct 05, 2007
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into mysql.com:/home/hf/work/30286/my50-30286
parents
a2d88511
071e55af
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
91 additions
and
15 deletions
+91
-15
myisam/rt_index.c
myisam/rt_index.c
+5
-13
myisam/rt_mbr.c
myisam/rt_mbr.c
+4
-1
mysql-test/r/gis-rtree.result
mysql-test/r/gis-rtree.result
+31
-0
mysql-test/r/gis.result
mysql-test/r/gis.result
+6
-0
mysql-test/t/gis-rtree.test
mysql-test/t/gis-rtree.test
+36
-0
mysql-test/t/gis.test
mysql-test/t/gis.test
+8
-0
sql/gstream.cc
sql/gstream.cc
+1
-1
No files found.
myisam/rt_index.c
View file @
d9be8ed9
...
...
@@ -483,15 +483,16 @@ static uchar *rtree_pick_key(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
uint
key_length
,
uchar
*
page_buf
,
uint
nod_flag
)
{
double
increase
;
double
best_incr
=
DBL_MAX
;
double
best_incr
;
double
area
;
double
best_area
;
uchar
*
best_key
;
uchar
*
best_key
=
NULL
;
uchar
*
k
=
rt_PAGE_FIRST_KEY
(
page_buf
,
nod_flag
);
uchar
*
last
=
rt_PAGE_END
(
page_buf
);
LINT_INIT
(
best_area
);
LINT_INIT
(
best_key
);
LINT_INIT
(
best_incr
);
for
(;
k
<
last
;
k
=
rt_PAGE_NEXT_KEY
(
k
,
key_length
,
nod_flag
))
{
...
...
@@ -500,22 +501,13 @@ static uchar *rtree_pick_key(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
&
area
))
==
-
1
.
0
)
return
NULL
;
/* The following should be safe, even if we compare doubles */
if
(
increase
<
best_incr
)
if
(
!
best_key
||
increase
<
best_incr
||
((
increase
==
best_incr
)
&&
(
area
<
best_area
)))
{
best_key
=
k
;
best_area
=
area
;
best_incr
=
increase
;
}
else
{
/* The following should be safe, even if we compare doubles */
if
((
increase
==
best_incr
)
&&
(
area
<
best_area
))
{
best_key
=
k
;
best_area
=
area
;
best_incr
=
increase
;
}
}
}
return
best_key
;
}
...
...
myisam/rt_mbr.c
View file @
d9be8ed9
...
...
@@ -523,7 +523,10 @@ double rtree_overlapping_area(HA_KEYSEG *keyseg, uchar* a, uchar* b,
}
/*
Calculates MBR_AREA(a+b) - MBR_AREA(a)
Calculates MBR_AREA(a+b) - MBR_AREA(a)
Note: when 'a' and 'b' objects are far from each other,
the area increase can be really big, so this function
can return 'inf' as a result.
*/
double
rtree_area_increase
(
HA_KEYSEG
*
keyseg
,
uchar
*
a
,
uchar
*
b
,
uint
key_length
,
double
*
ab_area
)
...
...
mysql-test/r/gis-rtree.result
View file @
d9be8ed9
...
...
@@ -1425,6 +1425,37 @@ CHECK TABLE t1 EXTENDED;
Table Op Msg_type Msg_text
test.t1 check status OK
DROP TABLE t1;
create table t1 (a geometry not null, spatial index(a));
insert into t1 values (PointFromWKB(POINT(1.1517219314031e+164, 131072)));
insert into t1 values (PointFromWKB(POINT(9.1248812352444e+192, 2.9740338169556e+284)));
insert into t1 values (PointFromWKB(POINT(4.7783097267365e-299, -0)));
insert into t1 values (PointFromWKB(POINT(1.49166814624e-154, 2.0880974297595e-53)));
insert into t1 values (PointFromWKB(POINT(4.0917382598702e+149, 1.2024538023802e+111)));
insert into t1 values (PointFromWKB(POINT(2.0349165139404e+236, 2.9993936277913e-241)));
insert into t1 values (PointFromWKB(POINT(2.5243548967072e-29, 1.2024538023802e+111)));
insert into t1 values (PointFromWKB(POINT(0, 6.9835074892995e-251)));
insert into t1 values (PointFromWKB(POINT(2.0880974297595e-53, 3.1050361846014e+231)));
insert into t1 values (PointFromWKB(POINT(2.8728483499323e-188, 2.4600631144627e+260)));
insert into t1 values (PointFromWKB(POINT(3.0517578125e-05, 2.0349165139404e+236)));
insert into t1 values (PointFromWKB(POINT(1.1517219314031e+164, 1.1818212630766e-125)));
insert into t1 values (PointFromWKB(POINT(2.481040258324e-265, 5.7766220027675e-275)));
insert into t1 values (PointFromWKB(POINT(2.0880974297595e-53, 2.5243548967072e-29)));
insert into t1 values (PointFromWKB(POINT(5.7766220027675e-275, 9.9464647281957e+86)));
insert into t1 values (PointFromWKB(POINT(2.2181357552967e+130, 3.7857669957337e-270)));
insert into t1 values (PointFromWKB(POINT(4.5767114681874e-246, 3.6893488147419e+19)));
insert into t1 values (PointFromWKB(POINT(4.5767114681874e-246, 3.7537584144024e+255)));
insert into t1 values (PointFromWKB(POINT(3.7857669957337e-270, 1.8033161362863e-130)));
insert into t1 values (PointFromWKB(POINT(0, 5.8774717541114e-39)));
insert into t1 values (PointFromWKB(POINT(1.1517219314031e+164, 2.2761049594727e-159)));
insert into t1 values (PointFromWKB(POINT(6.243497100632e+144, 3.7857669957337e-270)));
insert into t1 values (PointFromWKB(POINT(3.7857669957337e-270, 2.6355494858076e-82)));
insert into t1 values (PointFromWKB(POINT(2.0349165139404e+236, 3.8518598887745e-34)));
insert into t1 values (PointFromWKB(POINT(4.6566128730774e-10, 2.0880974297595e-53)));
insert into t1 values (PointFromWKB(POINT(2.0880974297595e-53, 1.8827498946116e-183)));
insert into t1 values (PointFromWKB(POINT(1.8033161362863e-130, 9.1248812352444e+192)));
insert into t1 values (PointFromWKB(POINT(4.7783097267365e-299, 2.2761049594727e-159)));
insert into t1 values (PointFromWKB(POINT(1.94906280228e+289, 1.2338789709327e-178)));
drop table t1;
CREATE TABLE t1(foo GEOMETRY NOT NULL, SPATIAL INDEX(foo) );
INSERT INTO t1(foo) VALUES (NULL);
ERROR 23000: Column 'foo' cannot be null
...
...
mysql-test/r/gis.result
View file @
d9be8ed9
...
...
@@ -736,6 +736,12 @@ SELECT * FROM t1;
a
NULL
DROP TABLE t1;
CREATE TABLE `t1` ( `col9` set('a'), `col89` date);
INSERT INTO `t1` VALUES ('','0000-00-00');
select geomfromtext(col9,col89) as a from t1;
a
NULL
DROP TABLE t1;
End of 4.1 tests
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;
...
...
mysql-test/t/gis-rtree.test
View file @
d9be8ed9
...
...
@@ -797,6 +797,42 @@ UPDATE t1 set spatial_point=GeomFromText('POINT(41 46)') where c1 like 'f%';
CHECK
TABLE
t1
EXTENDED
;
DROP
TABLE
t1
;
#
# Bug #30286 spatial index cause corruption and server crash!
#
create
table
t1
(
a
geometry
not
null
,
spatial
index
(
a
));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
1.1517219314031e+164
,
131072
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
9.1248812352444e+192
,
2.9740338169556e+284
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
4.7783097267365e-299
,
-
0
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
1.49166814624e-154
,
2.0880974297595e-53
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
4.0917382598702e+149
,
1.2024538023802e+111
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
2.0349165139404e+236
,
2.9993936277913e-241
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
2.5243548967072e-29
,
1.2024538023802e+111
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
0
,
6.9835074892995e-251
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
2.0880974297595e-53
,
3.1050361846014e+231
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
2.8728483499323e-188
,
2.4600631144627e+260
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
3.0517578125e-05
,
2.0349165139404e+236
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
1.1517219314031e+164
,
1.1818212630766e-125
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
2.481040258324e-265
,
5.7766220027675e-275
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
2.0880974297595e-53
,
2.5243548967072e-29
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
5.7766220027675e-275
,
9.9464647281957e+86
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
2.2181357552967e+130
,
3.7857669957337e-270
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
4.5767114681874e-246
,
3.6893488147419e+19
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
4.5767114681874e-246
,
3.7537584144024e+255
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
3.7857669957337e-270
,
1.8033161362863e-130
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
0
,
5.8774717541114e-39
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
1.1517219314031e+164
,
2.2761049594727e-159
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
6.243497100632e+144
,
3.7857669957337e-270
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
3.7857669957337e-270
,
2.6355494858076e-82
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
2.0349165139404e+236
,
3.8518598887745e-34
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
4.6566128730774e-10
,
2.0880974297595e-53
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
2.0880974297595e-53
,
1.8827498946116e-183
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
1.8033161362863e-130
,
9.1248812352444e+192
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
4.7783097267365e-299
,
2.2761049594727e-159
)));
insert
into
t1
values
(
PointFromWKB
(
POINT
(
1.94906280228e+289
,
1.2338789709327e-178
)));
drop
table
t1
;
# End of 4.1 tests
#
...
...
mysql-test/t/gis.test
View file @
d9be8ed9
...
...
@@ -431,6 +431,14 @@ INSERT INTO t1 VALUES (NULL);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
#
# Bug #30955 geomfromtext() crasher
#
CREATE
TABLE
`t1`
(
`col9`
set
(
'a'
),
`col89`
date
);
INSERT
INTO
`t1`
VALUES
(
''
,
'0000-00-00'
);
select
geomfromtext
(
col9
,
col89
)
as
a
from
t1
;
DROP
TABLE
t1
;
--
echo
End
of
4.1
tests
#
...
...
sql/gstream.cc
View file @
d9be8ed9
...
...
@@ -44,7 +44,7 @@ bool Gis_read_stream::get_next_word(LEX_STRING *res)
skip_space
();
res
->
str
=
(
char
*
)
m_cur
;
/* The following will also test for \0 */
if
(
!
my_isvar_start
(
&
my_charset_bin
,
*
m_cur
))
if
(
(
m_cur
>=
m_limit
)
||
!
my_isvar_start
(
&
my_charset_bin
,
*
m_cur
))
return
1
;
/*
...
...
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