Release 0.3 - Tables
This release adds the following functionality:
- Relational Tables on a Spreadsheet
We now support relational tables on a spreadsheet. We do not maintain a copy of the tables on the spreadsheet; thus the underlying database has the only copy of the table. Any updates to the tabular regions on the sheet are pushed in real-time to the database. We support the following operations:- Link Table: Declare an area on the spreadsheet linked with a relational table in the database.
- Create Table: Create a relational table based on a region on the sheet and link the region to the newly created table.
- Add/Delete Columns: Append columns to a linked table or delete existing columns.
- Add/Delete Rows: Append rows to a linked table or delete existing columns.
- R-tree for dependency
The dependency table in internally handled by using an R-tree to improve scalability. - Relational Operators
We now support the following set/relational-operator-like operations within formulae:
UNION,
DIFFERENCE,
INTERSECTION,
CROSSPRODUCT,
PROJECT,
RENAME - SQL Function
We allow users to execute arbitrary SQL statements using a new functionSQL. - Multi-cell functions
The relational operators are multi-cell functions, i.e., the output can consist of a collection of cells. - Asynchronous formula computation
The formulae on the spreadsheet will be computed asynchronously thereby not blocking the users. - Private sheets
We now support user login and have individual books for the users.
Known Issues
- New records can be only added to the bottom of the table.
- The only way to reorder tuples is to delete and add new at the bottom.
- The updates from the backend database are not pushed to the front end in real time. Refreshing a spreadsheet will reload the updates from the database.
- Database errors cascade across other operations.