Skip to content

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

Description

@tomershay

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;

Activity

  1. manticore-projects commented on Nov 21, 2025

    @manticore-projects
    Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions