Hi Nathan,

----- Original Message ----
> From: Nathan <[email protected]>
> To: Virtuoso Users List <[email protected]>
> Sent: Mon, 1 March, 2010 11:30:58 AM
> Subject: [Virtuoso-users] Error reports
> 
> Hi All,
> 
> Just a quick update on some "new to me" errors;
> 
> 40001 Error SR172: Transaction deadlocked

I used to get this regularly for SPARUL queries before I added "define 
sql:log-enable 2" in front of all my SPARUL queries. Virtuoso can't handle 
multiple concurrent SPARUL queries without changing the transaction logging 
method as far as I know. I haven't seen the issue since I made that change.

> and another one (which i lost) which basically said "Generated SQL more
> than 10000 lines" which I was getting frequently when SPARUL inserting
> 2000-5000 triples; I've since lowered all sparul queries to be max 1000
> triples and never seen the error since :)
> 
> and finally, noticed more odd behaviour with in(), along the lines of
> the transitive errors I was getting where in() basically set params to a
> single value; as follows:
> 
> select * where {
> {
> {
>   select distinct ?L1 count(?x1) as ?votes where {
>    u:49991734 t:following ?x1 . ?L1 t:following ?x1
>   }
>   group by ?L1 order by desc( ?votes ) LIMIT 500
> }
> FILTER( <http://bit.of/an/error> in( ?L1 ) )
> }
> }

Why do you need to test whether a constant is the same as a parameter using 
in()? I am not saying it isn't a bug but as far as I know you can say 
FILTER(?L1 = <http://bit.of/an/error> ) and get the right result. I wouldn't 
have even been aware that you could use parameters in IN() if you hadn't of 
given that example. 

Does the following work or is it a different query? FILTER( ?L1 in( 
<http://bit.of/an/error> ) )

Cheers,

Peter





Reply via email to