Good to hear.

Am I right in thinking it's not allowed to return two differently named
result sets from the one function?


On 9 February 2014 13:23, Hugh Williams <hwilli...@openlinksw.com> wrote:

> Hi Quentin,
>
> Testing against the latest development archive the server does not crash,
> thus this issue should be resolved in the final VOS  stable/7 release being
> prepared:
>
> SQL>  create procedure test.test.resultsetCrash( ) {  declare meta, _dt
> any; declare query, query2, errorCode, errorMessage varchar; declare inx
> integer; declare parameters vector; parameters := vector();  query :=
> 'sparql select ?S ?P ?O {GRAPH <ResultsetCrashTest> { {{ select distinct ?S
> { ?S a ?class } limit 1 offset 1 }} ?S ?P ?O . }}';  exec (query,
> errorCode, errorMessage, vector(), 0, meta, _dt);  declare meta2, _dt2 any;
> declare errorCode2, errorMessage2 varchar;  query2 := 'sparql select
> count(distinct ?S) as ?count { GRAPH <ResultsetCrashTest> { ?S a ?class .
> }}';  declare entCount integer; declare entVector any;  exec (query,
> errorCode, errorMessage, vector(), 0, meta, _dt); if (meta <> 0) {
> exec_result_names (meta[0]);   inx := 0; if (_dt <> 0) {   while (inx <
> length (_dt))     {       exec_result (_dt[inx]);       inx := inx + 1;
> }  declare meta, _dt any; declare errorCode, errorMessage varchar; declare
> inx integer;  end_result(); exec (query2, errorCode, errorMessage,
> vector(), 0, meta, _dt); exec_result (_dt[0]); } } }
>
> Done. -- 3 msec.
> SQL>
> SQL> sparql drop silent graph <ResultsetCrashTest>;
>
> Done. -- 47 msec.
> SQL> sparql
> Type the rest of statement, end with a semicolon (;)> insert into graph
> <ResultsetCrashTest>
> Type the rest of statement, end with a semicolon (;)> {
> Type the rest of statement, end with a semicolon (;)> <s1> a <class> .
> Type the rest of statement, end with a semicolon (;)> <s2> a <class> .
> Type the rest of statement, end with a semicolon (;)> <s3> a <class> .
> Type the rest of statement, end with a semicolon (;)> <s1> <name>
> "s1"^^xsd:string .
> Type the rest of statement, end with a semicolon (;)> <s2> <name>
> "s2"^^xsd:string .
> Type the rest of statement, end with a semicolon (;)> <s3> <name>
> "s3"^^xsd:string .
> Type the rest of statement, end with a semicolon (;)> };
>
> Done. -- 122 msec.
> SQL> test.test.resultsetCrash();
> S
>         P
>               O
> VARCHAR
>         VARCHAR
>               VARCHAR
>
> _______________________________________________________________________________
>
> s2
>        http://www.w3.org/1999/02/22-rdf-syntax-ns#type
>                 class
> s2
>        name
>              s2
>
> 2 Rows. -- 4 msec.
> SQL>
>
>
>   Best Regards
> Hugh Williams
> Professional Services
> OpenLink Software, Inc.      //              http://www.openlinksw.com/
> Weblog   -- http://www.openlinksw.com/blogs/
> LinkedIn -- http://www.linkedin.com/company/openlink-software/
> Twitter  -- http://twitter.com/OpenLink
> Google+  -- http://plus.google.com/100570109519069333827/
> Facebook -- http://www.facebook.com/OpenLinkSoftware
> Universal Data Access, Integration, and Management Technology Providers
>
> On 5 Feb 2014, at 23:33, Quentin <quent...@clearbluewater.com.au> wrote:
>
> I believe it's just an effect of calling exec_result with a row that
> doesn't match the columns declared to exec_result_names, with that in
> mind, I've simplified the test case.
>
> =====================================================================
> create procedure
> test.test.resultsetCrash( )
> {
>
> declare meta, _dt any;
> declare query, query2, errorCode, errorMessage varchar;
> declare inx integer;
> declare parameters vector;
> parameters := vector();
>
> query := 'sparql
> select ?S ?P ?O
> {GRAPH <ResultsetCrashTest> {
> {{ select distinct ?S { ?S a ?class } limit 1 offset 1 }}
>  ?S ?P ?O .
> }}';
>
> exec (query, errorCode, errorMessage, vector(), 0, meta, _dt);
>
> declare meta2, _dt2 any;
> declare errorCode2, errorMessage2 varchar;
>
> query2 := 'sparql
> select count(distinct ?S) as ?count
> { GRAPH <ResultsetCrashTest> {
> ?S a ?class .
> }}';
>
> declare entCount integer;
> declare entVector any;
>
> exec (query, errorCode, errorMessage, vector(), 0, meta, _dt);
> if (meta <> 0) {
>   exec_result_names (meta[0]);
>   inx := 0;
> if (_dt <> 0) {
>   while (inx < length (_dt))
>     {
>       exec_result (_dt[inx]);
>       inx := inx + 1;
>     }
>
> declare meta, _dt any;
> declare errorCode, errorMessage varchar;
> declare inx integer;
>
> end_result();
> exec (query2, errorCode, errorMessage, vector(), 0, meta, _dt);
> exec_result (_dt[0]);
> }
> }
> }
> =====================================================================
>
> sparql drop silent graph <ResultsetCrashTest>;
> sparql
> insert into graph <ResultsetCrashTest>
> {
> <s1> a <class> .
> <s2> a <class> .
> <s3> a <class> .
> <s1> <name> "s1"^^xsd:string .
> <s2> <name> "s2"^^xsd:string .
> <s3> <name> "s3"^^xsd:string .
> };
> test.test.resultsetCrash();
> -- The crash has already occurred.
> =====================================================================
>
>
> On 5 February 2014 22:03, Hugh Williams <hwilli...@openlinksw.com> wrote:
>
>> Hi Quentin,
>>
>> Can you provide the complete compilable and runnable procedure you are
>> running that is causing the crash, as I cannot get the snippet you have
>> provide below to create ...
>>
>>   Best Regards
>> Hugh Williams
>> Professional Services
>> OpenLink Software, Inc.      //              http://www.openlinksw.com/
>> Weblog   -- http://www.openlinksw.com/blogs/
>> LinkedIn -- http://www.linkedin.com/company/openlink-software/
>> Twitter  -- http://twitter.com/OpenLink
>> Google+  -- http://plus.google.com/100570109519069333827/
>> Facebook -- http://www.facebook.com/OpenLinkSoftware
>> Universal Data Access, Integration, and Management Technology Providers
>>
>> On 5 Feb 2014, at 07:45, Quentin <quent...@clearbluewater.com.au> wrote:
>>
>> Hi,
>>
>> Running develop7 with a procedure that attempts to return two result
>> sets.  Probably not wise but I was experimenting with ways to return
>> metadata about a query.
>>
>> The procedure did something including:
>> ==================
>> ...other stuff...
>> query := 'select ?S ?P ?O {....} limit 10 offset 20';
>> exec (query, errorCode, errorMessage, vector(), 0, meta, _dt);
>> if (meta <> 0) {
>>   exec_result_names (meta[0]);
>>   inx := 0;
>> if (_dt <> 0) {
>>   while (inx < length (_dt))
>>     {
>>       exec_result (_dt[inx]);
>>       inx := inx + 1;
>>     }
>> }
>> } else exec_result_names(vector('?NullRecords'));
>>
>> declare meta, _dt any;
>> declare errorCode, errorMessage varchar;
>> declare inx integer;
>>
>> query := 'select count (distinct ?S) as ?count {....}';
>> end_result();
>> exec (query, errorCode, errorMessage, vector(), 0, meta, _dt);
>> exec_result (_dt[0]);
>> }
>> ==================
>>
>> I wasn't really expecting it to work but a server crash seems worth
>> reporting.
>>
>> As an aside, does anyone have any advice on how to return something like
>> a count of total rows together in the same query that returns a paginated
>> set of rows?
>>
>> I'm actually paginating the entities themselves and would like to be able
>> to report the number of entities in the same procedure so as to avoid
>> unnecessary pagination.
>> --
>> Quentin | Clear Blue Water Pty Ltd
>> quent...@clearbluewater.com.au
>>
>> ------------------------------------------------------------------------------
>> Managing the Performance of Cloud-Based Applications
>> Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
>> Read the Whitepaper.
>>
>> http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk_______________________________________________
>> Virtuoso-users mailing list
>> Virtuoso-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/virtuoso-users
>>
>>
>>
>
>
> --
> Quentin | Clear Blue Water Pty Ltd
> quent...@clearbluewater.com.au
>
> ------------------------------------------------------------------------------
> Managing the Performance of Cloud-Based Applications
> Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
> Read the Whitepaper.
>
> http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk_______________________________________________
> Virtuoso-users mailing list
> Virtuoso-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/virtuoso-users
>
>
>


-- 
Quentin | Clear Blue Water Pty Ltd
quent...@clearbluewater.com.au
------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
Virtuoso-users mailing list
Virtuoso-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtuoso-users

Reply via email to