[patches] [PATH 1/1] test: ensure is_nullable can be enabled in non-empty space format

Vladislav Shpilevoy v.shpilevoy at tarantool.org
Tue Feb 13 18:01:11 MSK 2018


Closes #2973

Signed-off-by: Vladislav Shpilevoy <v.shpilevoy at tarantool.org>
---
 test/engine/null.result   | 116 ++++++++++++++++++++++++++++++++++++++++++++++
 test/engine/null.test.lua |  35 ++++++++++++++
 2 files changed, 151 insertions(+)

diff --git a/test/engine/null.result b/test/engine/null.result
index 835f4d6f4..5c3d57ff0 100644
--- a/test/engine/null.result
+++ b/test/engine/null.result
@@ -755,3 +755,119 @@ s.index.i5:select()
 s:drop()
 ---
 ...
+--
+-- gh-2973: allow to enable nullable on a non-empty space.
+--
+format = {}
+---
+...
+format[1] = {name = 'field1', type = 'unsigned'}
+---
+...
+format[2] = {name = 'field2', type = 'unsigned'}
+---
+...
+s = box.schema.create_space('test', {format = format})
+---
+...
+pk = s:create_index('pk')
+---
+...
+s:replace{1, 1}
+---
+- [1, 1]
+...
+s:replace{100, 100}
+---
+- [100, 100]
+...
+s:replace{50, 50}
+---
+- [50, 50]
+...
+s:replace{25, box.NULL}
+---
+- error: 'Tuple field 2 type does not match one required by operation: expected unsigned'
+...
+format[2].is_nullable = true
+---
+...
+s:format(format)
+---
+...
+s:replace{25, box.NULL}
+---
+- [25, null]
+...
+s:replace{10, box.NULL}
+---
+- [10, null]
+...
+s:replace{150, box.NULL}
+---
+- [150, null]
+...
+s:select{}
+---
+- - [1, 1]
+  - [10, null]
+  - [25, null]
+  - [50, 50]
+  - [100, 100]
+  - [150, null]
+...
+s:drop()
+---
+...
+s = box.schema.create_space('test')
+---
+...
+pk = s:create_index('pk')
+---
+...
+sk = s:create_index('sk', {parts = {{2, 'unsigned', is_nullable = false}}})
+---
+...
+s:replace{1, 1}
+---
+- [1, 1]
+...
+s:replace{100, 100}
+---
+- [100, 100]
+...
+s:replace{50, 50}
+---
+- [50, 50]
+...
+s:replace{25, box.NULL}
+---
+- error: 'Tuple field 2 type does not match one required by operation: expected unsigned'
+...
+sk:alter({parts = {{2, 'unsigned', is_nullable = true}}})
+---
+...
+s:replace{25, box.NULL}
+---
+- [25, null]
+...
+s:replace{10, box.NULL}
+---
+- [10, null]
+...
+s:replace{150, box.NULL}
+---
+- [150, null]
+...
+sk:select{}
+---
+- - [10, null]
+  - [25, null]
+  - [150, null]
+  - [1, 1]
+  - [50, 50]
+  - [100, 100]
+...
+s:drop()
+---
+...
diff --git a/test/engine/null.test.lua b/test/engine/null.test.lua
index 19a70d68a..777a847f0 100644
--- a/test/engine/null.test.lua
+++ b/test/engine/null.test.lua
@@ -242,3 +242,38 @@ s.index.i4:select()
 s.index.i5:select()
 
 s:drop()
+
+--
+-- gh-2973: allow to enable nullable on a non-empty space.
+--
+format = {}
+format[1] = {name = 'field1', type = 'unsigned'}
+format[2] = {name = 'field2', type = 'unsigned'}
+s = box.schema.create_space('test', {format = format})
+pk = s:create_index('pk')
+s:replace{1, 1}
+s:replace{100, 100}
+s:replace{50, 50}
+s:replace{25, box.NULL}
+
+format[2].is_nullable = true
+s:format(format)
+s:replace{25, box.NULL}
+s:replace{10, box.NULL}
+s:replace{150, box.NULL}
+s:select{}
+s:drop()
+
+s = box.schema.create_space('test')
+pk = s:create_index('pk')
+sk = s:create_index('sk', {parts = {{2, 'unsigned', is_nullable = false}}})
+s:replace{1, 1}
+s:replace{100, 100}
+s:replace{50, 50}
+s:replace{25, box.NULL}
+sk:alter({parts = {{2, 'unsigned', is_nullable = true}}})
+s:replace{25, box.NULL}
+s:replace{10, box.NULL}
+s:replace{150, box.NULL}
+sk:select{}
+s:drop()
-- 
2.14.3 (Apple Git-98)




More information about the Tarantool-patches mailing list