63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
| 
								 | 
							
								--source include/have_geometry.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Spatial objects with keys
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #30825: Problems when putting a non-spatial index on a GIS column
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (p POINT);
							 | 
						||
| 
								 | 
							
								CREATE TABLE t2 (p POINT, INDEX(p));
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (POINTFROMTEXT('POINT(1 2)'));
							 | 
						||
| 
								 | 
							
								INSERT INTO t2 VALUES (POINTFROMTEXT('POINT(1 2)'));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# no index, returns 1 as expected
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM t1 WHERE p=POINTFROMTEXT('POINT(1 2)');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# with index, returns 1 as expected
							 | 
						||
| 
								 | 
							
								# EXPLAIN shows that the index is not used though
							 | 
						||
| 
								 | 
							
								# due to the "most rows covered anyway, so a scan is more effective" rule
							 | 
						||
| 
								 | 
							
								EXPLAIN 
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)');
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# adding another row to the table so that
							 | 
						||
| 
								 | 
							
								# the "most rows covered" rule doesn't kick in anymore
							 | 
						||
| 
								 | 
							
								# now EXPLAIN shows the index used on the table
							 | 
						||
| 
								 | 
							
								# and we're getting the wrong result again
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (POINTFROMTEXT('POINT(1 2)'));
							 | 
						||
| 
								 | 
							
								INSERT INTO t2 VALUES (POINTFROMTEXT('POINT(1 2)'));
							 | 
						||
| 
								 | 
							
								EXPLAIN 
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM t1 WHERE p=POINTFROMTEXT('POINT(1 2)');
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM t1 WHERE p=POINTFROMTEXT('POINT(1 2)');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								EXPLAIN 
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)');
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								EXPLAIN 
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM t2 IGNORE INDEX(p) WHERE p=POINTFROMTEXT('POINT(1 2)');
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM t2 IGNORE INDEX(p) WHERE p=POINTFROMTEXT('POINT(1 2)');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP TABLE t1, t2;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo End of 5.0 tests
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo #
							 | 
						||
| 
								 | 
							
								--echo # Test for bug #58650 "Failing assertion: primary_key_no == -1 ||
							 | 
						||
| 
								 | 
							
								--echo #                      primary_key_no == 0".
							 | 
						||
| 
								 | 
							
								--echo #
							 | 
						||
| 
								 | 
							
								--disable_warnings
							 | 
						||
| 
								 | 
							
								drop table if exists t1;
							 | 
						||
| 
								 | 
							
								--enable_warnings
							 | 
						||
| 
								 | 
							
								--echo # The minimal test case.
							 | 
						||
| 
								 | 
							
								create table t1 (a int not null, b linestring not null, unique key b (b(12)), unique key a (a));
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								--echo # The original test case.
							 | 
						||
| 
								 | 
							
								create table t1 (a int not null, b linestring not null, unique key b (b(12)));
							 | 
						||
| 
								 | 
							
								create unique index a on t1(a);
							 | 
						||
| 
								 | 
							
								drop table t1;
							 |