- Create a database called TreeTest and open QA and execute Setup SQL
- Now you are ready to go. Simply select the test you with to run, then
copy the code below, paste it into Query Analyser and hit F5!
- TEST 1 - _NestedSet_ConvertToAdjacency
- TEST 2 - _NestedSet_DeleteAndClose
- TEST 3 - _NestedSet_DeleteNodeAndLeafs
- TEST 4 - _NestedSet_GetAll
- TEST 5 - _NestedSet_GetDepthFullTree
- TEST 6 - _NestedSet_GetDepthSubTree
- TEST 7 - _NestedSet_GetLeafs
- TEST 8 - _NestedSet_GetNextLevel
- TEST 9 - _NestedSet_GetSinglePath
- TEST 10 - _NestedSet_GetTree
- TEST 11 - _NestedSet_GetTree
- TEST 12 - _NestedSet_InsertOnSameLevel
- TEST 13 - _NestedSet_Move
- TEST 14 - _NestedSet_MoveUpDown
Top
Test 1 - _NestedSet_ConvertToAdjacency
Converts a nested set to a Adjacency model
exec __Reset exec _NestedSet_ConvertToAdjacency
Top
Test 2 - _NestedSet_DeleteAndClose
Deletes a node then moves any sub nodes up to close the gap
exec __Reset exec _NestedSet_TestLayout exec _NestedSet_DeleteAndClose 7 exec _NestedSet_TestLayout
Top
Test 3 - _NestedSet_DeleteNodeAndLeafs
Deletes a node and all sub nodes then closes any gaps
exec __Reset exec _NestedSet_TestLayout exec _NestedSet_DeleteNodeAndLeafs 2 exec _NestedSet_TestLayout
Top
Test 4 - _NestedSet_GetAll
Simply gets all the nodes
exec __Reset exec _NestedSet_GetAll
Top
Test 5 - _NestedSet_GetDepthFullTree
Simply gets all the nodes with depths
exec __Reset exec _NestedSet_GetDepthFullTree
Top
Test 6 - _NestedSet_GetDepthSubTree
Gets the depths of the selected node and sub nodes
exec __Reset exec _NestedSet_TestLayout exec _NestedSet_GetDepthSubTree 2
Top
Test 7 - _NestedSet_GetLeafs
Gets all the leafs - that is nodes without sub nodes
exec __Reset exec _NestedSet_GetLeafs
Top
Test 8 - _NestedSet_GetNextLevel
Gets all nodes that are directly below the selected node
exec __Reset exec _NestedSet_TestLayout exec _NestedSet_GetNextLevel 1
Top
Test 9 - _NestedSet_GetSinglePath
Gets a full path for a single node
exec __Reset exec _NestedSet_TestLayout exec _NestedSet_GetSinglePath 8
Top
Test 10 - _NestedSet_GetTree
Gets nodes including and below the selected node
exec __Reset exec _NestedSet_TestLayout exec _NestedSet_GetTree 2
Top
Test 11 - _NestedSet_InsertDirectlyBelow
Inserts a node directly below the selected node
exec __Reset exec _NestedSet_TestLayout exec _NestedSet_InsertDirectlyBelow 1,'new name' exec _NestedSet_TestLayout
Top
Test 12 - _NestedSet_InsertOnSameLevel
Inserts a node on the same level (at the bottom) as the selected node
exec __Reset exec _NestedSet_TestLayout exec _NestedSet_InsertOnSameLevel 1,'new name' exec _NestedSet_TestLayout
Top
Test 13 - _NestedSet_Move
Moves a node to below another node
exec __Reset exec _NestedSet_TestLayout exec _NestedSet_Move 6,3 exec _NestedSet_TestLayout
Top
Test 14 - _NestedSet_MoveUpDown
Moves a node on the same level either up or down (1 for up, 0 for down) to another node
exec __Reset exec _NestedSet_TestLayout exec _NestedSet_MoveUpDown 2,0 exec _NestedSet_TestLayout
References
- Mike Hillyer Managing Hierarchical Data in MySQL (I have used his sample data)
- Joe Celko's Trees and Hierarchies in SQL for Smarties - 2004
Alejandro Izaguirre Google groups
I would also like to thank:-
- Ryan O'Neill
- Nick Crowther