Hi,
fixed. The HTTP wrapper always returned the number of command executed.

Lvc@



On 15 April 2014 18:20, Ivan Plaza <[email protected]> wrote:

> Hi Pascal
>
> I actually got it working on my side. I had to download the latest
> snapshot by following the readme.txt (attached).
>
> After that the batch sql worked on the console and the binary protocol. I
> haven't tried the REST API though.
>
> I'm not familiar with the REST client side, but looking at your error it
> seems the sql query is not parsed correctly, there should be a return or
> semicolon between begin and the next statement: (sql.beginlet v = create
> vertex set Name='John'commitreturn $v)
>
> Try using semi colons between the statements and see if that helps.
> ["begin;let v = create vertex set Name='John';commit;return $v"]
>
> gluck
>
>
>
>
> On Monday, April 14, 2014 11:09:27 AM UTC-4, Pascal Le Quang wrote:
>>
>> Hi,
>> I'm experimenting the same problem as Ivan Plaza, using the REST api.
>> I'm using the develop branch, "freshly pulled" and built few hours ago.
>> If I post the following content to the /batch url
>>
>> {
>>    "transaction": false,
>>    "operations": [{
>>       "type": "script",
>>       "language": "sql",
>>       "script": ["begin", "let v = create vertex set Name='John'",
>> "commit", "return $v"]
>>    }]
>> }
>>
>> I receive the following message :
>>
>> com.orientechnologies.orient.core.command.OCommandExecutorNo
>> tFoundException: Cannot find a command executor for the command request:sql
>> .beginlet v = create vertex set Name='John'commitreturn $v
>>
>> Instead of sending an array of sql commands, I've tried to send the
>> script with new line char between commands :
>> {
>>    "transaction": false,
>>    "operations": [{
>>       "type": "script",
>>       "language": "sql",
>>       "script": ["begin\nlet v = create vertex set
>> Name='John'\ncommit\nreturn $v"]
>>    }]
>> }
>>
>>
>> then the response contains only the int value "1". I assume this is the
>> number of operations executed. But no new vertex has been created in the
>> database.
>>
>> And finally, if I've tried to send this
>>
>> {
>>    "transaction": true,
>>    "operations": [{
>>       "type": "script",
>>       "language": "sql",
>>       "script": ["let v = create vertex set Name='John'"]
>>    }]
>> }
>>
>>
>> and a vertex is created, and I receive "1" as reponse.
>>
>> Am I doing something wrong when I send multiple statements ?
>> And is the "return" command working using the REST api ?
>>
>> Thanks
>> Pascal
>>
>>
>>
>>
>>
>>
>> On Sunday, April 6, 2014 11:52:35 PM UTC+2, Ivan Plaza wrote:
>>>
>>> Awesome! Is this available in 1.7 rc2?
>>>
>>> I'm getting the following error: com.orientechnologies.orient.
>>> core.command.OCommandExecutorNotFoundException: Cannot find a command
>>> executor for the command request: sql.begin
>>>
>>>
>>> On Saturday, April 5, 2014 4:08:26 PM UTC-4, Pawel K. 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/
>>>>> 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]> 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].
For more options, visit https://groups.google.com/d/optout.

Reply via email to