compat: add is_new and is_old to options
It used to be somewhat complicated to check the effective value of a compat option, because `<option_name>.current` could contain 'default' state. This patch introduces helper functions that take care of that. The following alternatives were considered: * `compat.<option_name>.effective` - it is excessive in the presence if `current` and `default`, and is visible in serialization * `compat.<option_name>.get()` - while it is a function, it does only half of the work required, user still has to compare result to 'new' Closes #8807 @TarantoolBot document Title: Add `:is_new/old()` helpers to tarantool.compat options `compat.<option_name>.current` can be 'new', 'old' or 'default', thus when it is default there must be an additional check if `compat.<option_name>.default` is 'new'. It is handier to have a helper to deal with that instead of complicated `if`: * check if effective value is 'new' before the patch: ```lua if compat.<option_name>.current == 'new' or (compat.<option_name>.current == 'default' and compat.<option_name>.default == 'new') then ... end ``` * after the patch: ```lua if compat.<option_name>:is_new() then ... end ``` Please update [tutorial on using compat], maybe add an example to [Listing options details]. [tutorial on using compat]: https://www.tarantool.io/en/doc/latest/reference/reference_lua/compat/compat_tutorial/ [Listing options details]: https://www.tarantool.io/en/doc/latest/reference/reference_lua/compat/compat_tutorial/#listing-options-details (cherry picked from commit 5f6d367c)
Showing
- changelogs/unreleased/gh-8807-compat-is-new-old.md 4 additions, 0 deletionschangelogs/unreleased/gh-8807-compat-is-new-old.md
- src/lua/compat.lua 22 additions, 0 deletionssrc/lua/compat.lua
- test/app-luatest/gh_7000_compat_module_test.lua 20 additions, 0 deletionstest/app-luatest/gh_7000_compat_module_test.lua
Please register or sign in to comment