[MDEV-12665] Hybrid functions do not preserve geometry type Created: 2017-05-02  Updated: 2017-05-05  Resolved: 2017-05-05

Status: Closed
Project: MariaDB Server
Component/s: GIS
Affects Version/s: 10.1, 10.2, 10.3
Fix Version/s: 10.3.1

Type: Bug Priority: Major
Reporter: Alexander Barkov Assignee: Alexander Barkov
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Blocks
blocks MDEV-4912 Data type plugin API version 1 Closed
Relates
relates to MDEV-9405 SP do not preserve geometry type Open
relates to MDEV-12560 Wrong data type for SELECT NULL UNION... Closed
relates to MDEV-12668 SRID is not preserved in UNION, VIEW,... Open

 Description   

DROP TABLE IF EXISTS t1;
CREATE TABLE t1 AS SELECT
  Point(0,0) AS p0,
  COALESCE(Point(0,0)) AS p1,
  CASE WHEN 0 THEN Point(0,0) ELSE Point(1,1) END AS p2;
SHOW CREATE TABLE t1;

returns

+-------+--------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                     |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `p0` point DEFAULT NULL,
  `p1` geometry DEFAULT NULL,
  `p2` geometry DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------+

The expected behavior would be to the POINT data type for all three columns.

The same problem is demonstrated with LEAST and GREATEST:

DROP TABLE IF EXISTS t1;
CREATE TABLE t1 AS SELECT
  LEAST(Point(0,0),Point(0,0)) AS p1;
SHOW CREATE TABLE t1;

+-------+-----------------------------------------------------------------------------------------+
| Table | Create Table                                                                            |
+-------+-----------------------------------------------------------------------------------------+
  `p1` geometry DEFAULT NULL
| t1    | CREATE TABLE `t1` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+-----------------------------------------------------------------------------------------+



 Comments   
Comment by Alexey Botchkov [ 2017-05-04 ]

ok to push.

Comment by Alexander Barkov [ 2017-05-05 ]

Pushed to bb-10.2-ext

Generated at Thu Feb 08 07:59:29 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.