mirror of
https://github.com/aljazceru/turso.git
synced 2025-12-26 12:34:22 +01:00
Close: #866 **limbo output**: ``` limbo> explain values(1, 2); addr opcode p1 p2 p3 p4 p5 comment ---- ----------------- ---- ---- ---- ------------- -- ------- 0 Init 0 5 0 0 Start at 5 1 Integer 1 1 0 0 r[1]=1 2 Integer 2 2 0 0 r[2]=2 3 ResultRow 1 2 0 0 output=r[1..2] 4 Halt 0 0 0 0 5 Goto 0 1 0 0 limbo> explain values(1, 2), (3, 4); addr opcode p1 p2 p3 p4 p5 comment ---- ----------------- ---- ---- ---- ------------- -- ------- 0 Init 0 16 0 0 Start at 16 1 InitCoroutine 1 9 2 0 2 Integer 1 2 0 0 r[2]=1 3 Integer 2 3 0 0 r[3]=2 4 Yield 1 0 0 0 5 Integer 3 2 0 0 r[2]=3 6 Integer 4 3 0 0 r[3]=4 7 Yield 1 0 0 0 8 EndCoroutine 1 0 0 0 9 InitCoroutine 1 0 2 0 10 Yield 1 15 0 0 11 Copy 2 4 0 0 r[4]=r[2] 12 Copy 3 5 0 0 r[5]=r[3] 13 ResultRow 4 2 0 0 output=r[4..5] 14 Goto 0 10 0 0 15 Halt 0 0 0 0 16 Goto 0 1 0 0 limbo> explain select * from (values(1, 2), (3, 4)); addr opcode p1 p2 p3 p4 p5 comment ---- ----------------- ---- ---- ---- ------------- -- ------- 0 Init 0 16 0 0 Start at 16 1 InitCoroutine 1 9 2 0 2 Integer 1 2 0 0 r[2]=1 3 Integer 2 3 0 0 r[3]=2 4 Yield 1 0 0 0 5 Integer 3 2 0 0 r[2]=3 6 Integer 4 3 0 0 r[3]=4 7 Yield 1 0 0 0 8 EndCoroutine 1 0 0 0 9 InitCoroutine 1 0 2 0 10 Yield 1 15 0 0 11 Copy 2 4 0 0 r[4]=r[2] 12 Copy 3 5 0 0 r[5]=r[3] 13 ResultRow 4 2 0 0 output=r[4..5] 14 Goto 0 10 0 0 15 Halt 0 0 0 0 16 Transaction 0 0 0 0 write=false 17 Goto 0 1 0 0 ``` **sqlite output**: ``` sqlite> explain values(1, 2); addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 5 0 0 Start at 5 1 Integer 1 1 0 0 r[1]=1 2 Integer 2 2 0 0 r[2]=2 3 ResultRow 1 2 0 0 output=r[1..2] 4 Halt 0 0 0 0 5 Goto 0 1 0 0 sqlite> explain values(1, 2), (3, 4); addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 16 0 0 Start at 16 1 InitCoroutine 1 9 2 0 2 Integer 1 4 0 0 r[4]=1 3 Integer 2 5 0 0 r[5]=2 4 Yield 1 0 0 0 5 Integer 3 4 0 0 r[4]=3 6 Integer 4 5 0 0 r[5]=4 7 Yield 1 0 0 0 8 EndCoroutine 1 0 0 0 9 InitCoroutine 1 0 2 0 10 Yield 1 15 0 0 next row of 2-ROW VALUES CLAUSE 11 Copy 4 8 0 2 r[8]=r[4] 12 Copy 5 9 0 2 r[9]=r[5] 13 ResultRow 8 2 0 0 output=r[8..9] 14 Goto 0 10 0 0 15 Halt 0 0 0 0 16 Goto 0 1 0 0 sqlite> explain select * from (values(1, 2), (3, 4)); addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 16 0 0 Start at 16 1 InitCoroutine 1 9 2 0 2 Integer 1 4 0 0 r[4]=1 3 Integer 2 5 0 0 r[5]=2 4 Yield 1 0 0 0 5 Integer 3 4 0 0 r[4]=3 6 Integer 4 5 0 0 r[5]=4 7 Yield 1 0 0 0 8 EndCoroutine 1 0 0 0 9 InitCoroutine 1 0 2 0 10 Yield 1 15 0 0 next row of 2-ROW VALUES CLAUSE 11 Copy 4 8 0 2 r[8]=r[4] 12 Copy 5 9 0 2 r[9]=r[5] 13 ResultRow 8 2 0 0 output=r[8..9] 14 Goto 0 10 0 0 15 Halt 0 0 0 0 16 Goto 0 1 0 0 ``` Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com> Closes #1549