[MDEV-19070] Wrong result (missing row) upon using SPATIAL index on InnoDB table Created: 2019-03-27  Updated: 2023-04-27

Status: Confirmed
Project: MariaDB Server
Component/s: GIS, Optimizer, Storage Engine - InnoDB
Affects Version/s: 10.2, 10.3, 10.4
Fix Version/s: 10.4

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Alexey Botchkov
Resolution: Unresolved Votes: 0
Labels: not-10.5+, upstream-fixed, wrong_result


 Description   

--source include/have_innodb.inc
 
CREATE TABLE t1 (pk INT PRIMARY KEY, g GEOMETRY NOT NULL, SPATIAL(g)) ENGINE=InnoDB;
 
INSERT INTO t1 VALUES
  (1,ST_GEOMFROMTEXT('LINESTRING(2540 3224, 2137 3092)')),
  (2,ST_GEOMFROMTEXT('LINESTRING(3527 3088, 3839 3026)')),
  (3,ST_GEOMFROMTEXT('LINESTRING(1761 2561, 1851 2597)')),
  (4,ST_GEOMFROMTEXT('LINESTRING(2430 4077, 2392 3900)'));
 
SELECT pk FROM t1 FORCE KEY (g) WHERE ST_DISJOINT( ST_GEOMFROMTEXT('LINESTRING( 4009 3088, 3786 2897 )'), g );
SELECT pk FROM t1 WHERE ST_DISJOINT( ST_GEOMFROMTEXT('LINESTRING( 4009 3088, 3786 2897 )'), g );
 
DROP TABLE t1;

10.3 2d592f75

SELECT pk FROM t1 FORCE KEY (g) WHERE ST_DISJOINT( ST_GEOMFROMTEXT('LINESTRING( 4009 3088, 3786 2897 )'), g );
pk
4
1
3
SELECT pk FROM t1 WHERE ST_DISJOINT( ST_GEOMFROMTEXT('LINESTRING( 4009 3088, 3786 2897 )'), g );
pk
1
2
3
4

The second result (without forcing the index) is apparently the correct one.

Also reproducible on MySQL 5.7. Not reproducible on MySQL 8.0.
Not reproducible with MyISAM.



 Comments   
Comment by Alice Sherepa [ 2022-11-24 ]

reproducible on 10.3,10.4 (10.3 f4a1298f245f678badc8a5b5), not on 10.5+

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