Hej :3 pomysł Octosqla jara mnie od samego początku xD a że lubię w przerawach coś kodzić dla przyjemność to z chęcią dodałbym jakieś funkcjonalności najlepiej takie które nie kolidują z głównym kierunkiem rozwoju żeby wam nie przeszkadzać a jednocześnie zrobić coś fajnego dookoła. :3
Mam taką listę pomysłów:
https://docs.google.com/document/d/1o-7BGoqyT7MNBN4QkYOyLMMFVmOJZ60OTuinc9yQxe0/edit
Jak jest coś co fajnie byłoby mieć i coś co mógłbym zrobić to też jestem otwarty na propozycje. Najlepiej jakieś takie rzeczy które wam nie przeszkadzają i nie są najważniejszymi ficzerami żeby potem nie było problemu z wydzieleniem tego co było napisane w ramach licencjatu a co nie np ale żebym miał frajdę z napisania czegoś fajnego xD
@cube2222
Yeah, I agree, I wouldn't like the presence of cgo-dependent code inside Octosql repository.
I generally agree with everything you said.
I didn't know that there's any builtin TVF like range etc. I will check how that works :3
The REPL will require only some kind of interface so as you said it will conform the split-up.
I will look at how envoy is utilizing proto-validate.
From all the mentioned things I could look at cube2222/octosql#135 and try to work out the best approach and consult that with you.
btw I think that the problem with stdin ambivalence could be resolved by introducing typed scalar functions for that. Let me know what you think about that @cube2222 :3
There could be a stdin()
function that returns a scalar value - stream object and a TVF that accepts it so reading a csv from stdin would look like this:
SELECT * FROM loadfile(type => 'csv', input => stdin())
We can potentially add multiple possible inputs so that the code is more composable.
We can introduce a little (very primitive) type system to perform type checking.
We already thought about a restructure where we could make datasources more composable. Instead of having a json data source provide a file datasource with a pluggable decoder (json, csv, etc). Would then be easy to add something like S3 blobs with various decoding. That would be a big one tho.
Anyways, I'm a little bit afraid of adding stuff like stream objects in SQL. So maybe we'd just add an argument stdin => true? That would be the most simple in the current state of things.