Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
12.3, 12.2.2
-
12.2.2-MariaDB-ubu2404
-
Unexpected results
-
Q3/2026 Server Maintenance
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
-
- is duplicated by
-
MDEV-40246 Wrong result: CTE with RIGHT JOIN and ST_IsValid returns NULL despite WHERE alias filter
-
- Closed
-
-
MDEV-40247 Wrong result with ST_IsValid through VIEW/CTE and derived table ORDER BY LIMIT
-
- Closed
-
-
MDEV-40249 Wrong result: ST_IsValid returns no rows on TEMPORARY TABLE created from GROUP BY geometry column
-
- Closed
-
-
MDEV-40250 Wrong result: CREATE TEMPORARY TABLE AS SELECT with ST_IsValid join condition creates 0 rows
-
- Closed
-
-
MDEV-40253 Wrong result with ST_Centroid through VIEW/CTE and outer ST_IsValid predicate
-
- Closed
-