box: implement tuple constraints
Implement whole tuple constraints in addition to field constraints. They are quite similar to field constraints, the difference is: * The are set in space options instead of format field definition. * Entire tuple is passed to check function. * By design field constraints are a bit more optimal. One can set up constraint in space options, with one or several functions that must be present in _func space: box.schema.space.create(.. {.. constraint='func1'}) box.schema.space.create(.. {.. constraint={name1='func1'}) box.schema.space.create(.. {.. constraint={name1='f1', name2='f2'}) NO_DOC=see later commits NO_CHANGELOG=see later commits
Showing
- src/box/errcode.h 1 addition, 0 deletionssrc/box/errcode.h
- src/box/lua/misc.cc 1 addition, 1 deletionsrc/box/lua/misc.cc
- src/box/lua/schema.lua 11 additions, 0 deletionssrc/box/lua/schema.lua
- src/box/lua/space.cc 26 additions, 0 deletionssrc/box/lua/space.cc
- src/box/space.c 11 additions, 0 deletionssrc/box/space.c
- src/box/space_def.c 42 additions, 1 deletionsrc/box/space_def.c
- src/box/space_def.h 4 additions, 0 deletionssrc/box/space_def.h
- src/box/tuple_constraint.h 3 additions, 0 deletionssrc/box/tuple_constraint.h
- src/box/tuple_constraint_func.c 6 additions, 1 deletionsrc/box/tuple_constraint_func.c
- src/box/tuple_format.c 55 additions, 4 deletionssrc/box/tuple_format.c
- src/box/tuple_format.h 13 additions, 2 deletionssrc/box/tuple_format.h
- test/box/error.result 1 addition, 0 deletionstest/box/error.result
- test/engine-luatest/gh_6436_tuple_constraint_test.lua 499 additions, 0 deletionstest/engine-luatest/gh_6436_tuple_constraint_test.lua
Loading
Please register or sign in to comment