JSqlParser icon indicating copy to clipboard operation
JSqlParser copied to clipboard

[BUG] JSQLParser 5.4-SNAPSHOT : PostgreSQL : Custom type casting with more than one level not working

Open tomershay opened this issue 3 months ago • 1 comments

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:

Image

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;

tomershay avatar Nov 13 '25 17:11 tomershay

Certainly and it is way out of my scope. PRs are welcome though it will certainly take some refactoring to get this done.

manticore-projects avatar Nov 21 '25 02:11 manticore-projects