jrgemignani commented on issue #1000:
URL: https://github.com/apache/age/issues/1000#issuecomment-1673500992

   @vladiksun In the following query -
   ```
   select
       any_profile
   from ag_catalog.cypher('test_graph',$$
       EXPLAIN ANALYZE MATCH (any_profile:`profile` { hidden: false })
       WHERE any_profile.pet = 'dog'
       RETURN any_profile
   $$
   ) as (any_profile ag_catalog.agtype);
   ```
   The cypher component -
   ```
   MATCH (any_profile:`profile` { hidden: false })
   WHERE any_profile.pet = 'dog'
   RETURN any_profile;
   ```
   any_profile is a vertex
   
   In your first index below, I'm not sure if this has been set up. We will 
need to debug this specific index to find out how it is resolved.
   > ```
   > -- does not work in the where clause
   > CREATE INDEX profile_pet_btree_idx1 ON test_graph."profile" USING BTREE 
((properties -> 'pet'));
   > ```
   In your second index below, `agtype_access_operator` aka `.` understands how 
to work with whatever value is sent to it. The `properties()` function isn't 
used as `agtype_access_operator` has to be able to accept any object or array.  
So, any `.` operation just takes the variable used.
   > ```
   > -- does not work in the where clause
   > CREATE INDEX profile_pet_btree_idx2 ON test_graph."profile" USING BTREE 
(ag_catalog.agtype_access_operator(properties, '"pet"'::ag_catalog.agtype));
   > ```
   That is why this index worked -
   ```
   CREATE INDEX profile_pet_btree_idx3 ON test_graph."profile" USING BTREE 
(agtype_access_operator(VARIADIC ARRAY[_agtype_build_vertex(id, 
_label_name('16954'::oid, id), properties), '"pet"'::agtype]));
   ```
   I should note, this is **after** adjusting the volatility flag for the 
functions used in the index.
   
   Our team needs to look into changing the volatility flag for the functions 
used in this index and similar ones for edges. Part of the problem originally 
was that some wanted to blanketly change that flag without bothering to truly 
understand if it can be changed. Changing the flag obviously works but does it 
pose other issues?
   
   For you, as a temporary fix, all you need to do is change the volatility 
flag of the functions involved in `age--1.3.0.sql` and then rebuild the 
extension. Or, possibly, alter their entries through sql.
   
   We will be looking into the issue with the volatility flag to see if it can 
be updated with a patch, sometime this week.
   
   Hopefully, this is helpful.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@age.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to