Release 0.2
Pre-release
Pre-release
Internal release featuring
- Table functionality
With a table of data in the sheet, the user can:- Create Table: by selecting the full range of the table, clicking on Table Menu in the Main-Menu Bar, selecting Create Table by Range, providing a table name (alphanumeric only without spaces and start with a letter).
- Delete Table: by selecting the full range of a created table, clicking on Table Menu in the Main-Menu Bar, selecting Delete Table by Range.
- Use Tables Sidebar: by toggling it from the Table Menu, a user can see the created tables within that book.
- R-tree for dependency
The dependency tree now will be handled by using a compressed R-tree. - Relational Operators
We have the basic support of set/relational-operator-like operations. The following functions are now available for use in formulae:
UNION,
DIFFERENCE,
INTERSECTION,
CROSSPRODUCT,
SELECT,
PROJECT,
RENAME
The output of these functions has the array value type.- The function
UNIONhas the syntaxUNION(S1, S2), with each of S1 and S2 as an array value. Instead of an array value, one can use a (contiguous) range of non-array values instead; it would be treated as an array. Each row in an array is treated as a tuple. S1 and S2 must have the same number of columns, otherwise it returns a#VALUE!error. DIFFERENCEandINTERSECTION, andCROSSPRODUCThave the same syntax.CROSSPRODUCTalso has the same syntax as above, but it does not have the same-column-size requirement.SELECThas the syntaxSELECT(S, C). Here C is an array of boolean values with the same number of rows as S, with one column. It selects the subset of rows whose corresponding value in C is true.
- The function
- INDEX Function
To view the results of the previous formulae, we now support a new cell value type, "array". In addition, the functionINDEXhas a new behavior operating on array values.- A cell containing an array value will display the size of the (two-dimensional) array of the value, like
[5x3]. - In order to display an element in an array value, one needs to use
INDEX(array, row, [column]), specifying the row/column index. For example, if cell A5 contains a 5 by 3 array value,INDEX(A5,2,3)is the array's element in row 2, column 3.INDEXreturns a#REF!error if the row/column is out of range. If the array is one-dimensional (has one column), then the column index is optional; it defaults to the first column.
- A cell containing an array value will display the size of the (two-dimensional) array of the value, like
Known Issues
- The output is undefined if an operand is not a set (has repetitions).
- The relational operators are not well-integrated with tables:
PROJECT,RENAME
andJOINwould be more meaningful once attributes are actually named. - String equality is not checked properly.