vitessio / vitess

Vitess is a database clustering system for horizontal scaling of MySQL.
http://vitess.io
Apache License 2.0
18.46k stars 2.09k forks source link

evalengine: Support all built-in MySQL functions #9647

Open vmg opened 2 years ago

vmg commented 2 years ago

The last major shortcoming of the evaluation engine are the many built-in SQL functions that ship with MySQL and which we currently do not support. Since adding support for these functions is an arduous, iterative project, this tracking issue intends to act as an authoritative list of the progress we've made bringing these functions over.

Comparison Operators

Logical Operators

Assignment Operators

Flow Control Functions

Numeric Functions and Operators

Date and Time Functions

String Functions and Operators

Cast Functions

Bit Functions and Operators

JSON

XML Functions

Encryption and Compression Functions

Miscellaneous Functions

kaveeshadinamidu commented 2 years ago

Hii @vmg, I would like to contribute to this project on GSoC 2022. Can you guide me on how should I start with this project? Thank You!

vmg commented 2 years ago

Hi @kaveeshadinamidu! There's not much you can do to get started right now since our GSoC application hasn't been approved yet. I would advise you to brush up on your Go skills meanwhile!

Jassi10000-zz commented 2 years ago

Hi @kaveeshadinamidu! There's not much you can do to get started right now since our GSoC application hasn't been approved yet. I would advise you to brush up on your Go skills meanwhile!

HI @vmg I am looking to contribute to this project in GSOC'22 , btw is the application approved ? Also please what all things I should be good with in GO, this would really help while contributing

vmg commented 2 years ago

Hi @Jassi10000! We won't know if the project has been accepted until March 7th, the official date when Google will announce the accepted organizations. As for important things to learn: I think it's important to have a solid grasp of SQL (and the particular SQL syntax that MySQL uses). For Go, just basic knowledge of the language will suffice.

Jassi10000-zz commented 2 years ago

Hi @Jassi10000! We won't know if the project has been accepted until March 7th, the official date when Google will announce the accepted organizations. As for important things to learn: I think it's important to have a solid grasp of SQL (and the particular SQL syntax that MySQL uses). For Go, just basic knowledge of the language will suffice.

I hope it gets accepted 😊, and thanks @vmg for telling about the level of knowledge I should have

vmg commented 2 years ago

Hey everyone! We've seen a lot of interest from potential students about this GSoC proposal. This includes many candidates opening PRs to implement some of the functionality of the project ahead of time. Because of this interest, I wanted to take a moment to write some contribution guidelines, so nobody wastes their time.

If you really think that opening an introductory PR will help you understand the project better, please keep the following in mind:

Let me wrap up by thanking you all, and any further prospective students, for the interest you've shown in our project, and emphasize that unless you have a very keen interest on implementing and submitting a built-in function before the project starts, your time will be better spent reviewing the project and preparing a good, comprehensive application with proper English, instead of opening incomplete PRs.

vmg commented 2 years ago

The Cloud Native Computing Foundation has been accepted for the Summer of Code, so this project can now start accepting applications. Good luck everyone!

https://summerofcode.withgoogle.com/programs/2022/organizations/cncf

csprinkle74 commented 2 years ago

`

Duplicate of #`

skant7 commented 2 years ago

Hi, @vmg I'm interested in working on this project, so the project's scope will be to implement all the leftover functions or just some part of it during the LFX mentorship time window ?

Weijun-H commented 2 years ago

Hi, @vmg I am trying to understand how evalengine works. And I find all Bit Functions and Operators almost done, does they still need to be refined? If so, could you give me some hints so that I cound work on them to understand the mechanism better.

vmg commented 2 years ago

Hi @skant7! As explained in the description, implementing all the missing functionality in the evalengine during your internship is unfeasible, so as part of your application you should come up with a subset of the functionality that you think would be useful to implement and that would fit in the duration of the program.

vmg commented 2 years ago

@Weijun-H: good catch! The bitwise functions were already implemented but we didn't update the issue. I've ticked their boxes -- I don't think any further work needs to be done on them (unless I missed some corner cases). A good place to look are a lot of the string helper functions, which are all still missing.

crsdvaibhav commented 1 year ago

@vmg Hey! I was looking to work on this issue during GSoC'23. Could you please give me a few pointers so I can better understand the codebase around the issue?

vmg commented 1 year ago

Hey @crsdvaibhav! This was a GSoC'22 project that has already finished. We still don't know whether Vitess will participate in GSoC'23, whether it'll get accepted, and whether this project will be resumed then! I'll update this issue once we figure things out. Stay tuned and thanks for your interest.

crsdvaibhav commented 1 year ago

Thanks for the status! In the meantime I will at the other issues.

On Fri, 9 Dec, 2022, 5:48 pm Vicent Martí, @.***> wrote:

Hey @crsdvaibhav https://github.com/crsdvaibhav! This was GSoC'22 project that has already finished. We still don't know whether Vitess will participate in GSoC'23, whether it'll get accepted, and whether this project will be resumed then! I'll update this issue once we figure things out. Stay tuned and thanks for your interest.

— Reply to this email directly, view it on GitHub https://github.com/vitessio/vitess/issues/9647#issuecomment-1344238209, or unsubscribe https://github.com/notifications/unsubscribe-auth/AW2EDG7AZJ24IWPBP6AZN6DWMMPQFANCNFSM5NYCLXFQ . You are receiving this because you were mentioned.Message ID: @.***>

Anu-Ra-g commented 1 year ago

So for all these new applicants, applying to these programs like GSOC, LFX, etc. on what basis are they selected, considering the fact that an applicant has no prior experience in Golang, necessary tools, and the development of the project? @vmg I'm planning to such open source programs.

vmg commented 1 year ago

Hey @Anu-Ra-g! I am going very soon on paternity leave (:baby: :tada:) so there isn't going to be any evalengine related projects for Vitess this year, as I won't be around to mentor.

For all the other Vitess-related projects that we're going to have this year in GSOC and LFX, we're looking for actual experience in Golang. As a rule of thumb, you're supposed to apply to internship projects for languages you have a beginner-intermediate expertise with, because the mentorship time must be spent actually onboarding you on the technical details of the project, not teaching you how to program in Go.

Cheers!