JSqlParser
JSqlParser copied to clipboard
[BUG] JSQLParser 5.4-SNAPSHOT : PostgreSQL : Custom type casting with more than one level not working
It seems that the parser supports single-level composite types but fails on nested multi-level composite types.
Query to reproduce the parsing error:
SELECT
(product_data::product_info_similarity).info.category AS category,
COUNT(*) AS num_products
FROM products
GROUP BY (product_data::product_info_similarity).info.category;
Error:
Generating types/tables to run the query in a real DB:
CREATE TYPE product_info AS (
name text,
category text
);
CREATE TYPE product_info_similarity AS (
info product_info
);
CREATE TABLE products (
id serial PRIMARY KEY,
product_data product_info_similarity
);
INSERT INTO products (product_data)
VALUES
(ROW(ROW('Laptop', 'Electronics'))::product_info_similarity),
(ROW(ROW('Chair', 'Furniture'))::product_info_similarity),
(ROW(ROW('Table', 'Furniture'))::product_info_similarity);
SELECT
(product_data::product_info_similarity).info.category AS category,
COUNT(*) AS num_products
FROM products
GROUP BY (product_data::product_info_similarity).info.category;
Certainly and it is way out of my scope. PRs are welcome though it will certainly take some refactoring to get this done.