Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EPIC] A collection of items to improve DataFuson stability (reduce effort required to upgrade) #13648

Open
4 of 13 tasks
alamb opened this issue Dec 4, 2024 · 9 comments
Open
4 of 13 tasks
Labels
enhancement New feature or request

Comments

@alamb
Copy link
Contributor

alamb commented Dec 4, 2024

Is your feature request related to a problem or challenge?

This is broken out from a more general ticket here

🥳 In my opinion DataFusion is now good enough (performance and feature wise) for many people to have buit real systems and products

However, as more people build "real" systems using DataFusion, our historic "move fast and break things and hope you can keep up" mentality likely needs to adjust to a more mature "move as fast as possible, but minimize breakages" type response.

My summary of the discussion on #13525 from @findepi @scsmithr @waynexia @timsaucer @Rachelint @Omega359 @jonmmease @Dandandan and @andygrove was that many existing heavy users of DataFusion spend a lot of time during upgrades from one DataFusion release to another

Specifically, I think the core challenge I heard was NOT the mechnical API changes required, but the effort required to diagnose more suble issues such as:

  • Queries that used to work stopped working

Describe the solution you'd like

I would like to improve the ease of upgrading DataFusion versions

There are many ways to do so and I would like to use this ticket to capture / organize the work in this area

Related Items

Additional testing

More Context:

@alamb alamb added the enhancement New feature or request label Dec 4, 2024
@jonathanc-n
Copy link
Contributor

Yes, I think one of the comments in that discussion mentioned that certain changes that would cause breakage should be mentioned in every release. So before release, we should list out the possible changes that would need to be made if a upgrade were to happen during the development process.

@alamb
Copy link
Contributor Author

alamb commented Dec 4, 2024

So before release, we should list out the possible changes that would need to be made if a upgrade were to happen during the development process.

I think it is a great idea. The challenge will be identifying such changes I thunk

@comphead
Copy link
Contributor

comphead commented Dec 4, 2024

There is an interesting approach at MariaDB, they generate queries with different syntaxes to find regressions.
Basically we can take their main.sql file which is 7MB of different queries including join queries and adapt it to DF.

There is no answers check, just smoke test that query can run successfully

The example can be found https://github.com/mariadb-corporation/mariadb-qa/tree/master/pquery

@alamb WDYT? it looks like a low hanging fruit, we can take the file and run it in latest datafusion CLI as part of CI or major release verification process

@alamb
Copy link
Contributor Author

alamb commented Dec 4, 2024

@alamb WDYT? it looks like a low hanging fruit, we can take the file and run it in latest datafusion CLI as part of CI or major release verification process

I think in general the more testing we have the better. This idea sounds good to me -- I think more fully leveraging @2010YOUY01 's integration into sqlancer is also quite interesting.

Let's try and write some tickets to capture these ideas too - I can spend some time working on this over the next day or two

@Omega359
Copy link
Contributor

Omega359 commented Dec 4, 2024

There is an interesting approach at MariaDB, they generate queries with different syntaxes to find regressions. Basically we can take their main.sql file which is 7MB of different queries including join queries and adapt it to DF.

There is no answers check, just smoke test that query can run successfully

The example can be found https://github.com/mariadb-corporation/mariadb-qa/tree/master/pquery

@alamb WDYT? it looks like a low hanging fruit, we can take the file and run it in latest datafusion CLI as part of CI or major release verification process

Almost absolutely NOT. https://github.com/mariadb-corporation/mariadb-qa/blob/master/LICENSE.md

https://www.apache.org/legal/resolved.html#category-x

@comphead
Copy link
Contributor

comphead commented Dec 4, 2024

Thats frustrating. Lets see if sqlancer can generate something similar.

@crepererum
Copy link
Contributor

I would like to propose #13665 as well.

@comphead
Copy link
Contributor

comphead commented Dec 5, 2024

Here is a cockroachDB article that might be found interesting on fuzz testing the DB with generating random(valid/not valid) statements through SQLSmith

https://www.cockroachlabs.com/blog/sqlsmith-randomized-sql-testing/
https://www.cockroachlabs.com/blog/testing-random-valid-sql-in-cockroachdb/

I understand SQLancer is the way, but we may consider this as an alternative just in case

@alamb
Copy link
Contributor Author

alamb commented Dec 20, 2024

I found a good previous discussion by @andygrove about potential patch releases:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants