2.5 - Add new class of tests for queries that are supposed to fail - Changes to make failures in commutative operators commutative too - Added new optimization to remove useless joins 2.4 - Improve error reporting - Release is now signed with PGP - Doesn't crash on network errors - Fixed optimization introduced in 2.2 that did not hold in all cases - Better handling of parenthesis inside string literals - Emit less parenthesis in optimized queries 2.3 - Very small release. The windows setup now installs the C++ library automatically. - The setup was re-made on windows 10, so now it works properly on windows 10 and all the symbols are shown. - If you don't use windows, this release is identical to the previous. 2.2 - Added again make install target - Ctrl+C in the terminal will terminate the GUI - UI indicates ongoing processing with a label - Added new optimizations - Added shortcuts within the UI - History can be navigated with up/down arrows - Single line edit mode allows for the resulting relation to be written within the query textbox itself. 2.1 - Introduced sessions; GUI loads the same relations of the previous time - redesigned GUI, to fit in smaller screens - Fix bug in tokenizer - Fixed bug where select on relations with '---' values would always fail - Improve error reporting - Fix bug in code to check for new version - Performance improvements - More Pythonic name for classes (API is compatible with version 2.0) 2.0 - Fix bug in relational-cli that made it crash when an exception was raised - Point to new website - Switch to Python3 and drop support for Python2 - Switch to Qt5 - Radical change of language. The UNICODE symbols used previously were meant for a Canadian Aborigenal script. Now switched them to use UNICODE math symbols. - Since the language is changing, take the chance to use better symbols for JOIN - GUI has a new mode to insert multiple queries at once, assigning them to variables - Automatic casting is now faster - GUI can load multiple relations at once - GUI will only assign default names to loaded relations, without prompting the user 1.2 - Better tokenizer, gives more indicative errors - Parser gives more indicative errors - Improved select_union_intersect_subtract optimization to avoid parenthesis whenever possible - Moved feedback service, and added the code for it - Different way of checking the latest version - Removed support for pyside 1.1 - Incorrect relational operations now raise an exception instead of returning None - Forces relations to have correct names for attributes - Colored output in readline mode - Can send email in survey - Can check for new version online - Can use both PySide and PyQt - Removed buttons for adding and deleting tuples - Can edit relations within the GUI - API migrated to unicode (instead of utf-8 encoded strings) 1.0 - Adds history in the GUI - Adds menus to the GUI - Checks if given name to relations are valid - Discards the old and not so functional tlb format - Float type recognition is more robust, now handled using a regexp - Date type recognition is more robust, now using a combination of regexp plus date object - Integer type recognition now allows negative numbers in relations - Rename operations are now much faster, content won't be copied unless subsequent updates, insert, updates or deletes will occur - Added testsuite - Module parallel does something, can execute queries in parallel - Implemented select_union_intersect_subtract general optimization - Removed encoding from .desktop file (was deprecated) - Added manpage for relational-cli - Internally uses set instead of lists to describe relation's content - Tuples are internally mapped on tuples and no longer on lists - Set hash method for the classes - Parsing of strings representing dates is now cached, eliminating the need for double parse - Fixed python expression tokenization, now uses native tokenizer - Fixed optimization involving selection and parenthesis in the expression (Rev 260) - Fixed futile_union_intersection_subtraction optimization that didn't work when selection operator was in the left subtree (Rev 261) - Restyle of the GUI, splitters added 0.11 - Font is set only on windows (Rev 206) - Improved futile_union_intersection_subtraction in case of A-A, when A is a sub-query (Rev 208) - Improved futile_union_intersection_subtraction, handles when a branch of subtracion has a selection (Rev 209) - Can load relations specified in command line (Rev 210) - Using fakeroot instead of su in make debian (Rev 214) - Fixed problem with float numbers with selection of certain relations (Rev 215) - Added .desktop file on svn (Rev 216) - Automatically fills some fields in the survey (Rev 217) - When a query fails, shows the message of the exception (Rev220) - Improved tokenizer for select in optimizations, now can accept operators in identifiers (Rev 220) - Uses getopt to handle the command line in a more standard way - Organized code so the ui can be either qt or command line - Does not depend on QT anymore - Added readline user interface - Added division operator 0.10 - In optimizer, added a function that tokenizes an expression - Document about complexity of operations - Bug: error in update operation, it changed the original tuple, so also other relations using the same tuple would change. Now it copies it. - Added make install and uninstall - Optimizer generate a tree from the expression - Uses python-psyco when it is available - Ability to perform optimizations from GUI - Able to (temporarily) store queries with a name - Mechanism to add new kind of optimizations, without having to edit all the code - Implemented duplicated_select general optimization - Implemented down_to_unions_subtractions_intersections general optimization - Implemented duplicated_projection general optimization - Implemented selection_inside_projection general optimization - Implemented subsequent_renames general optimization - Implemented swap_rename_select general optimization - Implemented selection_and_product specific optimization - Added stub for converting SQL to relational algebra - Implemented futile_union_intersection_subtraction general optimization - Implemented swap_rename_projection general optimization - Replaced old relational algebra to python compiler with new one based on the new tokenizer/parser (Rev 188) - Code refactory to move the new parser into parser.py out of optimizer.py, that will still be compatible (Rev 190) - Selection can now accept expressions with parenthesis 0.9 - Splitted into independent packages (gui and library) - Simplified makefile, bringing outside files for debian package - Default source package now doesn't contain informations to generate debian/mac packages - "make source_all" generates the old style tarball containing all the files - Bug: relational script installed with debian package now passes arguments to the python executable - Insert and delete from GUI are now done on the displayed relation, not on the selected one 0.8 - Added __eq__ to relation object, will compare ignoring order. - New default relation's format is csv, as defined in RFC4180 - Converted sample's relations to csv - Deb postinstall generates optimized files, this will increase loading speed - Relation module has SQL-like delete - Relation module has SQL-like update - Relation module has SQL-like insert - GUI can be used to insert and delete tuples - Showing fields of selected relation will work with themes different than oxygen 0.7 - Added README - Expressions between quotes aren't parsed anymore - When adding a relation, the file must be chosen 1st, and then the default relation's name is the same as the filename - Changed internal rename method. Now uses a dictionary - Optimized saving of relations - Can save relations from gui - Outer join methods simplified - Form to send a survey - Makefile to create .deb package 0.6 - Fixes to run on Mac OsX - Added Makefile - Able to create .app MacOsX files using "make app" - Able to create tar.gz file containing Mac OsX application and samples using "make mac" 0.5 - Added support for float numbers - Added support for dates 0.4 - Created GUI 0.3 - Added support for parenthesis in relational queries 0.2 - Created parser module - Created function to parse expression with operators without parameters - Created recoursive function to parse expressions 0.1 - Created header class to handle attributes - Created relation class - Added union - Added intersection - Added difference - Added product - Added projection - Added rename - Projection can use a list or several parameters - Added selection - Added left join - Added right join - Added capability of operation even if attributes aren't in the same order - Added full outer join