box: run check constraint on space insertion
To perform ck constraints tests before insert or update space operation, we use precompiled VDBE machine associated with each ck constraint, that is executed in on_replace trigger. Each ck constraint VDBE code consists of 1) prologue code that maps new(or updated) tuple via binding, 2) ck constraint code generated by CK constraint AST. In case of ck constraint error the tuple insert/replace operation is aborted and ck constraint error is handled as diag message. Needed for #3691
Showing
- src/box/alter.cc 92 additions, 8 deletionssrc/box/alter.cc
- src/box/ck_constraint.c 130 additions, 5 deletionssrc/box/ck_constraint.c
- src/box/ck_constraint.h 23 additions, 5 deletionssrc/box/ck_constraint.h
- src/box/errcode.h 1 addition, 0 deletionssrc/box/errcode.h
- src/box/space.c 2 additions, 0 deletionssrc/box/space.c
- src/box/space.h 2 additions, 0 deletionssrc/box/space.h
- src/box/sql/expr.c 10 additions, 3 deletionssrc/box/sql/expr.c
- src/box/sql/insert.c 19 additions, 73 deletionssrc/box/sql/insert.c
- src/box/sql/sqlInt.h 34 additions, 3 deletionssrc/box/sql/sqlInt.h
- src/box/sql/vdbe.h 0 additions, 1 deletionsrc/box/sql/vdbe.h
- src/box/sql/vdbeapi.c 8 additions, 21 deletionssrc/box/sql/vdbeapi.c
- test/box/misc.result 1 addition, 0 deletionstest/box/misc.result
- test/sql-tap/check.test.lua 16 additions, 16 deletionstest/sql-tap/check.test.lua
- test/sql-tap/fkey2.test.lua 2 additions, 2 deletionstest/sql-tap/fkey2.test.lua
- test/sql-tap/table.test.lua 6 additions, 6 deletionstest/sql-tap/table.test.lua
- test/sql/checks.result 313 additions, 11 deletionstest/sql/checks.result
- test/sql/checks.test.lua 96 additions, 0 deletionstest/sql/checks.test.lua
- test/sql/errinj.result 12 additions, 6 deletionstest/sql/errinj.result
- test/sql/gh-2981-check-autoinc.result 8 additions, 4 deletionstest/sql/gh-2981-check-autoinc.result
- test/sql/types.result 2 additions, 1 deletiontest/sql/types.result
Loading
Please register or sign in to comment