You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@s2graph.apache.org by "Daewon Jeong (JIRA)" <ji...@apache.org> on 2018/06/15 05:18:00 UTC
[jira] [Comment Edited] (S2GRAPH-222) Support Not logical operator
in WhereParser.
[ https://issues.apache.org/jira/browse/S2GRAPH-222?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16513352#comment-16513352 ]
Daewon Jeong edited comment on S2GRAPH-222 at 6/15/18 5:17 AM:
---------------------------------------------------------------
[~steamshon]
I think `Where Parser` should follow the grammar of the where clause of standard SQL.
If follow the syntax of the standard SQL clause, user can easily predict usage.
I think that the revised contents have been modified well in the parts which had been previously implemented incorrectly (not the general processing but specifically the `NOT IN` processing)
But for a more predictable syntax, I think it would be better to implement all the `NOT condition` clauses of the type supported by the standard SQL.
{code:sql}
NOT condition
{code}
Below is all valid SQL queries.
ex) NOT IN clause
{code:sql}
SELECT Id, CompanyName, City, Country
FROM Supplier
WHERE NOT (Country IN ('USA', 'UK', 'Japan'))
{code}
{code:sql}
SELECT Id, ProductName, UnitPrice
FROM Product
WHERE UnitPrice NOT IN (10,20,30,40,50)
{code}
ex) NOT like
{code:sql}
SELECT *
FROM suppliers
WHERE supplier_name NOT LIKE '%o%';
{code}
{code:sql}
SELECT *
FROM suppliers
WHERE NOT(supplier_name LIKE '%o%');
{code}
link: [http://www.dofactory.com/sql/where-in]
was (Author: daewon):
[~steamshon]
I think `Where Parser` should follow the grammar of the where clause of standard SQL.
If follow the syntax of the standard SQL clause, user can easily predict usage.
I think that the revised contents have been modified well in the parts which had been previously implemented incorrectly (not the general processing but specifically the `NOT IN` processing)
But for a more predictable syntax, I think it would be better to implement all the `NOT condition` clauses of the type supported by the standard SQL.
> Support Not logical operator in WhereParser.
> ---------------------------------------------
>
> Key: S2GRAPH-222
> URL: https://issues.apache.org/jira/browse/S2GRAPH-222
> Project: S2Graph
> Issue Type: New Feature
> Components: s2core
> Reporter: DOYUNG YOON
> Assignee: DOYUNG YOON
> Priority: Minor
>
> `And/Or` operator is implemented as a logical operator, but `Not` is not implemented in WhereParser.
> This is illustrated by following examples.
> Following query works only because we added hardcoded implementation on `not in` as predicates.
> {noformat}
> query {
> s2graph {
> User(id: 1) {
> id
> Friends(limit: 10, filter: "friend_name not in ('steamshon')") {
> User {
> id
> }
> }
> }
> }
> }
> {noformat}
> I believe implementing `Not` as a logical operator is more general, so below is my suggestion.
> {noformat}
> query {
> s2graph {
> User(id: 1) {
> id
> Friends(limit: 10, filter: "NOT (friend_name in ('steamshon'))") {
> User {
> id
> }
> }
> }
> }
> }
> {noformat}
> In this way, we don't need to implement not case for all predicates, such as `in`, `between`, `contains`, `eq`.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)