Virtual table function calls
David Jones <jonesd-rN3PHIWzTs1Jm/[email protected]>
| Newsgroups | gmane.comp.db.sqlite.general |
|---|---|
| Message-ID | <[email protected]> |
I’ve written a virtual table to view spreadsheet data inside Excel workbook (.xlsx) files as SQlite tables. I want to implement an SQL function, attr(), which the virtual table overrides to give access to the raw attributes of the cell being returned. I’m looking for a robust way to find the actual column refered to by an overriden function, not just the value returned by the xColumn call.
Example:
sqlite> .load xlsxvtab.so # creates xlsxvtab module and attr() function
sqlite> create virtual table summary using xlsxvtab(‘expenses.xlsx’,’sheet1’,’F20’, ‘H32’);
sqlite> select F,G,H,attr(H,3) from summary; # show formula used to calculate column H.
The issue is that attr gets called with 2 values and I need to divine that the first value came from column H of the current row of the cursor opened by this select statement. The hack I’m using now is to give the values returned by the xColumn method a subtype equal to the column number. In the attr() function I retrieve the subtype and re-fetch that column from the current row of the last cursor open on that table.
Various pitfalls with this technique:
- Subtype numbers are limited to the range 0-255.
- Assumes all functions called before xNext() method called again.
- Complex queries with multiple cursors?
Any suggestions?
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users