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:
- SQL Function
We allow users to execute arbitrary SQL statements using a new function
- 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.
- 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.