Hi Rong,
Greetings from another Sergey, MariaDB Foundation.
Just to set the roles, do I understand correctly that you (ByteDance?) are will
be the primary driver of this effort and you need assistance from our side. Not
vice versa. Correct?
In either way, here is what I'd do if I were to implement it myself:
1. Pick the primary target branch. I'd use main if you're expecting many changes to
MariaDB codebase, otherwise 10.11 should be alright.
2. I'd consider MySQL and MariaDB as different products from APIs point of view.
E.g. Spider in MariaDB 10.3 was attempting to keep code compatible with all
supported MySQL and MariaDB versions and it got overbloated with version check
ifdefs such that code was almost unreadable.
3. Same for different MariaDB versions: I'd keep the code in separate branches for
each supported version and merge from the lowest one to the highest.
4. Then we have 3 source code entities:
- MariaDB source code itself
- storage/videx - storage engine implementation
- storage/videx/videx - videx server and other common stuff
storage/videx can be either a submodule or go under MariaDB git history. Currently all
storage engines use the latter approach. Directory contents:
CMakeLists.txt
ha_videx.cc
videx/
mysql-test/
storage/videx/videx should probably be a submodule in your case.
5. I'd move all common code out of current ha_videx.cc.
6. Create MariaDB storage/videx implementation, make it compile.
7. Start populating storage/videx/mysql-test with various use cases, fix bugs.
I'm unsure about MySQL and MariaDB regression testing systems compatibility,
but some common tests can live in storage/videx/videx and imported during
compilation.
8. Once things are in a decent state we should be able to make videx part of MariaDB.
Speaking of communication channels: in this thread you have emails of most
relevant MariaDB engineers that you may want to deal with. I can help you deal
with general questions and coordinate this project on MariaDB side. Sergey
Petrunia should definitely step in at point 6-7, once we start dealing with optimizer
differences. You should be able to use @svoj in your github issues/pull requests to
ping me. MDEV-36737 and this mailing list are also alright.
Regards,
Sergey