Guys,
Do you see any reason why such sql batch, does NOT create bidirectional
link?
begin
let var1 = INSERT INTO Address CONTENT {Town:"Wroclaw",Zip:0}
let var2 = INSERT INTO University CONTENT {Name:"Pwr"}
let var3 = UPDATE $var1 ADD in_EHasCorrespondenceAddress = $var2 RETURN
AFTER
let var3a = UPDATE $var2 ADD out_EHasCorrespondenceAddress = $var1 RETURN
AFTER
commit
return 1
It produces 2 records, but second does NOT have the link. When I replace
the ordering in the script always second created vertex has missed link.
#18:0 v1 Address@Town:"Wroclaw",Zip:0,in_EHasCorrespondenceAddress:[#56:0]
#56:0 v1 University@Name:"Pwr"
Thanks in advance
Pawel
PS. I know that I can use CREATE EDGE in that case but for some reason Im
using provided case.
On Friday, April 4, 2014 4:19:36 PM UTC+2, Lvc@ wrote:
>
> Hi Stefano,
> if you need a more complex language set "javascript" and use JS as
> language allowing more complex thing:
> https://github.com/orientechnologies/orientdb/wiki/SQL-batch
>
> About rollback, if any exception occurs, the tx is automatically
> rollbacked.
>
> Lvc@
>
>
> On 4 April 2014 16:02, Stefano Migliucci <[email protected]
> <javascript:>>wrote:
>
>> Hi,
>> how is possible to use "rollback" command?
>> Do we need something like IF, TRY/CATCH, etc?
>> Can you post an example?
>>
>> Stefano
>>
>> Il giorno lunedì 31 marzo 2014 20:46:31 UTC+2, Lvc@ ha scritto:
>>
>>> Hi all,
>>> OrientDB allowed to execute arbitrary script written in Javascript or
>>> any scripting language installed in the JVM. Well, starting from now we
>>> created a minimal SQL engine to allow batch of commands.
>>>
>>> Batch of commands are very useful when you have to execute multiple
>>> things at the server side avoiding the network roundtrip for each command.
>>>
>>> Example to create a new vertex in a transaction and attach it to an
>>> existent vertex by creating a new edge between them:
>>>
>>>
>>>
>>>
>>>
>>>
>>> *beginlet account = create vertex Account set name = 'Luke'let city =
>>> select from City where name = 'London'let edge = create edge Lives from
>>> $account to $city retry 100 commitreturn $edge*
>>>
>>> It's plain OrientDB SQL, but with few news:
>>>
>>> - *begin* -> begins a transaction
>>> - *rollback* -> rollbacks an active transaction
>>> - *commit* -> commits an active transaction
>>> - *let <variable> = <command>* -> executes a command and assign it
>>> in the context as . That variable can be used in further commands by
>>> prefixing it with $
>>> - *return* <variable>|<value>|null -> returns a value instead of
>>> last command result (default
>>>
>>> Note also the usage of* $account *and* $city* on further SQL commands.
>>>
>>> *Java API*
>>>
>>> This can be used by Java API with:
>>>
>>> database.open("admin", "admin");
>>> String cmd = "begin\n";cmd += "let a = create vertex set script =
>>> true\n";cmd += "let b = select from v limit 1\n";cmd += "let e = create
>>> edge from $a to $b retry 100\n";cmd += "commit\n";cmd += "return $e";
>>>
>>> OIdentifiable edge = database.command(new OCommandScript("sql",
>>> cmd)).execute();
>>>
>>> Remember to put one command per line (postfix it with \n).
>>>
>>> *HTTP REST API*
>>>
>>> And via HTTP REST interface (https://github.com/
>>> orientechnologies/orientdb/issues/2056). Execute a POST against /batch
>>> URL by sending this payload:
>>>
>>> { "transaction" : true,
>>> "operations" : [
>>> {
>>> "type" : "script",
>>> "language" : "sql",
>>> "script" : [ "let account = create vertex Account set name = 'Luke'",
>>> "let city =select from City where name = 'London'",
>>> "create edge Lives from $account to $city retry 100" ]
>>> }
>>> ]}
>>>
>>>
>>> Hope this new feature will simplify your development improving
>>> performance.
>>>
>>> What about having more complex constructs like IF, FOR, etc? If you need
>>> more complexity, I suggest you to use Javascript as language that already
>>> support all these concepts.
>>>
>>> Lvc@
>>>
>>>
>>> PS: For more information look at issues -> https://github.com/
>>> orientechnologies/orientdb/issues/2176 and https://github.com/
>>> orientechnologies/orientdb/issues/2056
>>>
>>> --
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "OrientDB" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
--
---
You received this message because you are subscribed to the Google Groups
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.