Skip to content

Release 0.2

Pre-release
Pre-release

Choose a tag to compare

@mangeshbendre mangeshbendre released this 07 Jun 21:34
· 445 commits to master since this release

Internal release featuring

  1. 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.
  2. R-tree for dependency
    The dependency tree now will be handled by using a compressed R-tree.
  3. 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 UNION has the syntax UNION(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.
    • DIFFERENCE and INTERSECTION, and CROSSPRODUCT have the same syntax.
    • CROSSPRODUCT also has the same syntax as above, but it does not have the same-column-size requirement.
    • SELECT has the syntax SELECT(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.
  4. INDEX Function
    To view the results of the previous formulae, we now support a new cell value type, "array". In addition, the function INDEX has 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. INDEX returns 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.

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
    and JOIN would be more meaningful once attributes are actually named.
  • String equality is not checked properly.