Thanks Luca! Arrays works great.

On Sunday, April 13, 2014 8:56:19 PM UTC+2, Lvc@ wrote:
>
> Hi Pawel,
> good idea. It's already in "develop" branch. Usage:
>
> return [ $a, $b ]
>
> and also maps:
>
> return [ 'first' : $a, 'second' : $b ]
>
> Lvc@
>
>
>
> On 13 April 2014 13:40, Pawel K. <[email protected] <javascript:>> wrote:
>
>> Thanks Luca. I checked it in my code and works as expected.
>> btw. It would be nice to have ability to return array of records (or 
>> records versions) in RETURN clause. It would give an ability to refresh 
>> client side objects without going back to the database.
>> Also is needed for multi records creations in the script (i.e. couple of 
>> edges).
>>
>> Pawel
>>
>>
>>
>> On Saturday, April 12, 2014 1:18:26 AM UTC+2, Lvc@ wrote:
>>
>>> Hi Pawel,
>>> that was a problem of re-using of context variables on SQL UPDATE. Now 
>>> It's fixed in "develop" branch.
>>>
>>> I've created also the new command "script <language>" in console 
>>> allowing multi-lines commands. Example:
>>>
>>> orientdb {pawel}> script sql
>>> [Started multi-line command. Type just 'end' to finish and execute]
>>> 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
>>> end
>>>
>>> Server side script executed in 0,006000 sec(s). Value returned is: 1
>>>
>>>
>>> Issue https://github.com/orientechnologies/orientdb/issues/2216
>>>
>>> Lvc@
>>>
>>>
>>>
>>> On 5 April 2014 22:08, Pawel K. <[email protected]> wrote:
>>>
>>>> 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/orientechno
>>>>> logies/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]> 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/orientechn
>>>>>>> ologies/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].
>>>>>>
>>>>>> 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.
>>>>
>>>
>>>  -- 
>>
>> --- 
>> 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.

Reply via email to