Subclauses CIP #200
Subclauses CIP #200
Conversation
Fixes #194
Nice one! Just a few comments |
|
||
== Background | ||
|
||
This CIP is a proposal in answer to link:https://github.com/opencypher/openCypher/issues/194[CIR-2017-194]. |
petraselmer
Mar 6, 2017
Contributor
"answer" -> "response"
"answer" -> "response"
=== Semantics | ||
|
||
The `LIMIT` subclause prevents records passing through its parent clause after the specified amount of rows, as determined by the limit expression, has been processed. | ||
For these semantics to be well defined, the limit expression must be constant over the query lifetime, such as parameters or literals. |
petraselmer
Mar 6, 2017
Contributor
Can this be expanded on a bit more? It's not 100% clear what is being said. If need be, an example could be provided.
Can this be expanded on a bit more? It's not 100% clear what is being said. If need be, an example could be provided.
Mats-SX
Mar 8, 2017
Author
Member
Expanded and gave two examples.
Expanded and gave two examples.
|
||
==== Updating queries | ||
|
||
The use of `LIMIT` opens the possibility for certain performance optimisations. |
petraselmer
Mar 6, 2017
Contributor
"opens the possibility" -> "opens up the possibility"
"opens the possibility" -> "opens up the possibility"
|
||
=== Semantics | ||
|
||
The `LIMIT` subclause prevents records passing through its parent clause after the specified amount of rows, as determined by the limit expression, has been processed. |
petraselmer
Mar 6, 2017
Contributor
"limit expression" -> hmmm... it reads a bit awkwardly at present. Maybe something such as "expression provided to the LIMIT
clause" or something. Maybe even formatting would help, such as all in italics, or LIMIT
expression?
"limit expression" -> hmmm... it reads a bit awkwardly at present. Maybe something such as "expression provided to the LIMIT
clause" or something. Maybe even formatting would help, such as all in italics, or LIMIT
expression?
Mats-SX
Mar 8, 2017
Author
Member
How about
the expression used as argument to LIMIT
?
How about
the expression used as argument to LIMIT
?
petraselmer
Mar 8, 2017
Contributor
That works - just include "the argument"
That works - just include "the argument"
==== Updating queries | ||
|
||
The use of `LIMIT` opens the possibility for certain performance optimisations. | ||
Clauses that come early in the query do not have to be evaluated over the full dataset, just enough to reach the subsequent limit. |
petraselmer
Mar 6, 2017
Contributor
"that come early" -> "appearing earlier"
"that come early" -> "appearing earlier"
petraselmer
Mar 6, 2017
Contributor
"do not have to be evaluated over the full dataset, just enough to reach the subsequent limit."
->
"only need to be evaluated until the limit is reached, as opposed to evaluating the entire dataset."
"do not have to be evaluated over the full dataset, just enough to reach the subsequent limit."
->
"only need to be evaluated until the limit is reached, as opposed to evaluating the entire dataset."
Clauses that come early in the query do not have to be evaluated over the full dataset, just enough to reach the subsequent limit. | ||
These optimisations are however not always applicable in combination with updating clauses. | ||
Semantics between clauses is defined such that _all_ of a previous clause is processed (logically) before _any_ of a subsequent clause is processed. | ||
This means that _all_ side effects must happen before a `LIMIT` is allowed to halt the processing of records in preceding clauses. |
petraselmer
Mar 6, 2017
Contributor
"halt" -> "terminate"
"halt" -> "terminate"
Semantics between clauses is defined such that _all_ of a previous clause is processed (logically) before _any_ of a subsequent clause is processed. | ||
This means that _all_ side effects must happen before a `LIMIT` is allowed to halt the processing of records in preceding clauses. | ||
|
||
Consider the below query: |
petraselmer
Mar 6, 2017
Contributor
"below query"
->
"following query"
"below query"
->
"following query"
|
||
Consider the below query: | ||
|
||
.Create a producer for each item, return first 100 product ids. |
petraselmer
Mar 6, 2017
Contributor
Format "producer"
Format "producer"
petraselmer
Mar 6, 2017
Contributor
"item, return first 100 product ids"
->
"item, returning the first 100 product ids"
"item, return first 100 product ids"
->
"item, returning the first 100 product ids"
Mats-SX
Mar 8, 2017
Author
Member
I don't think producer needs formatting here. The example talks about items and producers as concepts, and I think it's clear that these are then represented by nodes with matching labels.
I don't think producer needs formatting here. The example talks about items and producers as concepts, and I think it's clear that these are then represented by nodes with matching labels.
|
||
If the user intention is to only do a partial update of the graph, the query must be rewritten: | ||
|
||
.Create a producer for the 100 first items, return their product ids. |
petraselmer
Mar 6, 2017
Contributor
"100 first items, return their product ids"
->
"top 100 items, and return their product ids"
"100 first items, return their product ids"
->
"top 100 items, and return their product ids"
petraselmer
Mar 6, 2017
Contributor
Format "producer"
Format "producer"
- Rename file to correct name for the CIP - Improve language
This should be extended to also include In fact all of the following sub-clauses should always go together:
|
@thobe Extended! |
This CIP is in response to #194
CIP