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

   @AbdulSamad4068 Unfortunately, you can't really pre-validate the inputs to 
AND or OR. As an example, look at the following cypher commands -
   
   ```
   CREATE ({field: 1});
   CREATE ({field: false});
   CREATE ({field: "Name"});
   
   MATCH (u) RETURN (true OR u.field);
   MATCH (u) RETURN (false AND u.field);
   ```
   In the above example we have 3 vertices, each with a **differently typed 
value** for the same key: field. None of this is known until the execution 
phase. Specifically, the type is not known until `u.field` has been evaluated - 
**after** - getting a value for **u**.
   
   Additionally, in the execution phase, the logic for T_BoolExpr will skip 
over any extra input once the result of AND or OR is determined. For OR, just 
one true will suffice for an output of true. For AND, just one false will 
suffice for an output of false.
   
   The only way to potentially resolve this is to write a completely different 
path for the execution of Booleans in AGE. 
   
   However, per PostgreSQL docs, using side effects to determine other outcomes 
is not recommended. Meaning, `true OR` is always true and `false AND` is always 
false. It is not good form to have a function error out (side effect) to break 
this. At least, that was my understanding of what they stated.
   
   See this link for more -
   
   https://www.postgresql.org/docs/15/sql-expressions.html#SYNTAX-EXPRESS-EVAL


-- 
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