Hi all,
    Submitted the PR with necessary changes. Kindly review.

PR: https://github.com/apache/tinkerpop/pull/2025

On Fri, Apr 14, 2023 at 9:33 PM Sai Phanindhra <[email protected]> wrote:

> Hi all,
>    In the graph implementation I'm working on, we are interested in
> knowing the type of operations like read, write, delete performed during
> the query execution so that we can apply authorization logic to allow users
> to run only a few types of queries. As of today, there is no
> straightforward way to check whether a certain step performs only read or
> write or delete or any combinations of these three. Only way to check if a
> step is capable of mutation is to see if it implements the Mutating
>  interface or bot. We cannot distinguish whether the mutating is a write
> operation or delete operation or both. To achieve this I propose marker
> interfaces Writing  and Deleting  to identify the respective step
> capabilities.
>
>     Another observation is We are using Bytecode instructions to infer
> operation types and they are not very helpful in identifying the operation
> type(read, write, delete) as there is no mapping between operation name and
> its corresponding Tinkerpop Step. Recent mergeE, mergeV steps slipped past
> the checks we added for authorization. By maintaining a map of the
> operation name and its corresponding Tinkerpop Step if it exists, helps
> maintain a strict relationship between Bytecode operation and its
> corresponding Tinkerpop step. Combining these 2 changes will make it easy
> to infer the type of operation performed by the query and easy to apply
> authorization and authorization works out of the box for newly added steps
> as well.
>
>    If there are no objections, I'll proceed with these changes and offer a
> pull request for review. If time permits, i would like to include this
> change in Tinkerpop version 3.6.3
>
> --
> Thanks & Regards,
> Sai Phanindhra
>
>

-- 
Sai Phanindhra

Reply via email to