0003-Remove-support-for-colon-in-is-label-express.patch.nocfbot

text/plain

Filename: 0003-Remove-support-for-colon-in-is-label-express.patch.nocfbot
Type: text/plain
Part: 2
Message: Re: SQL Property Graph Queries (SQL/PGQ)
From e8830a0cc1bf15c819ca7235767513b759eeb5e5 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Wed, 17 Dec 2025 09:37:46 +0100
Subject: [PATCH 3/3] Remove support for colon in 'is label' expression

---
 .../expected/pg_overexplain.out               |  2 +-
 contrib/pg_overexplain/sql/pg_overexplain.sql |  2 +-
 doc/src/sgml/queries.sgml                     | 32 ++++++++-----------
 src/backend/catalog/sql_features.txt          |  2 +-
 src/backend/parser/gram.y                     |  1 -
 src/test/regress/expected/graph_table.out     | 10 +++---
 src/test/regress/expected/graph_table_rls.out |  4 +--
 src/test/regress/expected/privileges.out      | 22 ++++++-------
 src/test/regress/sql/graph_table.sql          | 10 +++---
 src/test/regress/sql/graph_table_rls.sql      |  4 +--
 src/test/regress/sql/privileges.sql           | 22 ++++++-------
 11 files changed, 52 insertions(+), 59 deletions(-)

diff --git a/contrib/pg_overexplain/expected/pg_overexplain.out b/contrib/pg_overexplain/expected/pg_overexplain.out
index 2b120315a7f..643629296e6 100644
--- a/contrib/pg_overexplain/expected/pg_overexplain.out
+++ b/contrib/pg_overexplain/expected/pg_overexplain.out
@@ -497,7 +497,7 @@ VERTEX TABLES
 	brassica KEY(name) DEFAULT LABEL LABEL vegetables
 );
 EXPLAIN (RANGE_TABLE, COSTS OFF)
-SELECT * FROM GRAPH_TABLE (vegetables_graph MATCH (v1:vegetables) WHERE v1.genus = 'daucus' COLUMNS (v1.name));
+SELECT * FROM GRAPH_TABLE (vegetables_graph MATCH (v1 IS vegetables) WHERE v1.genus = 'daucus' COLUMNS (v1.name));
                   QUERY PLAN                  
 ----------------------------------------------
  Append
diff --git a/contrib/pg_overexplain/sql/pg_overexplain.sql b/contrib/pg_overexplain/sql/pg_overexplain.sql
index 2d1d0f4ac95..0eb18be76b6 100644
--- a/contrib/pg_overexplain/sql/pg_overexplain.sql
+++ b/contrib/pg_overexplain/sql/pg_overexplain.sql
@@ -120,4 +120,4 @@ CREATE PROPERTY GRAPH vegetables_graph
 );
 
 EXPLAIN (RANGE_TABLE, COSTS OFF)
-SELECT * FROM GRAPH_TABLE (vegetables_graph MATCH (v1:vegetables) WHERE v1.genus = 'daucus' COLUMNS (v1.name));
+SELECT * FROM GRAPH_TABLE (vegetables_graph MATCH (v1 IS vegetables) WHERE v1.genus = 'daucus' COLUMNS (v1.name));
diff --git a/doc/src/sgml/queries.sgml b/doc/src/sgml/queries.sgml
index fccf049cb35..ec4ca01cd16 100644
--- a/doc/src/sgml/queries.sgml
+++ b/doc/src/sgml/queries.sgml
@@ -2861,28 +2861,22 @@ <title>Graph Patterns</title>
     for elements (vertices and edges) that have certain characteristics.
     These characteristics are written in between the parentheses or brackets.
     (This is also called an element pattern filler.)  Typically, we would
-    search for elements with a certain label.  This is written either by
-    <literal>IS <replaceable>labelname</replaceable></literal> or equivalently
-    <literal>:<replaceable>labelname</replaceable></literal>.  For example,
-    this would match all vertices with the label <literal>person</literal>:
+    search for elements with a certain label.  This is written by <literal>IS
+    <replaceable>labelname</replaceable></literal>.  For example, this would
+    match all vertices with the label <literal>person</literal>:
 <programlisting>
 (IS person)
 </programlisting>
-    or
-<programlisting>
-(:person)
-</programlisting>
-    (From now on, we will just use the colon syntax, for simplicity.  But it
-    helps to read it as <quote>is</quote> for understanding.)  The next
+    The next
     example would match a vertex with the label <literal>person</literal>
     connected to a vertex with the label <literal>account</literal> connected
     by an edge with the label <literal>has</literal>.
 <programlisting>
-(:person)-[:has]->(:account)
+(IS person)-[IS has]->(IS account)
 </programlisting>
     Multiple labels can also be matched, using <quote>or</quote> semantics:
 <programlisting>
-(:person)-[:has]->(:account|creditcard)
+(IS person)-[IS has]->(IS account|creditcard)
 </programlisting>
    </para>
 
@@ -2890,11 +2884,11 @@ <title>Graph Patterns</title>
     Recall that edges are directed.  The other direction is also possible in a
     path pattern, for example:
 <programlisting>
-(:account)&lt;-[:has]-(:person)
+(IS account)&lt;-[IS has]-(IS person)
 </programlisting>
     It is also possible to match both directions:
 <programlisting>
-(:person)-[:is_friend_of]-(:person)
+(IS person)-[IS is_friend_of]-(IS person)
 </programlisting>
     This has a meaning of <quote>or</quote>: An edge in either direction would
     match.
@@ -2905,9 +2899,9 @@ <title>Graph Patterns</title>
     then happens on the vertices.)  For these cases, an abbreviated edge
     pattern syntax is available that omits the brackets, for example:
 <programlisting>
-(:person)->(:account)
-(:acount)&lt;-(:person)
-(:person)-(:person)
+(IS person)->(IS account)
+(IS account)&lt;-(IS person)
+(IS person)-(IS person)
 </programlisting>
     As is often the case, abbreviated syntax can make expressions more compact
     but also sometimes harder to understand.
@@ -2922,13 +2916,13 @@ <title>Graph Patterns</title>
     For example (assuming appropriate definitions of the property graph as
     well as the underlying tables):
 <programlisting>
-GRAPH_TABLE (mygraph MATCH (p:person)-[h:has]->(a:account)
+GRAPH_TABLE (mygraph MATCH (p IS person)-[h IS has]->(a IS account)
              COLUMNS (p.name AS person_name, h.since AS has_account_since, a.num AS account_number)
 </programlisting>
     <literal>WHERE</literal> clauses can be used inside element patterns to
     filter matches:
 <programlisting>
-(:person)-[:has]->(a:account WHERE a.type = 'savings')
+(IS person)-[IS has]->(a IS account WHERE a.type = 'savings')
 </programlisting>
    </para>
 
diff --git a/src/backend/catalog/sql_features.txt b/src/backend/catalog/sql_features.txt
index 7cbaf492d23..626054cbcef 100644
--- a/src/backend/catalog/sql_features.txt
+++ b/src/backend/catalog/sql_features.txt
@@ -417,7 +417,7 @@ G803	MATCHNUM function			NO
 G810	IS BOUND predicate			NO	
 G811	IS BOUND predicate: AS option			NO	
 G820	BINDING_COUNT			NO	
-G830	Colon in 'is label' expression			YES	
+G830	Colon in 'is label' expression			NO	
 G840	Path-ordered aggregates			NO	
 G850	SQL/PGQ Information Schema views			YES	
 G860	GET DIAGNOSTICS enhancements for SQL-property graphs			NO	
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 0cad56576f0..b1171a315fb 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -18073,7 +18073,6 @@ opt_colid:
 
 opt_is_label_expression:
 			IS label_expression		{ $$ = $2; }
-			| ':' label_expression	{ $$ = $2; }
 			| /*EMPTY*/				{ $$ = NULL; }
 		;
 
diff --git a/src/test/regress/expected/graph_table.out b/src/test/regress/expected/graph_table.out
index ecac6096720..a4df7464d79 100644
--- a/src/test/regress/expected/graph_table.out
+++ b/src/test/regress/expected/graph_table.out
@@ -157,7 +157,7 @@ SELECT * FROM GRAPH_TABLE (myshop MATCH (c IS customers WHERE c.address = 'US')-
  customer1
 (1 row)
 
-SELECT * FROM GRAPH_TABLE (myshop MATCH (c:customers)-[co:customer_orders]->(o:orders WHERE o.ordered_when = date '2024-01-02') COLUMNS (c.name, c.address));
+SELECT * FROM GRAPH_TABLE (myshop MATCH (c IS customers)-[co IS customer_orders]->(o IS orders WHERE o.ordered_when = date '2024-01-02') COLUMNS (c.name, c.address));
    name    | address 
 -----------+---------
  customer2 | CA
@@ -430,7 +430,7 @@ SELECT vn FROM all_vertices EXCEPT (SELECT svn FROM all_connected_vertices UNION
 (2 rows)
 
 -- query all connections using a label shared by vertices and edges
-SELECT sn, cn, dn FROM GRAPH_TABLE (g1 MATCH (src : l1)-[conn : l1]->(dest : l1) COLUMNS (src.elname AS sn, conn.elname AS cn, dest.elname AS dn));
+SELECT sn, cn, dn FROM GRAPH_TABLE (g1 MATCH (src IS l1)-[conn IS l1]->(dest IS l1) COLUMNS (src.elname AS sn, conn.elname AS cn, dest.elname AS dn));
  sn  |  cn  | dn  
 -----+------+-----
  v12 | e122 | v21
@@ -636,7 +636,7 @@ CREATE PROPERTY GRAPH g2
             DESTINATION KEY (src_id) REFERENCES v3 (id)
             LABEL l1 PROPERTIES ('g2.' || ename COLLATE "C" AS elname)
     );
-SELECT sn, cn, dn FROM GRAPH_TABLE (g2 MATCH (src : l1)-[conn : l1]->(dest : l1) COLUMNS (src.elname AS sn, conn.elname AS cn, dest.elname AS dn)) ORDER BY 1, 2, 3;
+SELECT sn, cn, dn FROM GRAPH_TABLE (g2 MATCH (src IS l1)-[conn IS l1]->(dest IS l1) COLUMNS (src.elname AS sn, conn.elname AS cn, dest.elname AS dn)) ORDER BY 1, 2, 3;
    sn   |   cn    |   dn   
 --------+---------+--------
  g2.v11 | g2.e121 | g2.v22
@@ -669,7 +669,7 @@ SELECT * FROM GRAPH_TABLE (g2 MATCH (a)-[b]->(a)-[b]->(a) COLUMNS (a.elname AS s
 
 -- prepared statements, any changes to the property graph should be reflected in
 -- the already prepared statements
-PREPARE cyclestmt AS SELECT * FROM GRAPH_TABLE (g1 MATCH (a:l1)->(b:l1)->(c:l1) WHERE a.elname = c.elname COLUMNS (a.elname AS self, b.elname AS through)) ORDER BY self, through;
+PREPARE cyclestmt AS SELECT * FROM GRAPH_TABLE (g1 MATCH (a IS l1)->(b IS l1)->(c IS l1) WHERE a.elname = c.elname COLUMNS (a.elname AS self, b.elname AS through)) ORDER BY self, through;
 EXECUTE cyclestmt;
  self | through 
 ------+---------
@@ -743,7 +743,7 @@ ALTER PROPERTY GRAPH g1
             DESTINATION KEY (src_id) REFERENCES v3 (id)
             LABEL l2 PROPERTIES (ename AS elname)
     );
-PREPARE loopstmt AS SELECT * FROM GRAPH_TABLE (g1 MATCH (a)-[e:l2]->(a) COLUMNS (e.elname AS loop)) ORDER BY loop COLLATE "C" ASC;
+PREPARE loopstmt AS SELECT * FROM GRAPH_TABLE (g1 MATCH (a)-[e IS l2]->(a) COLUMNS (e.elname AS loop)) ORDER BY loop COLLATE "C" ASC;
 EXECUTE loopstmt;
  loop 
 ------
diff --git a/src/test/regress/expected/graph_table_rls.out b/src/test/regress/expected/graph_table_rls.out
index e52beeeabd1..5cbd69dab7b 100644
--- a/src/test/regress/expected/graph_table_rls.out
+++ b/src/test/regress/expected/graph_table_rls.out
@@ -96,7 +96,7 @@ SET row_security TO ON;
 -- to RLS policies, session user or RLS settings.
 PREPARE graph_rls_query AS
 SELECT * FROM GRAPH_TABLE (cabinet
-                           MATCH (u : users)-[a : accessed]->(d : document)
+                           MATCH (u IS users)-[a IS accessed]->(d IS document)
                            WHERE f_leak(d.dtitle)
                            COLUMNS (u.pguser, a.aid, d.dtitle, d.dlevel))
          ORDER BY 1, 2, 3, 4;
@@ -630,7 +630,7 @@ SET row_security TO ON;
 -- Create a policy on document that references document itself via GRAPH_TABLE
 CREATE POLICY pr ON document TO regress_graph_rls_dave
     USING (EXISTS (SELECT 1 FROM GRAPH_TABLE (cabinet
-                           MATCH (u : users)-[a : accessed]->(d : document)
+                           MATCH (u IS users)-[a IS accessed]->(d IS document)
                            WHERE u.pguser = current_user
                            COLUMNS (a.aid))));
 SET SESSION AUTHORIZATION regress_graph_rls_dave;
diff --git a/src/test/regress/expected/privileges.out b/src/test/regress/expected/privileges.out
index 828357ab451..2114b1e354e 100644
--- a/src/test/regress/expected/privileges.out
+++ b/src/test/regress/expected/privileges.out
@@ -3090,49 +3090,49 @@ create property graph ptg1
 			default label
 			label ltv properties (col1 as ltvk));
 -- select privileges on property graph as well as table
-select * from graph_table (ptg1 match ( : atest5) COLUMNS (1 as value)) limit 0; -- ok
+select * from graph_table (ptg1 match (is atest5) COLUMNS (1 as value)) limit 0; -- ok
  value 
 -------
 (0 rows)
 
 grant select on ptg1 to regress_priv_user2;
 set session role regress_priv_user2;
-select * from graph_table (ptg1 match ( : atest1) COLUMNS (1 as value)) limit 0; -- ok
+select * from graph_table (ptg1 match (is atest1) COLUMNS (1 as value)) limit 0; -- ok
  value 
 -------
 (0 rows)
 
 -- select privileges on property graph but not table
-select * from graph_table (ptg1 match ( : atest5) COLUMNS (1 as value)) limit 0; -- fails
+select * from graph_table (ptg1 match (is atest5) COLUMNS (1 as value)) limit 0; -- fails
 ERROR:  permission denied for table atest5
-select * from graph_table (ptg1 match ( : lttc) COLUMNS (1 as value)) limit 0; -- fails
+select * from graph_table (ptg1 match (is lttc) COLUMNS (1 as value)) limit 0; -- fails
 ERROR:  permission denied for table atest5
 set session role regress_priv_user3;
 -- select privileges on table but not property graph
-select * from graph_table (ptg1 match ( : atest1) COLUMNS (1 as value)) limit 0; -- fails
+select * from graph_table (ptg1 match (is atest1) COLUMNS (1 as value)) limit 0; -- fails
 ERROR:  permission denied for property graph ptg1
 -- select privileges on neither
-select * from graph_table (ptg1 match ( : atest5) COLUMNS (1 as value)) limit 0; -- fails
+select * from graph_table (ptg1 match (is atest5) COLUMNS (1 as value)) limit 0; -- fails
 ERROR:  permission denied for property graph ptg1
 -- column privileges
 set session role regress_priv_user1;
-select * from graph_table (ptg1 match (v : lttc) COLUMNS (v.lttck)) limit 0; -- ok
+select * from graph_table (ptg1 match (v is lttc) COLUMNS (v.lttck)) limit 0; -- ok
  lttck 
 -------
 (0 rows)
 
 grant select on ptg1 to regress_priv_user4;
 set session role regress_priv_user4;
-select * from graph_table (ptg1 match (a : atest5) COLUMNS (a.four)) limit 0; -- ok
+select * from graph_table (ptg1 match (a is atest5) COLUMNS (a.four)) limit 0; -- ok
  four 
 ------
 (0 rows)
 
-select * from graph_table (ptg1 match (v : lttc) COLUMNS (v.lttck)) limit 0; -- fail
+select * from graph_table (ptg1 match (v is lttc) COLUMNS (v.lttck)) limit 0; -- fail
 ERROR:  permission denied for table atest5
 -- access property graph through security definer view
 set session role regress_priv_user4;
-create view atpgv1 as select * from graph_table (ptg1 match ( : atest1) COLUMNS (1 as value)) limit 0;
+create view atpgv1 as select * from graph_table (ptg1 match (is atest1) COLUMNS (1 as value)) limit 0;
 grant select on atpgv1 to regress_priv_user3;
 select * from atpgv1; -- ok
  value 
@@ -3146,7 +3146,7 @@ select * from atpgv1; -- ok
 (0 rows)
 
 set session role regress_priv_user4;
-create view atpgv2 as select * from graph_table (ptg1 match (v : ltv) COLUMNS (v.ltvk)) limit 0;
+create view atpgv2 as select * from graph_table (ptg1 match (v is ltv) COLUMNS (v.ltvk)) limit 0;
 -- though the session user is the owner of the view and also has access to the
 -- property graph, it does not have access to a table referenced in the graph
 -- pattern
diff --git a/src/test/regress/sql/graph_table.sql b/src/test/regress/sql/graph_table.sql
index 412da394aab..7521c3e5c1d 100644
--- a/src/test/regress/sql/graph_table.sql
+++ b/src/test/regress/sql/graph_table.sql
@@ -133,7 +133,7 @@ CREATE PROPERTY GRAPH myshop
 SELECT * FROM GRAPH_TABLE (myshop MATCH (c IS customers WHERE c.address = 'US')-[IS customer_orders]->(o IS orders) COLUMNS (c.name));
 -- graph element specification without label or variable
 SELECT * FROM GRAPH_TABLE (myshop MATCH (c IS customers WHERE c.address = 'US')-[]->(o IS orders) COLUMNS (c.name AS customer_name));
-SELECT * FROM GRAPH_TABLE (myshop MATCH (c:customers)-[co:customer_orders]->(o:orders WHERE o.ordered_when = date '2024-01-02') COLUMNS (c.name, c.address));
+SELECT * FROM GRAPH_TABLE (myshop MATCH (c IS customers)-[co IS customer_orders]->(o IS orders WHERE o.ordered_when = date '2024-01-02') COLUMNS (c.name, c.address));
 SELECT * FROM GRAPH_TABLE (myshop MATCH (o IS orders)-[IS customer_orders]->(c IS customers) COLUMNS (c.name, o.ordered_when));
 SELECT * FROM GRAPH_TABLE (myshop MATCH (o IS orders)<-[IS customer_orders]-(c IS customers) COLUMNS (c.name, o.ordered_when));
 -- spaces around pattern operators
@@ -292,7 +292,7 @@ CREATE PROPERTY GRAPH g1
     all_vertices AS (SELECT vn FROM GRAPH_TABLE (g1 MATCH (vertex) COLUMNS (vertex.vname AS vn)))
 SELECT vn FROM all_vertices EXCEPT (SELECT svn FROM all_connected_vertices UNION SELECT dvn FROM all_connected_vertices);
 -- query all connections using a label shared by vertices and edges
-SELECT sn, cn, dn FROM GRAPH_TABLE (g1 MATCH (src : l1)-[conn : l1]->(dest : l1) COLUMNS (src.elname AS sn, conn.elname AS cn, dest.elname AS dn));
+SELECT sn, cn, dn FROM GRAPH_TABLE (g1 MATCH (src IS l1)-[conn IS l1]->(dest IS l1) COLUMNS (src.elname AS sn, conn.elname AS cn, dest.elname AS dn));
 
 -- Tests for cyclic path patterns
 CREATE TABLE e2_1 (
@@ -405,14 +405,14 @@ CREATE PROPERTY GRAPH g2
             DESTINATION KEY (src_id) REFERENCES v3 (id)
             LABEL l1 PROPERTIES ('g2.' || ename COLLATE "C" AS elname)
     );
-SELECT sn, cn, dn FROM GRAPH_TABLE (g2 MATCH (src : l1)-[conn : l1]->(dest : l1) COLUMNS (src.elname AS sn, conn.elname AS cn, dest.elname AS dn)) ORDER BY 1, 2, 3;
+SELECT sn, cn, dn FROM GRAPH_TABLE (g2 MATCH (src IS l1)-[conn IS l1]->(dest IS l1) COLUMNS (src.elname AS sn, conn.elname AS cn, dest.elname AS dn)) ORDER BY 1, 2, 3;
 SELECT * FROM GRAPH_TABLE (g2 MATCH (a)-[b WHERE b.elname > 'g2.E331']->(a)-[b]->(a) COLUMNS (a.elname AS self, b.elname AS loop_name));
 SELECT * FROM GRAPH_TABLE (g2 MATCH (a)-[b]->(a)-[b]->(a) WHERE b.elname > 'g2.E331' COLUMNS (a.elname AS self, b.elname AS loop_name));
 SELECT * FROM GRAPH_TABLE (g2 MATCH (a)-[b]->(a)-[b]->(a) COLUMNS (a.elname AS self, b.elname AS loop_name)) WHERE loop_name > 'g2.E331';
 
 -- prepared statements, any changes to the property graph should be reflected in
 -- the already prepared statements
-PREPARE cyclestmt AS SELECT * FROM GRAPH_TABLE (g1 MATCH (a:l1)->(b:l1)->(c:l1) WHERE a.elname = c.elname COLUMNS (a.elname AS self, b.elname AS through)) ORDER BY self, through;
+PREPARE cyclestmt AS SELECT * FROM GRAPH_TABLE (g1 MATCH (a IS l1)->(b IS l1)->(c IS l1) WHERE a.elname = c.elname COLUMNS (a.elname AS self, b.elname AS through)) ORDER BY self, through;
 EXECUTE cyclestmt;
 ALTER PROPERTY GRAPH g1 DROP EDGE TABLES (e3_2, e3_3);
 EXECUTE cyclestmt;
@@ -436,7 +436,7 @@ CREATE PROPERTY GRAPH g2
             DESTINATION KEY (src_id) REFERENCES v3 (id)
             LABEL l2 PROPERTIES (ename AS elname)
     );
-PREPARE loopstmt AS SELECT * FROM GRAPH_TABLE (g1 MATCH (a)-[e:l2]->(a) COLUMNS (e.elname AS loop)) ORDER BY loop COLLATE "C" ASC;
+PREPARE loopstmt AS SELECT * FROM GRAPH_TABLE (g1 MATCH (a)-[e IS l2]->(a) COLUMNS (e.elname AS loop)) ORDER BY loop COLLATE "C" ASC;
 EXECUTE loopstmt;
 ALTER PROPERTY GRAPH g1 ALTER EDGE TABLE e3_3 ALTER LABEL l2 DROP PROPERTIES (elname);
 EXECUTE loopstmt; -- error
diff --git a/src/test/regress/sql/graph_table_rls.sql b/src/test/regress/sql/graph_table_rls.sql
index 3644b6e192f..044bc27ce9f 100644
--- a/src/test/regress/sql/graph_table_rls.sql
+++ b/src/test/regress/sql/graph_table_rls.sql
@@ -112,7 +112,7 @@ CREATE POLICY p4 ON document_people AS PERMISSIVE TO regress_graph_rls_group2
 -- to RLS policies, session user or RLS settings.
 PREPARE graph_rls_query AS
 SELECT * FROM GRAPH_TABLE (cabinet
-                           MATCH (u : users)-[a : accessed]->(d : document)
+                           MATCH (u IS users)-[a IS accessed]->(d IS document)
                            WHERE f_leak(d.dtitle)
                            COLUMNS (u.pguser, a.aid, d.dtitle, d.dlevel))
          ORDER BY 1, 2, 3, 4;
@@ -312,7 +312,7 @@ CREATE PROPERTY GRAPH cabinet
 -- Create a policy on document that references document itself via GRAPH_TABLE
 CREATE POLICY pr ON document TO regress_graph_rls_dave
     USING (EXISTS (SELECT 1 FROM GRAPH_TABLE (cabinet
-                           MATCH (u : users)-[a : accessed]->(d : document)
+                           MATCH (u IS users)-[a IS accessed]->(d IS document)
                            WHERE u.pguser = current_user
                            COLUMNS (a.aid))));
 SET SESSION AUTHORIZATION regress_graph_rls_dave;
diff --git a/src/test/regress/sql/privileges.sql b/src/test/regress/sql/privileges.sql
index f3a438d2732..c7fdfb691ae 100644
--- a/src/test/regress/sql/privileges.sql
+++ b/src/test/regress/sql/privileges.sql
@@ -1815,34 +1815,34 @@ CREATE SCHEMA testns;
 			default label
 			label ltv properties (col1 as ltvk));
 -- select privileges on property graph as well as table
-select * from graph_table (ptg1 match ( : atest5) COLUMNS (1 as value)) limit 0; -- ok
+select * from graph_table (ptg1 match (is atest5) COLUMNS (1 as value)) limit 0; -- ok
 grant select on ptg1 to regress_priv_user2;
 set session role regress_priv_user2;
-select * from graph_table (ptg1 match ( : atest1) COLUMNS (1 as value)) limit 0; -- ok
+select * from graph_table (ptg1 match (is atest1) COLUMNS (1 as value)) limit 0; -- ok
 -- select privileges on property graph but not table
-select * from graph_table (ptg1 match ( : atest5) COLUMNS (1 as value)) limit 0; -- fails
-select * from graph_table (ptg1 match ( : lttc) COLUMNS (1 as value)) limit 0; -- fails
+select * from graph_table (ptg1 match (is atest5) COLUMNS (1 as value)) limit 0; -- fails
+select * from graph_table (ptg1 match (is lttc) COLUMNS (1 as value)) limit 0; -- fails
 set session role regress_priv_user3;
 -- select privileges on table but not property graph
-select * from graph_table (ptg1 match ( : atest1) COLUMNS (1 as value)) limit 0; -- fails
+select * from graph_table (ptg1 match (is atest1) COLUMNS (1 as value)) limit 0; -- fails
 -- select privileges on neither
-select * from graph_table (ptg1 match ( : atest5) COLUMNS (1 as value)) limit 0; -- fails
+select * from graph_table (ptg1 match (is atest5) COLUMNS (1 as value)) limit 0; -- fails
 -- column privileges
 set session role regress_priv_user1;
-select * from graph_table (ptg1 match (v : lttc) COLUMNS (v.lttck)) limit 0; -- ok
+select * from graph_table (ptg1 match (v is lttc) COLUMNS (v.lttck)) limit 0; -- ok
 grant select on ptg1 to regress_priv_user4;
 set session role regress_priv_user4;
-select * from graph_table (ptg1 match (a : atest5) COLUMNS (a.four)) limit 0; -- ok
-select * from graph_table (ptg1 match (v : lttc) COLUMNS (v.lttck)) limit 0; -- fail
+select * from graph_table (ptg1 match (a is atest5) COLUMNS (a.four)) limit 0; -- ok
+select * from graph_table (ptg1 match (v is lttc) COLUMNS (v.lttck)) limit 0; -- fail
 -- access property graph through security definer view
 set session role regress_priv_user4;
-create view atpgv1 as select * from graph_table (ptg1 match ( : atest1) COLUMNS (1 as value)) limit 0;
+create view atpgv1 as select * from graph_table (ptg1 match (is atest1) COLUMNS (1 as value)) limit 0;
 grant select on atpgv1 to regress_priv_user3;
 select * from atpgv1; -- ok
 set session role regress_priv_user3;
 select * from atpgv1; -- ok
 set session role regress_priv_user4;
-create view atpgv2 as select * from graph_table (ptg1 match (v : ltv) COLUMNS (v.ltvk)) limit 0;
+create view atpgv2 as select * from graph_table (ptg1 match (v is ltv) COLUMNS (v.ltvk)) limit 0;
 -- though the session user is the owner of the view and also has access to the
 -- property graph, it does not have access to a table referenced in the graph
 -- pattern
-- 
2.52.0