Hi alltogether,
is the feature of storing Funtions in the Database still usable?
I followed documentation and got completely lost.
First: I fired a simple SQL-Query
Schema: contracts [n<-link->1] subcategories [n<-link->1] categories [n<-link->1] industries
To query all contracts belonging to a single industry, (just as in a oldschool-sql-db) one can write
select name categories.subcategories.contracts from Industries where name containstext 'ial'
which obviously returns an Array :
#<REST::Model::Myquery:0x00000003ffb880 @attributes={ "name" =>"Basic Materials", "categories"=>[["#21:1"]], "version"=>0, "cluster"=>"-2", "record"=>"0", "fieldTypes"=>"null=e", "created_at"=>2015-06-02 14:11:46 +0200, "updated_at"=>2015-06-02 14:11:46 +0200}>
#<REST::Model::Myquery:0x00000003ff9b20 @attributes={"name"=>"Financial", "categories"=>[["#21:2"]], "version"=>0, "cluster"=>"-2", "record"=>"1", "fieldTypes"=>"null=e", "created_at"=>2015-06-02 14:11:46 +0200, "updated_at"=>2015-06-02 14:11:46 +0200}>
#<REST::Model::Myquery:0x00000003ff83b0 @attributes={"name"=>"Industrial", "categories"=>[["#23:0", "#23:1"]], "version"=>0, "cluster"=>"-2", "record"=>"2", "fieldTypes"=>"null=e", "created_at"=>2015-06-02 14:11:46 +0200, "updated_at"=>2015-06-02 14:11:46 +0200}>
So far, so good – the query is working perfect.
Then I put the same query into a function:
( in Studio: )
return orient.getDatabase().query("select name, categories.subcategories.contracts from Industries where name containstext 'ial'");
and saved it as »getContracts«
But when I tried to fetch the result via REST I got:
uri: function/hc_database/getContracts
{"result":[{"@type":"d","@version":0,"value":"orient.getDatabase().query(\"select name, categories.subcategories.contracts from Industries where name containstext 'ial'\")"}]}
just the copy of the query-text....
It turned better.
I switched to javascript:
var gdb = orient.getDatabase();
return gdb.command( "sql", "select name ....
---> "code": 400,
"reason": "Bad request",
"content": "Error on parsing script at position #0: Error on execution of the script\nScript: allCategories\n------^\nsun.org.mozilla.javascript.WrappedException: Wrapped com.orientechnologies.orient.core.exception.OConfigurationException: No database instance found in context (<Unknown source>#10) in <Unknown source> at line number 10\nWrapped com.orientechnologies.orient.core.exception.OConfigurationException: No database instance found in context (<Unknown source>#10)\nNo database instance found in context"
Ups.
As only solution which works, I found
language: Javascript
Database-Instance by getGraphNoTx()
To me the consequences of using getGraphNoTx are not clear. The strange behavior of the function-part should be noted as big bug in the development-Version .
strange.
(I am using the current stable 2.0 Version of OrientDB)
Hartmut