Details
-
Bug
-
Status: Confirmed (View Workflow)
-
Major
-
Resolution: Unresolved
-
12.3, 12.2.2
-
12.2.2-MariaDB-ubu2404
Description
Description:
An equivalent VIEW, CTE, and TEMPORARY TABLE query produce inconsistent results when ST_IsValid() is evaluated over a RIGHT JOIN query body filtered by ST_Dimension(), and the result is filtered by an outer predicate.
Environment:
MariaDB version: 12.2.2-MariaDB-ubu2404
OS: Ubuntu 24.04
How to repeat:
– Table setup
CREATE TABLE t0 (c0 INT,c1 POINT);
INSERT INTO t0 VALUES (-4, Point(0,0));
INSERT INTO t0 VALUES (6, NULL);
INSERT INTO t0 VALUES (9, Point(1,1));
– VIEW construct
CREATE VIEW v0 AS
SELECT ST_IsValid(a.c1) AS vc_0 FROM t0 AS a RIGHT JOIN t0 AS b ON a.c0 <=> b.c0 WHERE ST_Dimension(b.c1) >= 0;
SELECT vc_0 FROM v0 WHERE vc_0 > 0;
– CTE construct
WITH CTE AS (
SELECT ST_IsValid(a.c1) AS vc_0 FROM t0 AS a RIGHT JOIN t0 AS b ON a.c0 <=> b.c0 WHERE ST_Dimension(b.c1) >= 0)
SELECT vc_0 FROM CTE WHERE vc_0 > 0;
– TEMPORARY TABLE construct
CREATE TEMPORARY TABLE temp_t AS
SELECT ST_IsValid(a.c1) AS vc_0 FROM t0 AS a RIGHT JOIN t0 AS b ON a.c0 <=> b.c0 WHERE ST_Dimension(b.c1) >= 0;
SELECT vc_0 FROM temp_t WHERE vc_0 > 0 ;
Actual results:
VIEW query returns:
1
CTE query returns:
NULL
TEMPORARY TABLE query returns:
1
1
Expected results:
The three queries are constructed from the same query body and evaluated under the same database state with the same outer filtering condition. Therefore, they should return consistent results.
Attachments
Issue Links
- is caused by
-
MDEV-34276 Implement the GIS function ST_IsValid
-
- Closed
-