8 | | This would insert the `VALUES` (a 2D object) into the existing 3D objects in `3Dcube` at slice t=5. The existing slices at t>=5 will be moved to t+1, i.e. slice 5 becomes 6, etc. |
9 | | |
10 | | A more general and conceptually more appealing approach would be to implement a 'shift' operator in the `update` statement, that allows to move slices around. |
11 | | |
12 | | Example (should be refined) |
13 | | {{{ |
14 | | update 3Dcube as c |
15 | | set c |
16 | | assign shift(5, 1, 1) |
17 | | }}} |
18 | | `shift(5, 1, 1)` means move slice 5 (arg 1) of dimension 1 (arg 2) for 1 (i.e. to slice 6). The 3rd argument could be -1 for example to shift to slice 4. |
19 | | |
20 | | Implementation: this could be implemented efficiently without moving any data but just shifting some OIDs in the index. |
| 7 | The problem is that this is inefficient, as it requires updating a lot of data. This could be implemented efficiently without moving any data but just shifting some tile OIDs in the index. |