Posted in April 19, 2012 ¬ 11:33 amh.Ruslan Zasukhin
After some benches we have discover that loop on small joins (when only one record on the left and few on the right) is not fast enough.
We have two major algorithms internally and we have discover that the first takes only 50 seconds on 10000 loop, while second takes hundreds of seconds…So problem presents in the second algorithm.
Improved.
Now the second algorithm takes 120 second. And we can add yet choice condition to choose the first for such case of small joins…
I think we will be able to improve the second alg yet to 70-80 sec. And may be with more complex changes it is possible speed both after that …
Posted in April 19, 2012 ¬ 11:23 amh.Ruslan Zasukhin
After some benches we have discover that it is not a good idea to use ZIP compression of data if VServer is on localhost or on fast LAN.
To resolve this we have specify 3 possible steps and made the first one without changes in API. As result now VClient and VServer automatically can do raw analyze of network and define if to use ZIP.
Fututre we will add even special VClient function VConnection.Tune(), which your app can call on start, and later each 30 min for example to measure and analyse network state more accurately.
Posted in March 28, 2012 ¬ 2:19 pmh.Ruslan Zasukhin
Here we show couple of few-seconds movies that demonstrate how you can establish links between tables using new diagrams of Valentina Studio Pro.
For Valentina database you can establish Foreign Key, ObjectPtr and Binary Link. For SQLite and Postgre only Foreign Key.
- Establish Link
Shows how you get access to “Add Link” button and then to panel, which allows you to choose link type for the left and right table.
- Establish MM link
Shows how you can establish by few mouse clicks MM link between two tables, and how this automatically creates third MM table and FK fields in original table(s).
Posted in March 24, 2012 ¬ 1:40 pmh.Ruslan Zasukhin
We have made a couple of benches of our new SQL DIFF feature of Valentina Studio Pro v5.0 Results are quite impressive.
(more…)
Posted in March 22, 2012 ¬ 5:02 pmh.Ivan Smahin
Starting from v.5.0, you may get count of affected links (pair of records affected by LINK/UNLINK… statement) via QueryResult::get_AsULong()
Posted in March 22, 2012 ¬ 2:04 pmh.Ivan Smahin
Posted in March 22, 2012 ¬ 12:27 pmh.Ruslan Zasukhin
Thorsten have point us that for his task it is not comfortable when command
LINK RECORD (1) OF T1 TO RECORDS(3, 7, 9) OF T2
throws error and stops, if link 1-7 already exists.
We have agree and improve these commands adding suffix
LINK … [IF NOT EXISTS]
UNLINK … [IF EXISTS]
This suffix is similar to CREATE/DROP commands. If it is specified, then error is not fired and command continue work for other pairs of links.
Posted in March 22, 2012 ¬ 12:18 pmh.Ruslan Zasukhin
Thorsten have point us that WIKI page about this command looks strange, because uses
Referential_action
: NO ACTION (alias to RESTRICT)
| RESTRICT
| SET NULL
| SET DEFAULT
| CASCADE
Now SQL grammar have one more rule vext_referential_action_for_link without “SET NULL”, “SET DEFAULT” and added “NO CADCADE” for Binary Links.
(more…)
Posted in March 21, 2012 ¬ 3:34 pmh.Ivan Smahin
Posted in March 15, 2012 ¬ 11:48 pmh.Ruslan Zasukhin
While Valentina have very cool syntax for recursive queries, one Valentina developer have point us that it cannot be used in his task, because he do not have predefined link with name. Taking this into account, for v5.0 we have extend syntax of recursive query
from USING link_name
to USING (link_name | search_condtiion)
(more…)