Hi,

I'm encountering some errors accessing Virtuoso7 via odbc.  The actual 
error varies depending on the release but the below error occurs with 
the latest stable7.

$ virtuoso-t -?
Virtuoso Open Source Edition (Column Store) (multi threaded)
Version 7.2.1.3214-pthreads as of Dec  1 2015
Compiled for Linux (x86_64-unknown-linux-gnu)
Copyright (C) 1998-2015 OpenLink Software

The same error occurs under develop7 as well as the next older release 
of stable7.  An older v6 driver against a v7 DB worked for the below 
query but had an unrelated buffer-underrun issue with blobs (exposing 
Apache's heap concatenated after the blob truncated to 4072 characters).

The actual error given is: "VD032: remote prepare: SQ200: No column 
t2.P.Complete."
Running the DB in foreground/debug mode doesn't give any more 
information.  The query and its result are shown here:
*********************
05:15:04 INFO: COMP_2 dba XX.XX.XX.XX 1111:1 Compile text:  SPARQL
SELECT ?Object ?PredLabel
FROM <Test/>
WHERE {
     ?S ?P ?Object
     FILTER (?S = <Subject1>)
     { SELECT ?P ?PredLabel
FROM <Test/Ontologies/>
WHERE {
?P rdfs:label ?PredLabel .
} }
   } ORDER BY ?ObjectLabel LIMIT 100
05:15:04 INFO: ERRS_0 S0022 SQ200 No column t2.P.
05:15:04 INFO: ERRS_0 S0022 VD032 remote prepare: SQ200: No column t2.P.
*********************

The presence or absence of triples in query results is irrelevant to the 
error.  The query executes normally via isql and conductor.
Assuming that PHP is configured for odbc, the script at the bottom of 
the post is sufficient to cause the error:

Aside from assistance with the error in question, could I get some 
guidance on the 'correct' way to build or extract odbc drivers from a 
Virtuoso release?  Or, given Ubuntu 14.04LTS, should I be using drivers 
from the iodbc package?  It's possible that the error is due to an 
incorrect odbc configuration or driver and I'd like to check what I'm 
supposed to be doing there.

Quentin.
*********************
<?php

// Main
function main() {
        $db_user = 'dba';
        $db_pass = 'dba';
        $dsn = 'testv7Stable';
        $cursor = SQL_CUR_USE_DRIVER;

echo "Opening DB.\n";
        $dbCon = odbc_connect($dsn, $db_user, $db_pass, $cursor);

echo "DB open.\n";
$insertQuery1 = "SPARQL
WITH <Test/Ontologies/>
INSERT {
<Pred1> rdfs:label \"Test Predicate\" .
}";
$insertQuery2 = "SPARQL
WITH <Test/>

INSERT {
<Subject1> <Pred1> \"Test Object\" .
}";
$testQuery = "SPARQL
SELECT ?Object ?PredLabel
FROM <Test/>
WHERE {
     ?S ?P ?Object
     FILTER (?S = <Subject1>)
     { SELECT ?P ?PredLabel
FROM <Test/Ontologies/>
WHERE {
?P rdfs:label ?PredLabel .
} }
   } ORDER BY ?ObjectLabel LIMIT 100";
        $delete1 = "SPARQL DROP SILENT GRAPH <Test/>";
        $delete2 = "SPARQL DROP SILENT GRAPH <Test/Ontologies/>";
     $cur = (odbc_exec($dbCon, $insertQuery1));
     $cur = (odbc_exec($dbCon, $insertQuery2));

     $cur = (odbc_exec($dbCon, $testQuery));
     if (!odbc_error($dbCon)) {
        echo "Test passed.\n";
     } else {
        echo "Test failed.\n";
        echo odbc_errormsg($dbCon);
     }
     $cur = (odbc_exec($dbCon, $delete1));
     $cur = (odbc_exec($dbCon, $delete2));
     @odbc_close($dbCon);
}


echo "Starting.\n";
main();
echo "Complete.\n";
?>

------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
_______________________________________________
Virtuoso-users mailing list
Virtuoso-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtuoso-users

Reply via email to