mirror of
https://github.com/aljazceru/turso.git
synced 2025-12-24 11:34:21 +01:00
Before, db generated incorrect plan in case when offset parameter were introduced as variable: ``` turso> EXPLAIN SELECT * FROM users LIMIT ? OFFSET ?; addr opcode p1 p2 p3 p4 p5 comment ---- ----------------- ---- ---- ---- ------------- -- ------- 0 Init 0 16 0 0 Start at 16 1 Variable 1 1 0 0 r[1]=parameter(1); OFFSET expr 2 MustBeInt 1 0 0 0 3 Variable 2 2 0 0 r[2]=parameter(2); OFFSET expr 4 MustBeInt 2 0 0 0 5 OffsetLimit 1 3 2 0 if r[1]>0 then r[3]=r[1]+max(0,r[2]) else r[3]=(-1) 6 OpenRead 0 2 0 0 table=users, root=2, iDb=0 7 Rewind 0 15 0 0 Rewind table users 8 Variable 2 2 0 0 r[2]=parameter(2); OFFSET expr 9 MustBeInt 2 0 0 0 10 IfPos 2 14 1 0 r[2]>0 -> r[2]-=1, goto 14 11 Column 0 0 4 0 r[4]=users.x 12 ResultRow 4 1 0 0 output=r[4] 13 DecrJumpZero 1 15 0 0 if (--r[1]==0) goto 15 14 Next 0 8 0 0 15 Halt 0 0 0 0 16 Transaction 0 1 1 0 iDb=0 tx_mode=Read 17 Goto 0 1 0 0 ``` Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com> Closes #3360