What are "operations" in the vision statement #7
Replies: 2 comments 7 replies
-
Thanks for bringing this up! My intention was definitely option 2+. The plus is because function is pretty generic and some kinds of things (say batch level columnar transformations) are included within what I'd like to cover but I don't think most people will think of them when they initially say "function". A good example is when working with geo, a contains operation may actually take a set, build an S2 geometry version of the data and do contains operations using that. It's kind of a function except that it has some kind of intermediate set-level state. I think that's a type of operation that should also be covered. Do you have some proposed language to help clarify things? |
Beta Was this translation helpful? Give feedback.
-
No, and it probably doesn't have to be solved in the vision statement itself as long as it is expanded somewhere else on the site. Perhaps it could be covered by another use case. Something like one of...
|
Beta Was this translation helpful? Give feedback.
-
The vision statement currently reads...
What is an "operation"? For example:
Option 1: operation => relational algebra operator
In this definition an operation would be something like "select", "project", "union", "order by", "udf", etc. Given such a definition, you could even envision a specification that doesn't have any type system at all. A type is just a tuple of (unique identifier, is_sortable, is_hashable). Cast would simply be another udf. The unique identifier could include physical representation, if needed by an implementation. This would be a smaller and simpler vision.
Option 2: operation => relational algebra operator OR function
In this definition operations would include things like "add", "upper", "ucase", "lcase", "round". In such a definition you would need a type system because you would need to be able to formally define the semantics of an operation. What behavior happens if integer addition overflows? What expectations are there are the precision of floating point operations? Does F & null => null or F? Can an interval be multiplied by an integer of floating point number? Option 2 has a much broader vision.
Options 3+: ???
My interpretation is that this spec is aimed at option 2 but I wanted to clarify because it also might be somewhere in between options 1 and 2 and I think a very clear idea of the scope is going to be important.
Beta Was this translation helpful? Give feedback.
All reactions