This is an automated email from the ASF dual-hosted git repository.

joshinnis pushed a commit to branch AGEHA
in repository https://gitbox.apache.org/repos/asf/age.git


The following commit(s) were added to refs/heads/AGEHA by this push:
     new c30ecebf [AGEHA] Fix and Optimize isWriteQuery and extractCypherFuncs 
(#792)
c30ecebf is described below

commit c30ecebfb16a20ad094aabb173c1e08fc1c20daa
Author: moeed-k <[email protected]>
AuthorDate: Tue Apr 11 09:58:02 2023 +0500

    [AGEHA] Fix and Optimize isWriteQuery and extractCypherFuncs (#792)
    
    * Fix isWriteQuery
    
    * Clean up debugging code
    
    * fix return type
    
    * update isWriteQuery header
---
 src/age/age_pool.c                | 55 ++++++++++++---------------------------
 src/include/age/age_pool.h        |  3 +--
 src/protocol/pool_proto_modules.c | 17 ------------
 3 files changed, 18 insertions(+), 57 deletions(-)

diff --git a/src/age/age_pool.c b/src/age/age_pool.c
index 87edc5fe..e298cb3f 100644
--- a/src/age/age_pool.c
+++ b/src/age/age_pool.c
@@ -146,53 +146,32 @@ isCypherQuery (Node* node, char** retstr)
        return false; 
 }
 
-List* 
-/* Returns all the Cypher Nodes
-   in the given parse tree.
+bool 
+/* Checks if the cypher tree contains any 
+ * clauses that are Write operations.
 */
-extractCypherFuncs(List *ParsedCyphertreeList)
+isWriteQuery(List *ParsedCyphertreeList)
 {
+       //Removing last node because it is only used by EXPLAIN
+       list_delete_ptr(ParsedCyphertreeList, llast(ParsedCyphertreeList));
 
        ListCell *resultfl;
 
-       List *cypher_funcs_list= NIL;
-
        foreach (resultfl, ParsedCyphertreeList)
        {
-               Node *newnode = (Node *)lfirst(resultfl);
-
-               ExtensibleNode *extnode;
-
-               if (IsA(newnode, ExtensibleNode)){
-
-                       extnode = (ExtensibleNode *)newnode;
-                       cypher_funcs_list = lappend(cypher_funcs_list, 
extnode->extnodename);
+               Node *node = (Node *)lfirst(resultfl);
 
+               if (IsA(node, ExtensibleNode))
+               {
+                       // DETACH DELETE is covered under cypher_delete.
+            // REMOVE command is covered under cypher_set.
+                       if (is_ag_node(node, cypher_create) || is_ag_node(node, 
cypher_set) ||
+                               is_ag_node(node, cypher_delete) || 
is_ag_node(node, cypher_merge))
+                       {
+                               return true;
+                       }
                }
        }
        
-       return cypher_funcs_list;
-}
-
-bool 
-/* Returns true if the given cypher node
-   is a write query.
-*/
-IsWriteQuery(List *cypher_funcs_list){
-       ListCell *cypherfl;
-       foreach (cypherfl, cypher_funcs_list)
-       {
-               char *cypher_func = (char *)lfirst(cypherfl);
-
-
-               // DETACH DELETE is covered under cypher_delete.
-            // REMOVE command is covered under cypher_set.
-        if (is_ag_node(cypher_func, cypher_create) || is_ag_node(cypher_func, 
cypher_set) ||
-        is_ag_node(cypher_func, cypher_delete) || is_ag_node(cypher_func, 
cypher_merge))
-        {
-               return true;
-        }
-       }
-
        return false;
-}
\ No newline at end of file
+}
diff --git a/src/include/age/age_pool.h b/src/include/age/age_pool.h
index 36c7c5cd..e3376798 100644
--- a/src/include/age/age_pool.h
+++ b/src/include/age/age_pool.h
@@ -24,8 +24,7 @@
 
 bool isCypherQuery (Node* node, char** str);
 void preprocess_cypherstr(char *target);
-List* extractCypherFuncs(List* ParsedCyphertreeList);
-bool IsWriteQuery(List* cypher_funcs_list);
+bool isWriteQuery(List *ParsedCyphertreeList);
 
 
 #endif
diff --git a/src/protocol/pool_proto_modules.c 
b/src/protocol/pool_proto_modules.c
index 67097b86..96b6252a 100644
--- a/src/protocol/pool_proto_modules.c
+++ b/src/protocol/pool_proto_modules.c
@@ -306,23 +306,6 @@ SimpleQuery(POOL_CONNECTION * frontend,
        {
                node = raw_parser2(parse_tree_list);
 
-               char* cypherstr;
-
-               /*
-                * if query is cypher query then extract cypher functions
-                */
-               if (isCypherQuery(node,&cypherstr)){
-
-                       List* cyphertree = parse_cypher(cypherstr);
-
-                       // removing the last node of parsed cypher.
-                       Node *temp = llast(cyphertree);
-               list_delete_ptr(cyphertree, temp);
-                       List* cypher_funcs_list = 
extractCypherFuncs(cyphertree);
-                       bool isWriteQuery = IsWriteQuery(cypher_funcs_list);
-                       
-               }
-
                /*
                 * Start query context
                 */

Reply via email to