Re: SQL/PGQ: All properties reference - Mailing list pgsql-hackers

From Henson Choi
Subject Re: SQL/PGQ: All properties reference
Date
Msg-id CAAAe_zD3==epK=KufoBiLfogztpKbimxc498TUshTOQkkpgOjg@mail.gmail.com
Whole thread Raw
In response to SQL/PGQ: All properties reference  (Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>)
Responses Re: SQL/PGQ: All properties reference
List pgsql-hackers
Hi Ashutosh,

I am starting a new thread to discuss all properties reference feature
which was not committed with the main patch. [1]

A <variable>.* is called all properties reference and it is allowed
only in COLUMNs clause. Interpreting subclause 9.2 and 9.3 together,
it expands to a list of graph property references <variable>.p1, ...
<variable>.pn where p1, ..., pn are the properties of the labels which
satisfy the label expression in the element pattern identified by
<variable>. The graph property references are added to the COLUMNs
clause in place of the all property reference, just like how <table>.*
expands in SELECT's targetlist.

In the current implementation, we delay resolving graph property
references (<variable>.<property>) till the time query is generated
(generate_query_for_graph_path()). If we delay the all properties
reference till that time, we can not determine the data types and
names of the columns in the COLUMNs list. So we need to do that when
the COLUMNs clause is resolved. This means that the properties
associated with the labels needs to be resolved earlier. Since the
properties are not associated with labels directly but through the
elements, we need to find at least one element for every label in the
label expression. In brief, all the namespace resolution need to
happen before we transform COLUMNs clause. The patch rearranges the
code that way.

I tried applying v20260318 on top of master to review it, but ran
into merge conflicts in two files:

- parse_graphtable.c
- rewriteGraphTable.c

The conflicts come from this commit that was added after the main PGQ
commit (2f094e7ac69):

- a0dd0702e46 Fix cross variable references in graph pattern causing
  segfault

Would it be possible to rebase the patch on the current master so
I can review it cleanly?

Best Regards,
Henson 

pgsql-hackers by date:

Previous
From: Yugo Nagata
Date:
Subject: Re: Adjust error message for CREATE STATISTICS to account for expressions
Next
From: Robert Haas
Date:
Subject: Re: pg_plan_advice