2011-08-17 Notes on Release 3.1.1 =============================================================================== (1) GUI - Fixed problem: HoeseViewer could not display mregion values ------------------------------------------------------------------------------- (2) Secondo Kernel: Framework - Fixed Problem: ProgressView caused system to crash in some queries ------------------------------------------------------------------------------- (3) Secondo Kernel: Algebras Modules - STPatternAlgebra, NearesrNeighborAlgebra, TBTreeAlgebra now supported directly (used to be Secondo plugins). 2011-07-20 Notes on Release 3.1.0 =============================================================================== (1) GUI The Java based GUI was extended to support tiled maps from OSM or google as backgrounds. Brief explanations on tiled map backgrounds are available from the Secondo User Manual ($SECONDO_BUILD_DIR/Documents/SecondoManual.pdf), Section 5.3.5. The Java interface to Secondo was separated from the remainder of the GUI to be able to develop own applications using Secondo. ------------------------------------------------------------------------------- (2) Secondo Kernel: Framework New control structures (conditionals, loops, sequences) have been added to the Secondo interface, allowing for sophisticated scripting. See Secondo User Manual ($SECONDO_BUILD_DIR/Documents/SecondoManual.pdf), Section 3. Function database objects returning stream results are handled correctly now. Several more bug fixes improve the stability of the system. ------------------------------------------------------------------------------- (3) Secondo Kernel: Algebra Modules New Algebra: SpatialJoinAlgebra This algebra provides a new implementation of a spatialjoin operator. This algorithm was assigned the operator name 'spatialjoin'. The old spatialjoin operator implementation (RTree PlugJoin) has been renamed to spatialjoin0. Within the previously released algebras, version 3.1.0 brings some new operators. Some operators and types have been renamed in order to avoid confusion and to harmonize the naming schema. A few operators have been removed, because they were actually doublets. StandardAlgebra: ================ Added operators: abs: real -> real, int -> int arccos: {int | real} -> real arcsin: {int | real} -> real arctan: {int | real} -> real arctan2: real x real -> real const_e: -> real const_pi: -> real cos: {int | real} -> real deg2rad: {int | real} -> real dms2deg: {int|real} x {int|real} [x {int|real}] [x bool] -> real logB: {int | real} x {int | real} -> real pow: {int | real} x {int | real} -> real rad2deg: {int | real} -> real sin: {int | real} -> real tan: {int | real} -> real Comment: - arithmetic and trigonometric functions and constants have been added FTextAlgebra: ============= Added operators: isValidID: string [ x bool] -> bool attr2text: DATA -> text charToText: int -> text sendtextstreamTCP: stream({string|text}) x {string|text} x {string|text} x {int|real} x {int|real} -> stream(tuple((Ok bool)(Msg text)(ErrMsg string))), 2<=n<=4 tokenize: text x string -> stream(text) strequal: {string, text} x {string, text} x bool -> bool checkOperatorTypeMap2: string x {text | string} -> text checkOperatorTypeMap: string x ANY -> text sys_getAlgebraId: {string|text} -> int sys_getAlgebraName: int -> string sys_getMatchingOperators: int x ANY -> R, {string|text} x int -> R, where R = stream(tuple((OperatorName:string,OperatorId:int,AlgebraName:string,AlgebraId:int,ResultType:text, Signature:text,Syntax:text,Meaning:text,Example:text,Remark:text))) matchingOperators: ANY -> stream(tuple((OperatorName:string,OperatorId:int,AlgebraName:string,AlgebraId:int, ResultType:text,Signature:text,Syntax:text,Meaning:text,Example:text,Remark:text))) matchingOperatorNames: ANY -> stream(string) getDatabaseName: -> string Bugfixes: - keywords Renamed operators: - toobject ==> toObject Comments: - getDatabaseName returns the name of the currrently open database - sys_getMatchingOperators / matchingOperators / matchingOperatorNames allow to find operators matching a given parameter signature. - isValidID checks whether a string represents a valid (and free to use) identifier for a database object or an attribute name. ImExAlgebra: ============ Added operators: getPID: -> int getPageSize: -> int getSecondoVersion: -> int getSecondoPlatform: -> string getBDBVersion: -> int dbimport2: text -> stream (tuple(...)) shpimport2: text -> stream(T), T in {point, points, line, region} nmeaimport: text x string -> streamtuple( TL )) nmeaimport_line: text x string -> stream(tuple( TL )) get_lines: {text,string} -> stream(text) Bugfixes - The file length value in shpexport has been corrected. Changed operators: - shpexport: stream(X) x string -> stream(X), stream(tuple(...))) x string x bool x bool -> stream(tuple...) Comments: - shpexport allows to create the corresponding shape index file now. This will tackle problems importing data generated by Secondo. - dbimport2 / shpimport2 allow to import without prior creation of the template relation as required by dbimport / shpimport - get_lines allows to read a file line by line. On Linux systems, you can also read from arbitrary device files, e.g. to import position history or stream data from a GPS device. - nmeaimport / nmeaimport_line allow for reading the most important NMEA sentences from texts GraphAlgebra: ============= Renamed operators: key ==> get_key pos ==> get_pos source ==> get_source target ==> get_target cost ==> get_cost Comment: - The operators have been renamed to avoid conflicts with typical attribute names SpatialAlgebra: =============== Added Type: geoid Added Operators: create_triangle: point x point x point -> region heading2direction: real -> real direction2heading: real -> real midpointBetween: point x point [x geoid] [x real] -> point point2string: point [x geoid] -> string create_geoid: string [ x {real|int} x {real|int} -> geoid getFlattening: geoid -> real getRadius: geoid -> real distanceOrthodrome: point x point [x geoid] -> real reverseGk: t -> t, t in {point, points, line, region} Changed Operators: bbox: point||points||line||region||sline) [x geoid]-> rect size: {line|sline} x geoid -> real direction: point x point [x geoid] -> real heading: point x point [x geoid] -> real size: line|sline|region} -> real, {line|sline} x geoid -> real Comments: - Datatype geoid was added to represent different geoids used for spherical geometry calculations with geographic coordinates - The most used geoids have been predefined. See operator create_geoid. - Many operators now have an optional geoid-parameter. Using it will make the operator work with geographic (LON/LAT) rather than planar (X/Y) coordinates and spherical rather than euclidean geometry. - The meaning of 'heading' and 'direction' has been clarified normalized throughout Secondo: From now on, 'heading' means navigational angles 0 rect3, mpoint [x geoid] -> rect3, ipoint [x geoid] -> rect3, instant -> rect3, periods -> rect3 bbox2d: upoint [x geoid] -> rect, mpoint [x geoid] -> rect, ipoint [x geoid] -> rect bboxold: upoint [x geoid] -> rect3, mpoint [x geoid] -> rect3, ipoint [x geoid] -> rect3, rT -> rT length: mpoint [x string] -> real avg_speed: mpoint [ x string ] -> real delay: mpoint x mpoint [x geoid] -> mreal distancetraversed: mpoint [x geoid] -> mreal turns: mpoint x real x real [x duration] [x bool] [x geoid] -> stream(tuple(TimeOld instant, TimeNew instant, PosOld point, PosNew point, HeadingOld real, HeadingNew real, HeadingDiff real)) Comments: - various operators can now deal with geographic coordinates when provided with a geoid parameter. TemporalLiftedAlgebra: ====================== Added operators: +, -, *, /: {mreal, mint, real, int} x {mreal, mint, real,int} -> {mreal, mint} TemporalExtAlgebra: =================== Changed operators: speed_new: mpoint [ x geoid ] -> mreal direction: mpoint [ x geoid [ x real ] ] -> mreal heading: mpoint [ x geoid [ x real ] ] -> mreal Comments: - Many operators now have an optional geoid-parameter. Using it will make the operator work with geographic (LON/LAT) rather than planar (X/Y) coordinates and spherical rather than euclidean geometry. - The meaning of 'heading' and 'direction' has been clarified normalized throughout Secondo: From now on, 'heading' means navigational angles 0 mregion intimeregion ==> iregion Comments: - Types 'movingregion' and 'intimeregion' have been renamed in order to achieve a general naming schema for moving and intime types. RecordAlgebra: ============= Changed Operators and types: - record now allows for arbitrary valid identifiers as fields names, they are not required to start with a capital letter any more. HistogramAlgebra: ================= Removed operators: is_undefined: Comments: - In order to achieve a uniform handling of definedness, the operator is_undefined has been removed. Use the generic isdefined: DATA -> bool instead. DateTimeAlgebra: ================ Comments: - The toString(true) function of DateTime allows to export timestamps in SQL92 formatting (using a blanc as separator between date and time). This is now used by operator toCSVtext: instant -> string - The fromString function of DateTime allows to import timestamps in SQL92 formatting (using a blanc as separator between date and time). ------------------------------------------------------------------------------- (4) Optimizer The standard syntax translation for Secondo operators is now deprecated. You must explicitly specify the syntax for each operator in file opsyntax.pl now. Also, the notation of the syntax and the generic translation rules in plan_to_atom/2 have been changed. Please refer to Section 8.5 in the Secondo User Manual and Sections 7.2.2-7.2.3 in the Secondo Programmer's Guide ($SECONDO_BUILD_DIR/Documents/ProgrammersGuide.pdf). On SQL-level, in user defined aggregations, the default-value can now be passed as a constant value expression, not as a string literal anymore. Constants can now also be expressed using terms like value_expr(,) where is a Prolog term for the type descriptor and is the nested list representation of the constant value, both using round parantheses and commas internally. Regards Christian Düntgen 2007-06-24 Notes on Release 3.0 =============================================================================== Secondo has been improved significantly since version 2.9. Mayor points are the improved compatibility with different platforms, increased stability, and increased performance. Although we did our best to improve general system stability, there are still some problems with numeric stability, especially in the spatial and spatiotemporal algebras. Changes in detail: * The Flob concept has been totally re-implemented to avoid the nasty errors created by the old Flob-Cache. * Several changes have been done to make the SMI code compatible with different versions of 3rd party software, namely BerkeleyDB, thus increasing compatibility with different platforms. * On some platforms, newer library versions miss to include certain header files. These are now included explicitly. * Many bugfixes regarding system stability: Memory holes have been fixed, some operator implementations corrected. * For spatial and spatiotemporal datatypes with set semantics, we now differentiate between EMPTY and UNDEFINED values. * New support structure "TupleFile": This type can be used by algorithms that need to materialize data. Data is stored in flat files rather than in temporal relations. Also, only data not fitting into the main memory buffer gets materialized on harddisc. Should be used as an replacement for the "TupleBuffer". * Changed implementations/ New algebra: The ExtRelation-2Algebra provides external Algorithms for sorting and different join algorithms. Also, sorting is now done by a paramerizable multi-stage mergesort, with restricted amount of main memory. The new algorithms use TupleFiles instead of TupleBuffers. Most according original algorithms from the ExtRelationAlgebra have been replaced by the operators from this new algebra. * New operators in the RTreeAlgebra allow for query-based inspection of the tree structures. * New modules: The BTree2Algebra provides parametrizable BTrees. The RTreeViewer allows for visualized online-exploration of Rtree objects. * Optimizer: Exception handling was extended so that now most errors can be caught and reported to the user. Scripts for executing the BerlinMOD/R benchmark from the optimizer have been added to the Optimizer directory. 2007-09-17 Notes on Release 2.5 =============================================================================== If you plan to set up an SDK using "openSuSe 10.2" you can use the system's gcc (e.g. installsdk -s) which reports the version gcc (GCC) 4.1.2 20061115 (prerelease) (SUSE Linux). Please refer to the Installation-Guide for detailed explanations. Moreover, if you have a 64 bit linux system you need * Berkeley-DB 4.3.29 (older versions don't compile and for higher versions our code is not ready) * A 64 bit Java-Installation of JDK 1.5 * A Prolog System which is compiled with the JPL package (SuSe's standard version does not provide this). Maybe in the future we will provide an SDK for 64 bit systems, but currently you have to scrape along with this few hints. New features: ------------- * Bug fixes for operators in various algebra modules. * The source code is now sufficient for linux 64 bit systems. Windows 64 bit has not been tested, and we don't plan to do so in the near future. * Optionally, query progress estimation can be enabled. * A new algebra for representing graphs has been added. Best Regards M. Spiekermann 2007-03-21 Notes on Release 2.4 =============================================================================== The release deployed at March 14 runs into compiler errors. As work around you need to delete two files, please execute the commands below: cd Javagui/tools rm *Disturber* If you plan to set up an SDK using "openSuSe 10.2" you can use the system's gcc (e.g. installsdk -s) which reports the version gcc (GCC) 4.1.2 20061115 (prerelease) (SUSE Linux). Please refer to the Installation-Guide for detailed explanations. New features: ------------- * Many bug fixes of operators in various algebra modules. * Provision of a test database called "berlintest". * The example queries for operators are now working on database berlintest. They are collected in a system table called SEC2OPERATORINFO. This may help you to find "running" examples and to learn more quickly about the capabilities of the implemented algebra modules. * Implementation of a quick regression test called "Selftest". It runs all examples on berlintest and compares them with result sets. We decided to put the database and the results into the source tree. This blowed up the archive's size but gives all users the chance to test whether their own implementations make the system instable or not. Best Regards M. Spiekermann