[MDEV-14057] InnoDB GIS tests fail Created: 2017-10-12  Updated: 2020-03-31  Resolved: 2020-03-18

Status: Closed
Project: MariaDB Server
Component/s: GIS, Storage Engine - InnoDB, Tests
Affects Version/s: 10.2, 10.3
Fix Version/s: 10.2.32, 10.3.23, 10.4.13, 10.5.3

Type: Bug Priority: Major
Reporter: Jan Lindström (Inactive) Assignee: Alexey Botchkov
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Duplicate
is duplicated by MDEV-14406 Review and fix tests from innodb_gis ... Closed
Relates
relates to MDEV-14059 InnoDB assertion failure offset >= ((... Closed
relates to MDEV-21924 Clean up InnoDB GIS record comparison Closed
relates to MDEV-15284 innodb_gis.rtree_concurrent_srch fail... Confirmed
Sprint: 10.1.31, 10.2.13, 10.2.14

 Description   

You need to checkout branch bb-10.2-MDEV-13626. Following test that are now disabled fail on innodb_gis suite:

  • gis_split_inf
  • row_format
  • rtree_estimate
  • rtree_multi_pk
  • tree_search
  • point_big
  • geometry
  • bug17057168
  • bug16236208
  • bug16266012
  • rtree_search :
  • rtree_old


 Comments   
Comment by Jan Lindström (Inactive) [ 2017-10-12 ]

innodb_gis.gis_split_inf 'innodb'        [ fail ]
        Test ended at 2017-10-12 16:36:11
 
CURRENT_TEST: innodb_gis.gis_split_inf
mysqltest: At line 18: query 'insert  into  t1(a)  values( geometrycollection(multipoint(point(-3,7), point(4,-3), point(-6,-2), point(-9,1)), polygon(linestring(point(-17,-5), point(2,-8), point(-6,9), point(-9,19), point(-17,-5)), linestring(point(10,-1), point(15,-7), point(-13,6), point(10,-1))), multipolygon(polygon(linestring(point(69,-69), point(-90,-64), point(-17,4), point(47,-73), point(69,-69)), linestring(point(-35,-77), point(-35,-77)), linestring(point(95,-76), point(1.636688e+308,1.828723e+307), point(68719476740,536870916), point(95,-76)), linestring(point(-26,-85), point(-26,-85)), linestring(point(-53,57), point(-53,57)), linestring(point(-98,-64), point(79,-57), point(-98,-64)), linestring(point(-91,59), point(16,0), point(73,97), point(-35,-70), point(-91,59))))) )  ' succeeded - should have failed with errno 3037...
 
The result from queries just before the failure was:
create table t1(a geometrycollection not null,spatial key(a))engine=innodb;
insert into  t1(a)  values( geometrycollection(multipolygon(polygon(linestring(point(-14,98), point(-14,98)), linestring(point(-97,64), point(-70,99), point(-97,64)), linestring(point(143851215403059150000000000000000000000.000000,13040009882500140000000000000000000000.000000), point(-73,85), point(-88,-29)))), multipolygon(polygon(linestring(point(41,95), point(4294967298,2050)), linestring(point(-61,85), point(-75,93), point(14,-2), point(1,84), point(-61,85)), linestring(point(-62,52), point(39,5), point(-18,12), point(-62,52))), polygon(linestring(point(-77,1), point(66,61), point(-77,1)), linestring(point(18446744073709551615,1125899906842622), point(-72,49), point(24,-66), point(82,73), point(68,22))), polygon(linestring(point(1048576,17179869181), point(-18,95), point(-90,-3), point(-33,82), point(20,-85)), linestring(point(-43,-97), point(-7,-3), point(39,-82), point(-65,-58), point(-43,-97)), linestring(point(44,-34), point(-69,58), point(44,-34)), linestring(point(57,-13), point(-17,74), point(57,-13)), linestring(point(3,71), point(-58,81), point(3,71)), linestring(point(9,25), point(77,-71), point(8388607,67108864), point(46,46), point(9,25)), linestring(point(98,-82), point(98,-82))))) )  ;
Got one of the listed errors
insert into  t1(a)  values( geometrycollection(multilinestring(linestring(point(39,-60), point(-62,-11), point(-24,35), point(54,1)), linestring(point(-4,69), point(-22,-64), point(1.694824e+308,5.688896e+307), point(-33,-58), point(-64,-80), point(-15,-44), point(40,54)), linestring(point(-86,-54), point(11,41), point(-46,-38), point(-21,-8), point(10,70), point(-81,22), point(-46,-100)), linestring(point(-30,-48), point(50,58), point(-53,92), point(10,41), point(-46,-8)), linestring(point(-65,34), point(-92,93), point(-33,-74), point(75,-28)), linestring(point(25,-55), point(22,-10), point(-42,0), point(-86,-59), point(2,-37), point(63,-44), point(-55,-22)), linestring(point(28,0), point(-94,99), point(-32,-86)), linestring(point(9,-12), point(16,9), point(80,-73)), linestring(point(6,-55), point(83,-4)), linestring(point(-15,21), point(144115188075855876,16777212), point(-85,-31), point(-90,-50)), linestring(point(-33,33), point(21,90), point(-89,32)), linestring(point(16,24), point(73,-13), point(25,-48), point(71,52), point(-54,-78), point(-84,59), point(53,29)), linestring(point(-15,-81), point(83,43), point(-71,33), point(-8,0), point(84,-54), point(-35,38), point(-10,-50)), linestring(point(38,-50), point(20,-2), point(-57,-92)), linestring(point(5,-93), point(231601833467477080000000000000000000000.000000,51914987457169239000000000000000000000.000000), point(-94,62))), point(2,0)) )  ;
insert  into  t1(a)  values( geometrycollection(multilinestring(linestring(point(80,-15), point(65,-57), point(-59,16), point(22,-67)), linestring(point(20,-55), point(-38,-64), point(19,-53), point(-63,-36), point(56,-37)), linestring(point(27,-8), point(-85,-75), point(4398046511106,2251799813685245)), linestring(point(45,32), point(-79,46))), multilinestring(linestring(point(8,-4), point(40,-38), point(100,95), point(5,-80), point(82,88)), linestring(point(-14,30), point(-94,51), point(-16,-29), point(37,-97), point(-26,92)), linestring(point(32,34), point(83,-23), point(-55,57), point(-15,90), point(32,-50), point(-20,-73), point(77,28)), linestring(point(4,88), point(87,74), point(-67,-58)), linestring(point(5.660747e+307,6.385657e+307), point(-58,-15), point(1.172095e+308,1.448533e+308)), linestring(point(-21,-37), point(-52,79), point(-16,-76), point(-65,-94), point(36,7), point(37,74), point(100,-57)), linestring(point(-23,-82), point(-73,23), point(18,-34)), linestring(point(20,-51), point(93,62), point(-65,84)), linestring(point(-48,31), point(-69,-96)), linestring(point(-5,78), point(10,-99), point(36,-33)), linestring(point(-84,55), point(96,1), point(-98,-29), point(-15,81), point(-27,-6), point(58,-32), point(54,-16)), linestring(point(2,5), point(2199023255553,8192)), linestring(point(12,-78), point(-97,-83)), linestring(point(-74,79), point(35,-56), point(50,95)), linestring(point(28,16), point(-39,-40), point(48,-3)), linestring(point(2199023255550,-65539), point(62,-25), point(94,-62)), linestring(point(-74,83), point(-18,75), point(91,17), point(-11,-48), point(30,100)), linestring(point(57,-13), point(88,-45)), linestring(point(20,-64), point(-37,13), point(20,35))), point(-3,-4)) )  ;
insert  into  t1(a)  values( geometrycollection(multipolygon(polygon(linestring(point(-34,19), point(-25,92), point(61921390294166805000000000000000000000.000000,319674749161701840000000000000000000000.000000), point(56,50), point(-34,19)), linestring(point(-26,-58), point(99,-50), point(34,-20), point(-26,-58)), linestring(point(-42,45), point(-63,-7), point(5,-89), point(-97,36), point(-42,45)), linestring(point(94,11), point(-71,4), point(94,11)), linestring(point(16,25), point(4,-33), point(-45,-33), point(-64,-77), point(16,25)), linestring(point(19,45), point(36,45), point(-83,-96), point(19,45)), linestring(point(85,-31), point(-87,52), point(85,-31))), polygon(linestring(point(55,-88), point(63,-12), point(55,-88)), linestring(point(-49,10), point(-49,10)), linestring(point(-51,-32), point(-51,-32)))), multipolygon(polygon(linestring(point(-21,-8), point(66,-58), point(100,-27), point(-21,-8)), linestring(point(-29,-13), point(-29,-13))), polygon(linestring(point(91307574660224730000000000000000000000.000000,101214152547755520000000000000000000000.000000), point(89,64), point(77,87), point(66,29), point(-71,-53)), linestring(point(38,-78), point(-43,-90), point(37,20), point(81,65), point(38,-78))), polygon(linestring(point(51,0), point(-62,8), point(-11,22), point(51,0)), linestring(point(-4,-44), point(6,82), point(-19,-90), point(131,32)))), point(-4,-7)) )  ;
Got one of the listed errors
insert  into  t1(a)  values( geometrycollection(point(10,9), linestring(point(2305843009213693955,-1125899906842621), point(78,15)), multipoint(point(-1,3), point(4,-6))) )  ;
insert  into  t1(a)  values( geometrycollection(polygon(linestring(point(0,13), point(-12,5), point(0,13)), linestring(point(11,-2), point(6,6), point(20,-14), point(-3,-10), point(1.330588e+308,2.666476e+307)), linestring(point(16382,67), point(7,4)), linestring(point(2,7), point(-14,15), point(2,7)), linestring(point(-14,12), point(-8,-8), point(-17,-2), point(-14,12)), linestring(point(-20,-10), point(-8,-13), point(-19,-17), point(13,-3), point(-20,-10)), linestring(point(-5,13), point(7,-9), point(6,8), point(-5,13))), linestring(point(-87,19), point(-64,51), point(-16,12)), multipoint(point(-1,-10), point(2,-10), point(3.670354e+307,2.501459e+307))) )  ;
Got one of the listed errors
insert  into  t1(a)  values( geometrycollection(multipoint(point(-3,7), point(4,-3), point(-6,-2), point(-9,1)), polygon(linestring(point(-17,-5), point(2,-8), point(-6,9), point(-9,19), point(-17,-5)), linestring(point(10,-1), point(15,-7), point(-13,6), point(10,-1))), multipolygon(polygon(linestring(point(69,-69), point(-90,-64), point(-17,4), point(47,-73), point(69,-69)), linestring(point(-35,-77), point(-35,-77)), linestring(point(95,-76), point(1.636688e+308,1.828723e+307), point(68719476740,536870916), point(95,-76)), linestring(point(-26,-85), point(-26,-85)), linestring(point(-53,57), point(-53,57)), linestring(point(-98,-64), point(79,-57), point(-98,-64)), linestring(point(-91,59), point(16,0), point(73,97), point(-35,-70), point(-91,59))))) )  ;
 
 - saving '/dev/shm/log/innodb_gis.gis_split_inf-innodb/' to '/dev/shm/log/innodb_gis.gis_split_inf-innodb/'

Comment by Jan Lindström (Inactive) [ 2017-10-12 ]

innodb_gis.row_format '16k,innodb'       [ fail ]
        Test ended at 2017-10-12 16:45:17
 
CURRENT_TEST: innodb_gis.row_format
--- /home/jan/mysql/10.2-orig/mysql-test/suite/innodb_gis/r/row_format.result	2017-10-12 16:25:47.206903327 +0300
+++ /home/jan/mysql/10.2-orig/mysql-test/suite/innodb_gis/r/row_format.reject	2017-10-12 16:45:16.869871507 +0300
@@ -389,7 +389,7 @@
 DELETE FROM t1 WHERE MBRContains(@g1, t1.spatial_point);
 SELECT COUNT(*) FROM t1;
 COUNT(*)
-353
+0
 DROP TABLE t1;
 SET GLOBAL innodb_file_per_table=default;
 SET GLOBAL innodb_file_format=default;
@@ -786,7 +786,7 @@
 DELETE FROM t1 WHERE MBRContains(@g1, t1.spatial_point);
 SELECT COUNT(*) FROM t1;
 COUNT(*)
-353
+0
 DROP TABLE t1;
 SET GLOBAL innodb_file_per_table=default;
 SET GLOBAL innodb_file_format=default;
@@ -1183,7 +1183,7 @@
 DELETE FROM t1 WHERE MBRContains(@g1, t1.spatial_point);
 SELECT COUNT(*) FROM t1;
 COUNT(*)
-353
+0
 DROP TABLE t1;
 SET GLOBAL innodb_file_per_table=default;
 SET GLOBAL innodb_file_format=default;
@@ -1580,7 +1580,7 @@
 DELETE FROM t1 WHERE MBRContains(@g1, t1.spatial_point);
 SELECT COUNT(*) FROM t1;
 COUNT(*)
-353
+0
 DROP TABLE t1;
 SET GLOBAL innodb_file_per_table=default;
 SET GLOBAL innodb_file_format=default;
 
mysqltest: Result length mismatch
 
 - saving '/dev/shm/log/innodb_gis.row_format-16k,innodb/' to '/dev/shm/log/innodb_gis.row_format-16k,innodb/'
 
Only  1  of 4 completed.

Comment by Jan Lindström (Inactive) [ 2017-10-12 ]

innodb_gis.rtree_estimate 'innodb'       [ fail ]
        Test ended at 2017-10-12 16:47:00
 
CURRENT_TEST: innodb_gis.rtree_estimate
--- /home/jan/mysql/10.2-orig/mysql-test/suite/innodb_gis/r/rtree_estimate.result	2017-10-12 16:25:47.210903334 +0300
+++ /home/jan/mysql/10.2-orig/mysql-test/suite/innodb_gis/r/rtree_estimate.reject	2017-10-12 16:47:00.678100496 +0300
@@ -6,10 +6,8 @@
 SET @g2 = ST_GeomFromText('POLYGON((5 5, 20 5, 20 21, 5 21, 5 5))');
 SET @g3 = ST_GeomFromText('POLYGON((1.79769e+308 1.79769e+308, 20 5, -1.79769e+308 -1.79769e+308, 1.79769e+308 1.79769e+308))');
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRContains(g, @g1);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	ALL	g	NULL	NULL	NULL	1	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrcontains(`test`.`t1`.`g`,(@`g1`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	ALL	g	NULL	NULL	NULL	1	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1);
 ST_AsText(g)
 INSERT INTO t1 VALUES(@g1);
@@ -24,135 +22,105 @@
 Table	Op	Msg_type	Msg_text
 test.t1	analyze	status	OK
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRContains(g, @g1);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	range	g	g	34	NULL	1	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrcontains(`test`.`t1`.`g`,(@`g1`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	range	g	g	34	NULL	1	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1);
 ST_AsText(g)
 POINT(10 10)
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRDisjoint(g, @g1);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	range	g	g	34	NULL	2	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrdisjoint(`test`.`t1`.`g`,(@`g1`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	range	g	g	34	NULL	2	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1);
 ST_AsText(g)
 POINT(10 10)
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBREquals(g, @g1);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	range	g	g	34	NULL	1	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrequals(`test`.`t1`.`g`,(@`g1`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	range	g	g	34	NULL	1	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1);
 ST_AsText(g)
 POINT(10 10)
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRIntersects(g, @g1);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	range	g	g	34	NULL	1	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrintersects(`test`.`t1`.`g`,(@`g1`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	range	g	g	34	NULL	1	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1);
 ST_AsText(g)
 POINT(10 10)
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	range	g	g	34	NULL	1	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrwithin(`test`.`t1`.`g`,(@`g1`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	range	g	g	34	NULL	1	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1);
 ST_AsText(g)
 POINT(10 10)
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRContains(g, @g2);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	range	g	g	34	NULL	1	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrcontains(`test`.`t1`.`g`,(@`g2`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	range	g	g	34	NULL	1	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2);
 ST_AsText(g)
 POINT(10 10)
 POLYGON((5 5,20 5,20 21,5 21,5 5))
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRDisjoint(g, @g2);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	range	g	g	34	NULL	1	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrdisjoint(`test`.`t1`.`g`,(@`g2`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	range	g	g	34	NULL	1	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2);
 ST_AsText(g)
 POINT(10 10)
 POLYGON((5 5,20 5,20 21,5 21,5 5))
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBREquals(g, @g2);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	range	g	g	34	NULL	1	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrequals(`test`.`t1`.`g`,(@`g2`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	range	g	g	34	NULL	1	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2);
 ST_AsText(g)
 POINT(10 10)
 POLYGON((5 5,20 5,20 21,5 21,5 5))
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRIntersects(g, @g2);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	range	g	g	34	NULL	2	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrintersects(`test`.`t1`.`g`,(@`g2`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	range	g	g	34	NULL	2	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2);
 ST_AsText(g)
 POINT(10 10)
 POLYGON((5 5,20 5,20 21,5 21,5 5))
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	range	g	g	34	NULL	2	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrwithin(`test`.`t1`.`g`,(@`g2`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	range	g	g	34	NULL	2	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2);
 ST_AsText(g)
 POINT(10 10)
 POLYGON((5 5,20 5,20 21,5 21,5 5))
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRContains(g, @g3);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	ALL	g	NULL	NULL	NULL	3	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrcontains(`test`.`t1`.`g`,(@`g3`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	ALL	g	NULL	NULL	NULL	3	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3);
 ST_AsText(g)
 POINT(10 10)
 POLYGON((5 5,20 5,20 21,5 21,5 5))
 POLYGON((1.79769e308 1.79769e308,20 5,-1.79769e308 -1.79769e308,1.79769e308 1.79769e308))
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRDisjoint(g, @g3);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	ALL	g	NULL	NULL	NULL	3	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrdisjoint(`test`.`t1`.`g`,(@`g3`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	ALL	g	NULL	NULL	NULL	3	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3);
 ST_AsText(g)
 POINT(10 10)
 POLYGON((5 5,20 5,20 21,5 21,5 5))
 POLYGON((1.79769e308 1.79769e308,20 5,-1.79769e308 -1.79769e308,1.79769e308 1.79769e308))
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBREquals(g, @g3);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	ALL	g	NULL	NULL	NULL	3	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrequals(`test`.`t1`.`g`,(@`g3`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	ALL	g	NULL	NULL	NULL	3	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3);
 ST_AsText(g)
 POINT(10 10)
 POLYGON((5 5,20 5,20 21,5 21,5 5))
 POLYGON((1.79769e308 1.79769e308,20 5,-1.79769e308 -1.79769e308,1.79769e308 1.79769e308))
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRIntersects(g, @g3);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	ALL	g	NULL	NULL	NULL	3	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrintersects(`test`.`t1`.`g`,(@`g3`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	ALL	g	NULL	NULL	NULL	3	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3);
 ST_AsText(g)
 POINT(10 10)
 POLYGON((5 5,20 5,20 21,5 21,5 5))
 POLYGON((1.79769e308 1.79769e308,20 5,-1.79769e308 -1.79769e308,1.79769e308 1.79769e308))
 EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	ALL	g	NULL	NULL	NULL	3	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrwithin(`test`.`t1`.`g`,(@`g3`))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	ALL	g	NULL	NULL	NULL	3	Using where
 SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3);
 ST_AsText(g)
 POINT(10 10)
 
mysqltest: Result length mismatch

Comment by Jan Lindström (Inactive) [ 2017-10-12 ]

innodb_gis.rtree_multi_pk 'innodb'       [ fail ]
        Test ended at 2017-10-12 16:51:53
 
CURRENT_TEST: innodb_gis.rtree_multi_pk
mysqltest: At line 79: query 'SET @vert1   = ST_GeomFromText('POLYGON ((0 -2, 0 2, 0 -2))')' succeeded - should have failed with errno 3037...
 
The result from queries just before the failure was:
< snip >
down	POLYGON((0 -1,0 1,2 1,2 -1,0 -1))
down2	POLYGON((0 -2,0 0,2 0,2 -2,0 -2))
left	POLYGON((-1 0,-1 2,1 2,1 0,-1 0))
left2	POLYGON((-2 0,-2 2,0 2,0 0,-2 0))
SELECT name, ST_AsText(square) from t1 where MBROverlaps(@p, square);
name	ST_AsText(square)
right	POLYGON((1 0,1 2,3 2,3 0,1 0))
up	POLYGON((0 1,0 3,2 3,2 1,0 1))
down	POLYGON((0 -1,0 1,2 1,2 -1,0 -1))
left	POLYGON((-1 0,-1 2,1 2,1 0,-1 0))
SELECT name, ST_AsText(square) from t1 where MBRTouches(@p, square);
name	ST_AsText(square)
right2	POLYGON((2 0,2 2,4 2,4 0,2 0))
up2	POLYGON((0 2,0 4,2 4,2 2,0 2))
down2	POLYGON((0 -2,0 0,2 0,2 -2,0 -2))
left2	POLYGON((-2 0,-2 2,0 2,0 0,-2 0))
SELECT name, ST_AsText(square) from t1 where MBRWithin(@p, square);
name	ST_AsText(square)
big	POLYGON((0 0,0 3,3 3,3 0,0 0))
SET @vert1   = ST_GeomFromText('POLYGON ((0 -2, 0 2, 0 -2))');

Comment by Jan Lindström (Inactive) [ 2017-10-12 ]

innodb_gis.rtree_search 'innodb'         [ fail ]
        Test ended at 2017-10-12 16:53:19
 
CURRENT_TEST: innodb_gis.rtree_search
--- /home/jan/mysql/10.2-orig/mysql-test/suite/innodb_gis/r/rtree_search.result	2017-10-12 16:25:47.214903342 +0300
+++ /home/jan/mysql/10.2-orig/mysql-test/suite/innodb_gis/r/rtree_search.reject	2017-10-12 16:53:19.418905827 +0300
@@ -14,19 +14,19 @@
 set @g1 = ST_GeomFromText('Polygon((0 0,0 1000,1000 1000,1000 0,0 0))');
 select count(*) from t1 where MBRWithin(t1.c2, @g1);
 count(*)
-999
+1000
 set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))');
 select count(*) from t1 where MBRWithin(t1.c2, @g1);
 count(*)
-99
+100
 set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))');
 select count(*) from t1 where MBRWithin(t1.c2, @g1);
 count(*)
-789
+791
 set @g1 = ST_GeomFromText('Polygon((100 100,100 800,800 800,800 100,100 100))');
 select count(*) from t1 where MBRWithin(t1.c2, @g1);
 count(*)
-699
+701
 set @g1 =  ST_GeomFromText('Point(1 1)');
 select count(*) from t1 where MBRequals(t1.c2, @g1);
 count(*)
 
mysqltest: Result length mismatch
 
 - saving '/dev/shm/log/innodb_gis.rtree_search-innodb/' to '/dev/shm/log/innodb_gis.rtree_search-innodb/'

Comment by Jan Lindström (Inactive) [ 2017-10-12 ]

innodb_gis.point_big 'innodb'            [ fail ]
        Test ended at 2017-10-12 16:56:09
 
CURRENT_TEST: innodb_gis.point_big
--- /home/jan/mysql/10.2-orig/mysql-test/suite/innodb_gis/r/point_big.result	2017-10-12 16:25:47.206903327 +0300
+++ /home/jan/mysql/10.2-orig/mysql-test/suite/innodb_gis/r/point_big.reject	2017-10-12 16:56:09.735257843 +0300
@@ -259,10 +259,8 @@
 (ST_PointFromText('POINT(32.1234 64.2468)'), ST_PointFromText('POINT(-1 -1)'));
 'The ORDER BY for spatial index will use filesort'
 EXPLAIN SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point ORDER BY p1, p2;
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	gis_point	NULL	ALL	NULL	NULL	NULL	NULL	#	100.00Using filesort
-Warnings:
-Note	1003	/* select#1 */ select st_astext(`test`.`gis_point`.`p1`) AS `ST_AsText(p1)`,st_astext(`test`.`gis_point`.`p2`) AS `ST_AsText(p2)` from `test`.`gis_point` order by `test`.`gis_point`.`p1`,`test`.`gis_point`.`p2`
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	gis_point	ALL	NULL	NULL	NULL	NULL	13	#
 SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point ORDER BY p1, p2;
 ST_AsText(p1)	ST_AsText(p2)
 POINT(2 4)	POINT(-2 -6)
@@ -350,13 +348,17 @@
 1024	POINT(5 10)
 SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1) GROUP BY p1;
 COUNT(*)	ST_AsText(p1)
+1024	POINT(2 4)
 1024	POINT(3 6)
 1024	POINT(4 8)
+1024	POINT(5 10)
 SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@poly2, p2) GROUP BY p2;
 COUNT(*)	ST_AsText(p2)
+1024	POINT(0 0)
 1024	POINT(-2 -6)
 1024	POINT(-3 -9)
 1024	POINT(-4 -12)
+1024	POINT(-5 -15)
 1024	POINT(-1 -3)
 1024	POINT(-1 -1)
 SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Equals(p2, @p1) GROUP BY p2;
@@ -368,10 +370,13 @@
 1024	POINT(32.1234 64.2468)
 SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) GROUP BY p1, p2;
 COUNT(*)	ST_AsText(p1)	ST_AsText(p2)
+1024	POINT(3 6)	POINT(-3 -9)
 1024	POINT(4 8)	POINT(-4 -12)
 1024	POINT(5 10)	POINT(-5 -15)
 1024	POINT(6 12)	POINT(-6 -18)
 1024	POINT(7 14)	POINT(-7 -21)
+1024	POINT(8 16)	POINT(0 0)
+1024	POINT(10 21)	POINT(-6 3)
 1024	POINT(20.5 41)	POINT(-8 4)
 SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly) GROUP BY p1, p2;
 COUNT(*)	ST_AsText(p1)	ST_AsText(p2)
@@ -420,12 +425,16 @@
 SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4) GROUP BY p1;
 COUNT(*)	ST_AsText(p1)
 1024	POINT(20.5 41)
+14	POINT(20.5 43.9832)
 1024	POINT(32.1234 64.2468)
 SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE MBRWithin(p2, @poly2) GROUP BY p2;
 COUNT(*)	ST_AsText(p2)
+1024	POINT(0 0)
+14	POINT(-0 0)
 1024	POINT(-2 -6)
 1024	POINT(-3 -9)
 1024	POINT(-4 -12)
+1024	POINT(-5 -15)
 1024	POINT(-1 -3)
 1024	POINT(-1 -1)
 DROP TABLE p;
@@ -518,13 +527,17 @@
 1024	POINT(5 10)
 SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1) GROUP BY p1;
 COUNT(*)	ST_AsText(p1)
+1024	POINT(2 4)
 1024	POINT(3 6)
 1024	POINT(4 8)
+1024	POINT(5 10)
 SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@poly2, p2) GROUP BY p2;
 COUNT(*)	ST_AsText(p2)
+2	POINT(0 0)
 1024	POINT(-2 -6)
 1024	POINT(-3 -9)
 1024	POINT(-4 -12)
+1024	POINT(-5 -15)
 1024	POINT(-1 -3)
 1024	POINT(-1 -1)
 SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Equals(p2, @p1) GROUP BY p2;
@@ -536,10 +549,13 @@
 1024	POINT(32.1234 64.2468)
 SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) GROUP BY p1, p2;
 COUNT(*)	ST_AsText(p1)	ST_AsText(p2)
+1024	POINT(3 6)	POINT(-3 -9)
 1024	POINT(4 8)	POINT(-4 -12)
 1024	POINT(5 10)	POINT(-5 -15)
 1024	POINT(6 12)	POINT(-6 -18)
 1024	POINT(7 14)	POINT(-7 -21)
+2	POINT(8 16)	POINT(0 0)
+1024	POINT(10 21)	POINT(-6 3)
 1024	POINT(20.5 41)	POINT(-8 4)
 SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly) GROUP BY p1, p2;
 COUNT(*)	ST_AsText(p1)	ST_AsText(p2)
 
mysqltest: Result length mismatch
 
 - saving '/dev/shm/log/innodb_gis.point_big-innodb/' to '/dev/shm/log/innodb_gis.point_big-innodb/'

Comment by Jan Lindström (Inactive) [ 2017-10-12 ]

innodb_gis.geometry 'innodb'             [ fail ]
        Test ended at 2017-10-12 16:58:30
 
CURRENT_TEST: innodb_gis.geometry
mysqltest: At line 190: query 'EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
WHERE c2>=ST_LineFromText('LINESTRING(10 10,20 20,30 30)')' succeeded - should have failed with errno 1210...
 
The result from queries just before the failure was:
< snip >
#check index with  WKB function
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8)
FROM tab
WHERE c3=ST_PolyFromWKB(ST_AsWkB(ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))')));
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	tab	ref	idx3	idx3	8	const	1	#
#check index with  WKT function
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
WHERE c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	tab	const	idx2	idx2	8	const	1	#
#check index with  WKB function
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8)
FROM tab
WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))')));
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	tab	const	idx2	idx2	8	const	1	#
#check range predicate on the index columns
EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab
WHERE c2>=ST_LineFromText('LINESTRING(10 10,20 20,30 30)');
 
More results from queries before failure can be found in /dev/shm/log/geometry.log
 
 - saving '/dev/shm/log/innodb_gis.geometry-innodb/' to '/dev/shm/log/innodb_gis.geometry-innodb/'

Comment by Jan Lindström (Inactive) [ 2017-10-12 ]

innodb_gis.bug17057168 'innodb'          [ fail ]
        Test ended at 2017-10-12 16:59:34
 
CURRENT_TEST: innodb_gis.bug17057168
--- /home/jan/mysql/10.2-orig/mysql-test/suite/innodb_gis/r/bug17057168.result	2017-10-12 16:25:47.202903320 +0300
+++ /home/jan/mysql/10.2-orig/mysql-test/suite/innodb_gis/r/bug17057168.reject	2017-10-12 16:59:33.883674788 +0300
@@ -12,10 +12,8 @@
 tmp tmp2 ORDER BY tmp1.id, tmp2.id;
 EXPLAIN SELECT id, ST_AsText(location) FROM t1 WHERE location = POINT(1,
 2);
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	t1	NULL	ref	location	location	28	const	1	100.00	Using where
-Warnings:
-Note	1003	/* select#1 */ select `geotest`.`t1`.`id` AS `id`,st_astext(`geotest`.`t1`.`location`) AS `ST_AsText(location)` from `geotest`.`t1` where (`geotest`.`t1`.`location` = <cache>(point(1,2)))
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	ref	location	location	28	const	1	Using where
 SELECT id, ST_AsText(location) FROM t1 WHERE location = POINT(1, 2);
 id	ST_AsText(location)
 163	POINT(1 2)
 
mysqltest: Result length mismatch
 
 - saving '/dev/shm/log/innodb_gis.bug17057168-innodb/' to '/dev/shm/log/innodb_gis.bug17057168-innodb/'
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 0.000 of 10 seconds executing testcases
 
Failure: Failed 1/1 tests, 0.00% were successful.
 
Failing test(s): innodb_gis.bug17057168

Comment by Jan Lindström (Inactive) [ 2017-10-12 ]

innodb_gis.bug16236208 'innodb'          [ fail ]
        Test ended at 2017-10-12 17:00:30
 
CURRENT_TEST: innodb_gis.bug16236208
mysqltest: At line 51: query 'SELECT ST_AsText(linestring_nokey) FROM linestring FORCE KEY (
linestring_key ) WHERE ST_CONTAINS( ST_GeomFromText('POLYGON( ( 3923 2815 , 4246
2122 , 4028 2971 , 4017 3019 , 3923 2815 ) )') , linestring_key ) AND
ST_WITHIN( ST_GeomFromText('POLYGON( ( 4135 3009 , 4914 3087 , 4236 3194 , 4091
3036 , 4022 3004 , 4087 3004 , 3853 2825 , 3490 3118 , 3784 3141 , 4052 3072
, 4205 2787 , 4024 2951 , 4076 3036 , 4041 3053 , 3789 3401 , 4080 3100 ,
4169 2867 , 4056 3029 , 4715 3943 , 4052 3098 , 4035 3080 , 4013 3077 , 4218
2915 , 3789 2980 , 4058 3046 , 4042 3043 , 4135 3009 ) )') , linestring_nokey
) AND ST_CONTAINS( ST_GeomFromText('POLYGON( ( 4082 2842 , 3678 3647 , 3420 3068
, 4018 3030 , 4082 2842 ) )') , linestring_key ) OR ST_INTERSECTS(
ST_GeomFromText('MULTILINESTRING( ( 4147 2871 , 4072 3042 , 4081 3099 , 3796
3021 , 4007 3463 ) , ( 4042 2808 , 4109 2816 , 3730 3673 ) )') ,
linestring_key ) AND ST_Length( linestring_nokey ) > 1' succeeded - should have failed with errno 3037...
 
The result from queries just before the failure was:
< snip >
ST_GeomFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73
9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'));
INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (7,
ST_GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'),
ST_GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'));
CREATE INDEX linestring_index ON linestring(linestring_nokey(5));
ALTER TABLE linestring ADD  KEY (linestring_key(5));
SELECT ST_AsText(linestring_nokey) FROM linestring FORCE KEY (
linestring_key ) WHERE ST_CONTAINS( ST_GeomFromText('POLYGON( ( 3923 2815 , 4246
2122 , 4028 2971 , 4017 3019 , 3923 2815 ) )') , linestring_key ) AND
ST_WITHIN( ST_GeomFromText('POLYGON( ( 4135 3009 , 4914 3087 , 4236 3194 , 4091
3036 , 4022 3004 , 4087 3004 , 3853 2825 , 3490 3118 , 3784 3141 , 4052 3072
, 4205 2787 , 4024 2951 , 4076 3036 , 4041 3053 , 3789 3401 , 4080 3100 ,
4169 2867 , 4056 3029 , 4715 3943 , 4052 3098 , 4035 3080 , 4013 3077 , 4218
2915 , 3789 2980 , 4058 3046 , 4042 3043 , 4135 3009 ) )') , linestring_nokey
) AND ST_CONTAINS( ST_GeomFromText('POLYGON( ( 4082 2842 , 3678 3647 , 3420 3068
, 4018 3030 , 4082 2842 ) )') , linestring_key ) OR ST_INTERSECTS(
ST_GeomFromText('MULTILINESTRING( ( 4147 2871 , 4072 3042 , 4081 3099 , 3796
3021 , 4007 3463 ) , ( 4042 2808 , 4109 2816 , 3730 3673 ) )') ,
linestring_key ) AND ST_Length( linestring_nokey ) > 1;
 
More results from queries before failure can be found in /dev/shm/log/bug16236208.log

Comment by Jan Lindström (Inactive) [ 2017-10-12 ]

innodb_gis.bug16266012                   [ fail ]
        Test ended at 2017-10-12 17:01:54
 
CURRENT_TEST: innodb_gis.bug16266012
mysqltest: At line 10: query 'SELECT ST_WITHIN( LINESTRINGFROMTEXT('  LINESTRING( 5 9 , 3 4 , 4 1 , 4
4 , 4 9 ) ') , ST_SYMDIFFERENCE( ST_UNION( ST_ENVELOPE( POLYGONFROMTEXT('
POLYGON( ( 3 2 , 0 6 , 2 3 , 8 0 , 4 6 , 7 2 , 3 2 ) ) ') ) ,
MULTIPOLYGONFROMTEXT('
MULTIPOLYGON( ( ( 0 0 , 7 1 , 6 8 , 0 0 ) ) , ( ( 9 9 , 4 0 , 4 7 , 9 9) ) )
') ) , ST_SYMDIFFERENCE( POLYGONFROMTEXT('  POLYGON( ( 9 9 , 6 5 , 2 3 , 9 9
) ) ') , MULTIPOLYGONFROMTEXT('  MULTIPOLYGON( ( ( 2 2 , 5 2 , 5 2 , 2 6 , 2
2 ) ) , ( ( 7 7 , 3 7 , 2 9 , 7 1 , 7 7 ) ) ) ') ) ) )' succeeded - should have failed with errno 3040...
 
The result from queries just before the failure was:
SELECT ST_WITHIN( LINESTRINGFROMTEXT('  LINESTRING( 5 9 , 3 4 , 4 1 , 4
4 , 4 9 ) ') , ST_SYMDIFFERENCE( ST_UNION( ST_ENVELOPE( POLYGONFROMTEXT('
POLYGON( ( 3 2 , 0 6 , 2 3 , 8 0 , 4 6 , 7 2 , 3 2 ) ) ') ) ,
MULTIPOLYGONFROMTEXT('
MULTIPOLYGON( ( ( 0 0 , 7 1 , 6 8 , 0 0 ) ) , ( ( 9 9 , 4 0 , 4 7 , 9 9) ) )
') ) , ST_SYMDIFFERENCE( POLYGONFROMTEXT('  POLYGON( ( 9 9 , 6 5 , 2 3 , 9 9
) ) ') , MULTIPOLYGONFROMTEXT('  MULTIPOLYGON( ( ( 2 2 , 5 2 , 5 2 , 2 6 , 2
2 ) ) , ( ( 7 7 , 3 7 , 2 9 , 7 1 , 7 7 ) ) ) ') ) ) );

Comment by Jan Lindström (Inactive) [ 2017-10-12 ]

innodb_gis.rtree_search 'innodb'         [ fail ]
        Test ended at 2017-10-12 17:03:37
 
CURRENT_TEST: innodb_gis.rtree_search
--- /home/jan/mysql/10.2-orig/mysql-test/suite/innodb_gis/r/rtree_search.result	2017-10-12 16:25:47.214903342 +0300
+++ /home/jan/mysql/10.2-orig/mysql-test/suite/innodb_gis/r/rtree_search.reject	2017-10-12 17:03:37.492182676 +0300
@@ -14,19 +14,19 @@
 set @g1 = ST_GeomFromText('Polygon((0 0,0 1000,1000 1000,1000 0,0 0))');
 select count(*) from t1 where MBRWithin(t1.c2, @g1);
 count(*)
-999
+1000
 set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))');
 select count(*) from t1 where MBRWithin(t1.c2, @g1);
 count(*)
-99
+100
 set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))');
 select count(*) from t1 where MBRWithin(t1.c2, @g1);
 count(*)
-789
+791
 set @g1 = ST_GeomFromText('Polygon((100 100,100 800,800 800,800 100,100 100))');
 select count(*) from t1 where MBRWithin(t1.c2, @g1);
 count(*)
-699
+701
 set @g1 =  ST_GeomFromText('Point(1 1)');
 select count(*) from t1 where MBRequals(t1.c2, @g1);
 count(*)
 
mysqltest: Result length mismatch
 
 - saving '/dev/shm/log/innodb_gis.rtree_search-innodb/' to '/dev/shm/log/innodb_gis.rtree_search-innodb/'

Comment by Jan Lindström (Inactive) [ 2017-10-12 ]

innodb_gis.rtree_old 'innodb'            [ fail ]
        Test ended at 2017-10-12 17:05:36
 
CURRENT_TEST: innodb_gis.rtree_old
mysqltest: At line 134: query 'INSERT INTO t1 (name, kind, line) VALUES
("Aadaouane", "pp", ST_GeomFromText("POINT(32.816667 35.983333)")),
("Aadassiye", "pp", ST_GeomFromText("POINT(35.816667 36.216667)")),
("Aadbel", "pp", ST_GeomFromText("POINT(34.533333 36.100000)")),
("Aadchit", "pp", ST_GeomFromText("POINT(33.347222 35.423611)")),
("Aadchite", "pp", ST_GeomFromText("POINT(33.347222 35.423611)")),
("Aadchit el Qoussair", "pp", ST_GeomFromText("POINT(33.283333 35.483333)")),
("Aaddaye", "pp", ST_GeomFromText("POINT(36.716667 40.833333)")),
("'Aadeissa", "pp", ST_GeomFromText("POINT(32.823889 35.698889)")),
("Aaderup", "pp", ST_GeomFromText("POINT(55.216667 11.766667)")),
("Qalaat Aades", "pp", ST_GeomFromText("POINT(33.503333 35.377500)")),
("A ad'ino", "pp", ST_GeomFromText("POINT(54.812222 38.209167)")),
("Aadi Noia", "pp", ST_GeomFromText("POINT(13.800000 39.833333)")),
("Aad La Macta", "pp", ST_GeomFromText("POINT(35.779444 -0.129167)")),
("Aadland", "pp", ST_GeomFromText("POINT(60.366667 5.483333)")),
("Aadliye", "pp", ST_GeomFromText("POINT(33.366667 36.333333)")),
("Aadloun", "pp", ST_GeomFromText("POINT(33.403889 35.273889)")),
("Aadma", "pp", ST_GeomFromText("POINT(58.798333 22.663889)")),
("Aadma Asundus", "pp", ST_GeomFromText("POINT(58.798333 22.663889)")),
("Aadmoun", "pp", ST_GeomFromText("POINT(34.150000 35.650000)")),
("Aadneram", "pp", ST_GeomFromText("POINT(59.016667 6.933333)")),
("Aadneskaar", "pp", ST_GeomFromText("POINT(58.083333 6.983333)")),
("Aadorf", "pp", ST_GeomFromText("POINT(47.483333 8.900000)")),
("Aadorp", "pp", ST_GeomFromText("POINT(52.366667 6.633333)")),
("Aadouane", "pp", ST_GeomFromText("POINT(32.816667 35.983333)")),
("Aadoui", "pp", ST_GeomFromText("POINT(34.450000 35.983333)")),
("Aadouiye", "pp", ST_GeomFromText("POINT(34.583333 36.183333)")),
("Aadouss", "pp", ST_GeomFromText("POINT(33.512500 35.601389)")),
("Aadra", "pp", ST_GeomFromText("POINT(33.616667 36.500000)")),
("Aadzi", "pp", ST_GeomFromText("POINT(38.100000 64.850000)"))' failed with wrong errno 1366: 'Incorrect LINESTRING value: 'POINT' for column 'line' at row 1', instead of 1416...
 
The result from queries just before the failure was:
< snip >
("Qalaat Aades", "pp", ST_GeomFromText("POINT(33.503333 35.377500)")),
("A ad'ino", "pp", ST_GeomFromText("POINT(54.812222 38.209167)")),
("Aadi Noia", "pp", ST_GeomFromText("POINT(13.800000 39.833333)")),
("Aad La Macta", "pp", ST_GeomFromText("POINT(35.779444 -0.129167)")),
("Aadland", "pp", ST_GeomFromText("POINT(60.366667 5.483333)")),
("Aadliye", "pp", ST_GeomFromText("POINT(33.366667 36.333333)")),
("Aadloun", "pp", ST_GeomFromText("POINT(33.403889 35.273889)")),
("Aadma", "pp", ST_GeomFromText("POINT(58.798333 22.663889)")),
("Aadma Asundus", "pp", ST_GeomFromText("POINT(58.798333 22.663889)")),
("Aadmoun", "pp", ST_GeomFromText("POINT(34.150000 35.650000)")),
("Aadneram", "pp", ST_GeomFromText("POINT(59.016667 6.933333)")),
("Aadneskaar", "pp", ST_GeomFromText("POINT(58.083333 6.983333)")),
("Aadorf", "pp", ST_GeomFromText("POINT(47.483333 8.900000)")),
("Aadorp", "pp", ST_GeomFromText("POINT(52.366667 6.633333)")),
("Aadouane", "pp", ST_GeomFromText("POINT(32.816667 35.983333)")),
("Aadoui", "pp", ST_GeomFromText("POINT(34.450000 35.983333)")),
("Aadouiye", "pp", ST_GeomFromText("POINT(34.583333 36.183333)")),
("Aadouss", "pp", ST_GeomFromText("POINT(33.512500 35.601389)")),
("Aadra", "pp", ST_GeomFromText("POINT(33.616667 36.500000)")),
("Aadzi", "pp", ST_GeomFromText("POINT(38.100000 64.850000)"));
 
More results from queries before failure can be found in /dev/shm/log/rtree_old.log
 
 - saving '/dev/shm/log/innodb_gis.rtree_old-innodb/' to '/dev/shm/log/innodb_gis.rtree_old-innodb/'

Comment by Marko Mäkelä [ 2018-01-04 ]

I cleaned up most of the tests. There were some minor result differences.

The remaining failures are mostly behaviour differences. I suspect that the geometry functions in MariaDB are sloppier than those in MySQL. Here is one example of an invalid (zero-area) triangle that MySQL would reject but MariaDB would accept:

CURRENT_TEST: innodb_gis.rtree_multi_pk
mysqltest: At line 79: query 'SET @vert1   = ST_GeomFromText('POLYGON ((0 -2, 0 2, 0 -2))')' succeeded - should have failed with errno 3037...

Comment by Marko Mäkelä [ 2018-02-19 ]

See also the dubious debug code change in that I had to add back in MDEV-14059 to get the innodb_gis.rtree_concurrent_srch test to pass, most of the time.
The test would appear to expose a race condition between SELECT and ROLLBACK. Occasionally the test does return a different result for COUNT.

Comment by Marko Mäkelä [ 2020-03-12 ]

While adding some assertions to InnoDB in MDEV-21924, I found out that TABLE_SHARE::init_from_binary_frm_image() is calculating the MBR length as 34 bytes:

        key_part->key_part_flag|= field->key_part_flag();
        uint16 key_part_length_bytes= field->key_part_length_bytes();
        key_part->store_length+= key_part_length_bytes;
        keyinfo->key_length+= key_part_length_bytes;

InnoDB does not expect adding any key_part_length_bytes. It internally stores 32 bytes (DATA_MBR_LEN = SPDIMS * 2 * sizeof(double)).
In cmp_dtuple_rec_with_gis(), I wrote a comment about this:

int cmp_dtuple_rec_with_gis(const dtuple_t *dtuple, const rec_t *rec,
                            page_cur_mode_t mode)
{
  const dfield_t *dtuple_field= dtuple_get_nth_field(dtuple, 0);
  /* FIXME: TABLE_SHARE::init_from_binary_frm_image() is adding
  field->key_part_length_bytes() to the key length */
  ut_ad(dfield_get_len(dtuple_field) == DATA_MBR_LEN ||
        dfield_get_len(dtuple_field) == DATA_MBR_LEN + 2);
 
  return cmp_gis_field(mode, dfield_get_data(dtuple_field), rec);
}

Comment by Alexey Botchkov [ 2020-03-18 ]

https://github.com/MariaDB/server/commit/a0ce62f804dc1a0073688bea46dc2e6728cf55e3

Generated at Thu Feb 08 08:10:35 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.