[MDEV-25256] JSON_TABLE: Error ER_VIEW_INVALID upon running query via view Created: 2021-03-25  Updated: 2021-04-13  Resolved: 2021-04-08

Status: Closed
Project: MariaDB Server
Component/s: JSON, Views
Affects Version/s: N/A
Fix Version/s: 10.6.0

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Sergei Petrunia
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
PartOf
is part of MDEV-25202 JSON_TABLE: Early table reference lea... Closed
Relates
relates to MDEV-25202 JSON_TABLE: Early table reference lea... Closed
relates to MDEV-25254 JSON_TABLE: Inconsistent name resolut... Closed
relates to MDEV-25352 JSON_TABLE: Inconsistent name resolut... Closed
relates to MDEV-17399 Add support for JSON_TABLE Closed

 Description   

Hopefully it is closely related to MDEV-25254 and will be fixed by the same patch, but I'm not quite sure about that.

The query works in MariaDB:

bb-10.6-mdev17399-hf 8611fb30b

SELECT * FROM
JSON_TABLE('[]', '$' COLUMNS(a TEXT PATH '$[*]')) AS jt1
  RIGHT JOIN JSON_TABLE(jt1.a, '$' COLUMNS(o2 FOR ORDINALITY)) AS jt2
    ON(1)
  RIGHT JOIN JSON_TABLE('[]', '$' COLUMNS(o3 FOR ORDINALITY)) AS jt3
    ON(1)
WHERE 0;

MariaDB [test]> SELECT * FROM
    -> JSON_TABLE('[]', '$' COLUMNS(a TEXT PATH '$[*]')) AS jt1
    ->   RIGHT JOIN JSON_TABLE(jt1.a, '$' COLUMNS(o2 FOR ORDINALITY)) AS jt2
    ->     ON(1)
    ->   RIGHT JOIN JSON_TABLE('[]', '$' COLUMNS(o3 FOR ORDINALITY)) AS jt3
    ->     ON(1)
    -> WHERE 0;
Empty set (0.001 sec)

But when it is executed via a view, it complains about invalid tables/columns:

MariaDB [test]> CREATE VIEW v AS
    -> SELECT * FROM
    -> JSON_TABLE('[]', '$' COLUMNS(a TEXT PATH '$[*]')) AS jt1
    ->   RIGHT JOIN JSON_TABLE(jt1.a, '$' COLUMNS(o2 FOR ORDINALITY)) AS jt2
    ->     ON(1)
    ->   RIGHT JOIN JSON_TABLE('[]', '$' COLUMNS(o3 FOR ORDINALITY)) AS jt3
    ->     ON(1)
    -> WHERE 0;
Query OK, 0 rows affected (0.015 sec)
 
MariaDB [test]> 
MariaDB [test]> SELECT * FROM v;
ERROR 1356 (HY000): View 'test.v' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

In MySQL both the query and CREATE VIEW fail with ER_BAD_FIELD_ERROR:

MySQL 8.0.23

MySQL [test]> SELECT * FROM
    -> JSON_TABLE('[]', '$' COLUMNS(a TEXT PATH '$[*]')) AS jt1
    ->   RIGHT JOIN JSON_TABLE(jt1.a, '$' COLUMNS(o2 FOR ORDINALITY)) AS jt2
    ->     ON(1)
    ->   RIGHT JOIN JSON_TABLE('[]', '$' COLUMNS(o3 FOR ORDINALITY)) AS jt3
    ->     ON(1)
    -> WHERE 0;
ERROR 1054 (42S22): Unknown column 'jt1.a' in 'a table function argument'
MySQL [test]> CREATE VIEW v AS
    -> SELECT * FROM
    -> JSON_TABLE('[]', '$' COLUMNS(a TEXT PATH '$[*]')) AS jt1
    ->   RIGHT JOIN JSON_TABLE(jt1.a, '$' COLUMNS(o2 FOR ORDINALITY)) AS jt2
    ->     ON(1)
    ->   RIGHT JOIN JSON_TABLE('[]', '$' COLUMNS(o3 FOR ORDINALITY)) AS jt3
    ->     ON(1)
    -> WHERE 0;
ERROR 1054 (42S22): Unknown column 'jt1.a' in 'a table function argument'



 Comments   
Comment by Sergei Petrunia [ 2021-04-07 ]

This is fixed as part of MDEV-25202 (testcase is added to the testsuite)

Comment by Sergei Petrunia [ 2021-04-08 ]

Fixed as part of MDEV-25202

Generated at Thu Feb 08 09:36:20 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.