Hi Quentin,
By "isql" I mean't the Virtuoso command line tool, which is where the "set
AUTOCOMMIT MANUAL;" command works.
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 1 Jan 2014, at 22:54, Quentin <quent...@clearbluewater.com.au> wrote:
> Hi Hugh,
>
> I'm testing in conductor/isql but will be using odbc in implementation.
>
> The suggested instruction gives:
>
> SQLState: 37000
> Message: SQ074: Line 1: syntax error at 'MANUAL' before ';'
> set AUTOCOMMIT MANUAL
> I'm certain that's a correct isql instruction so am a little confused about
> that occurring but regardless, I believe it's functionally equivalent to:
> log_enable(0);
> ...
> do work;
> ...
> log_enable(3);
>
> So I tried using log_enable instead and the users were still being
> created/committed despite the exception and rollback.
>
> On 31 December 2013 22:33, Hugh Williams <hwilli...@openlinksw.com> wrote:
> Hi Quentin,
>
> Are you running this procedure from isql as if so autocommit mode by default
> and you need to set it to manual commit mode first before running the
> procedure with the command:
>
> set AUTOCOMMIT MANUAL;
>
> 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 31 Dec 2013, at 03:27, Quentin <quent...@clearbluewater.com.au> wrote:
>
>> Hi,
>>
>> I'm attempting to implement something using your advice and am encountering
>> a problem. I have a function:
>> create procedure
>> testapp.test.testAbort(IN name VARCHAR, IN pwd VARCHAR, IN cert VARCHAR)
>> returns varchar
>> {
>>
>> whenever SQLEXCEPTION goto errorabort;
>>
>> declare options VECTOR;
>> options := vector('SQL_ENABLE', 1);
>>
>> DB.DBA.USER_CREATE (name, pwd, options);
>> DB.DBA.USER_CERT_REGISTER(name, cert);
>> exec(concat('GRANT SPARQL_UPDATE TO ',name));
>>
>> DB.DBA.RDF_DEFAULT_USER_PERMS_SET (name, 0);
>> DB.DBA.USER_GRANT_ROLE(name, 'TEST_USER',0);
>>
>> return 'everything ok';
>>
>> errorabort:
>> rollback work;
>> result(__SQL_STATE);
>> result(__SQL_MESSAGE);
>> return concat('error: ',__SQL_STATE, ' - ',__SQL_MESSAGE);
>> }
>>
>> Then I call "select testapp.test.testAbort('testUser3','xxx', 'xxx');"
>>
>> Of course this certificate is not quite correct and Virtuoso rightly
>> complains causing the outer function to return: "error: 22023 - U....: The
>> certificate have been supplied is not valid or corrupted"
>>
>> But I have three problems here:
>> The first is that the exception is not returned to the parent, I can only
>> see it via the return value. If I try to signal/resignal it, I trip the
>> exception handler and enter an infinite loop.
>> The second is that the user "testUser3" has been created and this work is
>> not aborted, presumably because it was committed in the USER_CREATE function.
>>
>> So, how do I remove a declared handler once I want to escalate an exception?
>> How can I prevent a function from committing work that I want to occur in a
>> transaction with other activity in a parent function?
>>
>> Oh, and when I kill the DB process to break the exception handling loop, I
>> get an error on startup, that's problem three:
>> ---------------
>> ERROR: Error executing a server init statement : 22023: SR528: Uninitialized
>> property qmfOkForAnySqlvalue in JSO instance
>> <http://www.openlinksw.com/virtrdf-data-formats#default-iid> of type
>> <http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat> --
>> DB.DBA.RDF_QUAD_FT_UPGRADE ()
>> ---------------
>> It might not be related to what I was doing, I'm not sure.
>>
>>
>>
>>
>> On 16 December 2013 10:48, Hugh Williams <hwilli...@openlinksw.com> wrote:
>> Hi Quentin,
>>
>> The log_enable should be removed, and unless there are no other commits or
>> rollbacks the sequence will be executed in one transaction ...
>>
>> 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 11 Dec 2013, at 05:07, Quentin <quent...@clearbluewater.com.au> wrote:
>>
>>> Hi,
>>>
>>> If I'm executing an sql function that does some sparql, deletes some
>>> triples and calls a few other functions, can I force this to occur all
>>> within the context of one continuous transaction state?
>>>
>>> So if I have something like the below function and the
>>> someOtherFunction() throws an exception (or signal), can I abort the
>>> transaction and rollback the sparql insert? Or will I find some
>>> results have already been committed?
>>>
>>> create procedure test.test.oneTransaction();
>>> {
>>> log_enable (0);
>>> exec('sparql insert.....');
>>> test.test.someOtherFunction();
>>> log_enable (1);
>>> commit work;
>>> }
>>>
>>> --
>>> Quentin | Clear Blue Water Pty Ltd
>>> quent...@clearbluewater.com.au
>>>
>>> ------------------------------------------------------------------------------
>>> Rapidly troubleshoot problems before they affect your business. Most IT
>>> organizations don't have a clear picture of how application performance
>>> affects their revenue. With AppDynamics, you get 100% visibility into your
>>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics
>>> Pro!
>>> http://pubads.g.doubleclick.net/gampad/clk?id=84349831&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
>>
>>
>> On 16 December 2013 10:48, Hugh Williams <hwilli...@openlinksw.com> wrote:
>> Hi Quentin,
>>
>> The log_enable should be removed, and unless there are no other commits or
>> rollbacks the sequence will be executed in one transaction ...
>>
>> 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 11 Dec 2013, at 05:07, Quentin <quent...@clearbluewater.com.au> wrote:
>>
>>> Hi,
>>>
>>> If I'm executing an sql function that does some sparql, deletes some
>>> triples and calls a few other functions, can I force this to occur all
>>> within the context of one continuous transaction state?
>>>
>>> So if I have something like the below function and the
>>> someOtherFunction() throws an exception (or signal), can I abort the
>>> transaction and rollback the sparql insert? Or will I find some
>>> results have already been committed?
>>>
>>> create procedure test.test.oneTransaction();
>>> {
>>> log_enable (0);
>>> exec('sparql insert.....');
>>> test.test.someOtherFunction();
>>> log_enable (1);
>>> commit work;
>>> }
>>>
>>> --
>>> Quentin | Clear Blue Water Pty Ltd
>>> quent...@clearbluewater.com.au
>>>
>>> ------------------------------------------------------------------------------
>>> Rapidly troubleshoot problems before they affect your business. Most IT
>>> organizations don't have a clear picture of how application performance
>>> affects their revenue. With AppDynamics, you get 100% visibility into your
>>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics
>>> Pro!
>>> http://pubads.g.doubleclick.net/gampad/clk?id=84349831&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
>> ------------------------------------------------------------------------------
>> Rapidly troubleshoot problems before they affect your business. Most IT
>> organizations don't have a clear picture of how application performance
>> affects their revenue. With AppDynamics, you get 100% visibility into your
>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics
>> Pro!
>> http://pubads.g.doubleclick.net/gampad/clk?id=84349831&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
> ------------------------------------------------------------------------------
> Rapidly troubleshoot problems before they affect your business. Most IT
> organizations don't have a clear picture of how application performance
> affects their revenue. With AppDynamics, you get 100% visibility into your
> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
> http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk_______________________________________________
> Virtuoso-users mailing list
> Virtuoso-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/virtuoso-users
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Virtuoso-users mailing list
Virtuoso-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtuoso-users