Valentina SQL get powerful FORMAT() function.

Ivan have add into Valentina engine new very powerful FORMAT() function for SQL.

It provides great ability to convert numbers and date/times into string format.

Please read detailed syntax in the Valentina WIKI:
http://valentina-db.com/dokuwiki/doku.php?id=valentina:vcomponents:vsql:reference:expr:funcs_string#format

The same algorithms will be added in nearest time to Valentina Reports.

Improvements for stored procedures and binded queries

It was a huge improvement to solve the problem with a “second run” in stored procedures and binded queries.  Sometimes there was an incorrect behavior because of “over-prepared” nodes. There was a workaround with “EXECUTE” statement (which is actually developed  to prepare any SQL statement and execute one from another SQL statement). So now this workaround could be omitted.

Valentina for Ruby MAC Improved

We have improved Valentina for Ruby v4 on MAC.

Now we have single UB module vruby_fat_release.dylib instead of two _ppc_ and _i586_. This still perfectly works with Ruby.

The WIKI pages about MAC INSTALL are corrected and updated.

We corrected the Valentina.rb adapter to reflect changes in the SHOW commands in v4, which now produce cursor with columns that have prefix ‘fld_’

MakeNewReport(index, db, query = NULL, …); Query now can be NULL on default.

MakeNewReport(
inIndex as integer,
inDatabase as VDatabase,
inQuery as String = NULL,
inCursorLocation as EVCursorLocation = kClientSide,
inLockType as EVLockType = kReadOnly,
inCursorDirection as EVCursorDirection = kForwardOnly ) as VReport

Starting from 4.1 parameter inQuery can be NULL. In this case will be used original query around which was designed report, i.e. query stored inside of project.

This simplify development because there is no need to copy/paste query 2 times. In the same time you still can specify different query: e.g. with different WHERE statement.

Hierarchical (Recursive) Queries in Valentina SQL

There are three new kind of queries specially designed  for recursive (hierarchical) tables.

Such kind of tables are widely used. It could be human relationships, threaded forums and anything which might be described as tree-like data.

There are few common SQL ways to operate with such structures but all of them are too far from perfect.

Valentina introduces special kind of query which looks much more clear, natural and readable.

Syntax:
vext_recursive_table         -- v4.1
    :   {ANCESTORS | BROTHERS | DESCENDANTS} OF vext_root_objects
        [{TO|ON} LEVEL UINT] USING link_name [WITH {ROOT | ROOTS}]

vext_root_objects
    :   UINT
    |   variable_name
    |   ( search_condition )

Examples:

ANCESTORS OF (RecID IN(4,5)) ON LEVEL 1 USING l1
BROTHERS OF 4 ON LEVEL 2 USING l1
SELECT * FROM (ANCESTORS OF (RecID IN(4,5)) ON LEVEL 1 USING l1)  WHERE f1 = 'Branch2'

See also:

* WIKI: Valentina SQL Reference: Hierarchical (Recursive) Queries for description of exact syntax of these commands and examples.

* WIKI: Article Hierarchical (Recursive) Queries in Valentina SQL