idxStr does need to be a string. SQLite might make a copy of idxStr (to become the 4th parameter to the OP_VFilter opcode in the byte-code engine) and when doing so, it copies the string through the first 0x00 character. Where in the documentation does it say that idxStr can be a pointer to arbitrary data? That sounds like something that needs to be fixed. To answer the question posed in the title - the built-in R-Tree virtual table uses idxStr.