sql: enforce implicit type conversions
Most DBs (at least PostgreSQL, Oracle and DB2) allow to process following queries: CREATE TABLE t1 (id INT PRIMARY KEY); INSERT INTO t1 VALUES (1.123), ('2'); In this particular case, 1.123 should be simply truncated to 1, and '2' - converted to literal number 2. After passing real type to Tarantool (instead of <SCALAR>), example above would fail without conversions. Thus, lets add implicit conversions inside VDBE to make this example be legal. However, still some types conversions must be prohibited. For instance, <BLOB> can't be converted to integer or floating point numerical, and vice versa.
Showing
- src/box/errcode.h 1 addition, 0 deletionssrc/box/errcode.h
- src/box/field_def.c 18 additions, 0 deletionssrc/box/field_def.c
- src/box/field_def.h 5 additions, 0 deletionssrc/box/field_def.h
- src/box/sql/expr.c 53 additions, 9 deletionssrc/box/sql/expr.c
- src/box/sql/insert.c 13 additions, 1 deletionsrc/box/sql/insert.c
- src/box/sql/vdbe.c 155 additions, 57 deletionssrc/box/sql/vdbe.c
- src/box/sql/vdbeInt.h 5 additions, 5 deletionssrc/box/sql/vdbeInt.h
- src/box/sql/vdbeapi.c 9 additions, 3 deletionssrc/box/sql/vdbeapi.c
- src/box/sql/vdbemem.c 111 additions, 85 deletionssrc/box/sql/vdbemem.c
- test/box/misc.result 1 addition, 0 deletionstest/box/misc.result
- test/sql-tap/analyze9.test.lua 1 addition, 1 deletiontest/sql-tap/analyze9.test.lua
- test/sql-tap/autoinc.test.lua 1 addition, 1 deletiontest/sql-tap/autoinc.test.lua
- test/sql-tap/badutf1.test.lua 1 addition, 22 deletionstest/sql-tap/badutf1.test.lua
- test/sql-tap/cast.test.lua 23 additions, 96 deletionstest/sql-tap/cast.test.lua
- test/sql-tap/default.test.lua 2 additions, 2 deletionstest/sql-tap/default.test.lua
- test/sql-tap/e_select1.test.lua 1 addition, 1 deletiontest/sql-tap/e_select1.test.lua
- test/sql-tap/fkey2.test.lua 1 addition, 1 deletiontest/sql-tap/fkey2.test.lua
- test/sql-tap/in4.test.lua 1 addition, 1 deletiontest/sql-tap/in4.test.lua
- test/sql-tap/index1.test.lua 2 additions, 2 deletionstest/sql-tap/index1.test.lua
- test/sql-tap/insert3.test.lua 20 additions, 20 deletionstest/sql-tap/insert3.test.lua
Loading
Please register or sign in to comment