box: implement complex foreign keys
Implement complext foreign keys addition to field foreign keys. They are quite similar to field foreign keys, the difference is: * The are set in space options instead of format field definition. * Several fields may be specified in relation. * By design field foreign keys are more optimal. One can set up foreign keys in space options: box.schema.space.create(.. {.., foreign_key=<foreign_key>}) where foreign_key can be of one of the following forms: foreign_key={space=..,field=..} foreign_key={<name1>={space=..,field=..}, ..} where field must be a table with local -> foreing fields mapping: field={local_field1=foreign_field1, ..} NO_DOC=see later commits NO_CHANGELOG=see later commits
Showing
- src/box/errcode.h 1 addition, 0 deletionssrc/box/errcode.h
- src/box/field_def.c 2 additions, 1 deletionsrc/box/field_def.c
- src/box/lua/schema.lua 68 additions, 11 deletionssrc/box/lua/schema.lua
- src/box/lua/space.cc 69 additions, 1 deletionsrc/box/lua/space.cc
- src/box/space.c 8 additions, 2 deletionssrc/box/space.c
- src/box/space_def.c 33 additions, 0 deletionssrc/box/space_def.c
- src/box/tuple_constraint.c 9 additions, 3 deletionssrc/box/tuple_constraint.c
- src/box/tuple_constraint.h 30 additions, 1 deletionsrc/box/tuple_constraint.h
- src/box/tuple_constraint_def.c 128 additions, 8 deletionssrc/box/tuple_constraint_def.c
- src/box/tuple_constraint_def.h 28 additions, 3 deletionssrc/box/tuple_constraint_def.h
- src/box/tuple_constraint_fkey.c 285 additions, 31 deletionssrc/box/tuple_constraint_fkey.c
- src/box/tuple_constraint_fkey.h 2 additions, 0 deletionssrc/box/tuple_constraint_fkey.h
- test/box/error.result 1 addition, 0 deletionstest/box/error.result
- test/engine-luatest/gh_6436_complex_foreign_key_test.lua 534 additions, 0 deletionstest/engine-luatest/gh_6436_complex_foreign_key_test.lua
Loading
Please register or sign in to comment