-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Add backward compatibility regression test suite for multi-stage query engine #13193
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #13193 +/- ##
============================================
+ Coverage 61.75% 62.12% +0.37%
+ Complexity 207 198 -9
============================================
Files 2436 2536 +100
Lines 133233 139442 +6209
Branches 20636 21555 +919
============================================
+ Hits 82274 86629 +4355
- Misses 44911 46320 +1409
- Partials 6048 6493 +445
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
pinot-common/src/main/java/org/apache/pinot/common/utils/SqlResultComparator.java
Outdated
Show resolved
Hide resolved
IIUC, this PR currently has a couple of tables and a few queries. What would it take to support other datasets and queries? For example Another question for the future. The concept of plan versions has to be introduced. Compatibility of a specific version has to be tested ? |
Is this what you're referring to - Line 287 in 518fd18
If yes, that's from the integration test suite and is completely separate from the backward compatibility regression test framework (added in #6129). The latter is a set of bash scripts and yaml configurations to set up controllers, brokers, servers and upgrading / downgrading each sequentially while also ingesting real-time / offline data and running a bunch of static queries.
I think it should be pretty straightforward to add more datasets and queries once we have this baseline in place. It's currently quite important that we at least have some backward compatibility regression tests for the multi-stage query engine since there's none currently and the only way to detect that a commit is breaking backward compatibility with it is via either eyeballing the code or manually setting up a cluster for an upgrade test. The compatibility verifier has a script to generate test data but nothing to generate random queries though.
I'm not sure I follow? Currently, this PR adds a new GitHub Actions workflow that can be manually triggered during Pinot releases to verify that backward compatibility for the multi-stage query engine is maintained with previously released versions. This also adds a new check that runs on every PR to ensure that the PR isn't introducing a backward incompatible change for the multi-stage query engine (currently only run versus |
3e3dbc4
to
f03f4c7
Compare
master
whereas the existing tests currently run againstrelease-1.0.0
,release-1.1.0
andmaster
.release-1.2.0
,release-1.3.0
etc. will be added to the list of branches that the multi-stage query engine backward compatibility tests are run against.testing