[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdesupport/soprano/backends/virtuoso
From: Sebastian Trueg <sebastian () trueg ! de>
Date: 2010-04-30 9:59:47
Message-ID: 20100430100330.7C840AC8A7 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1121086 by trueg:
Slightly better way to detect graph query results. It is still a bit hacky but much \
better than before.
M +12 -6 odbcqueryresult.cpp
M +3 -0 odbcqueryresult.h
M +1 -0 odbcqueryresult_p.h
M +2 -3 virtuosoqueryresultiteratorbackend.cpp
--- trunk/kdesupport/soprano/backends/virtuoso/odbcqueryresult.cpp #1121085:1121086
@@ -64,19 +64,17 @@
SQLTCHAR colName[51];
colName[50] = 0;
SQLSMALLINT colType;
- SQLULEN colPrecision;
- SQLSMALLINT colScale;
- SQLSMALLINT colNullable;
if ( SQLDescribeCol( d->m_hstmt,
col,
(SQLTCHAR *) colName,
50,
0,
&colType,
- &colPrecision,
- &colScale,
- &colNullable) == SQL_SUCCESS ) {
+ 0,
+ 0,
+ 0) == SQL_SUCCESS ) {
d->m_columns.append( QString::fromLatin1( ( const char* )colName \
) ); + d->m_columTypes.append( colType );
}
else {
setError( Virtuoso::convertSqlError( SQL_HANDLE_STMT, \
d->m_hstmt, QLatin1String( "SQLDescribeCol failed" ) ) ); @@ -306,6 +304,14 @@
}
+bool Soprano::ODBC::QueryResult::isBlob( int colNum )
+{
+ return ( d->m_columTypes[colNum-1] == SQL_LONGVARCHAR ||
+ d->m_columTypes[colNum-1] == SQL_LONGVARBINARY ||
+ d->m_columTypes[colNum-1] == SQL_WLONGVARCHAR );
+}
+
+
bool Soprano::ODBC::QueryResult::getCharData( int colNum, SQLCHAR** buffer, SQLLEN* \
length ) {
SQLCHAR dummyBuffer[1]; // dummy buffer only used to determine length
--- trunk/kdesupport/soprano/backends/virtuoso/odbcqueryresult.h #1121085:1121086
@@ -47,6 +47,9 @@
bool fetchRow();
Node getData( int colNum );
+ /// Check if the data in column colNum is a BLOB. used in \
Virtuoso::QueryResultIteratorBackend + bool isBlob( int colNum );
+
private:
QueryResult();
--- trunk/kdesupport/soprano/backends/virtuoso/odbcqueryresult_p.h #1121085:1121086
@@ -45,6 +45,7 @@
ConnectionPrivate* m_conn;
QStringList m_columns;
+ QList<SQLSMALLINT> m_columTypes;
};
}
}
--- trunk/kdesupport/soprano/backends/virtuoso/virtuosoqueryresultiteratorbackend.cpp \
#1121085:1121086 @@ -82,11 +82,10 @@
if ( d->m_queryResult->fetchRow() ) {
Node node = d->m_queryResult->getData( 1 );
if ( !d->m_queryResult->lastError() ) {
- // FIXME: This is hacky. Better check if the value is a BLOB
- if ( node.literal().isString() ) {
+ if ( d->m_queryResult->isBlob( 1 ) ) {
+ QString data = node.toString();
d->m_resultType = \
QueryResultIteratorBackendPrivate::GraphResult;
if ( const Parser* parser = \
PluginManager::instance()->discoverParserForSerialization( \
SerializationTurtle ) ) {
- QString data = node.toString();
d->graphIterator = parser->parseString( data, QUrl(), \
SerializationTurtle ); setError( parser->lastError() );
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic