[tracker/async-queries-wip: 1/23] libtracker-data: Add execute_async method to SparqlQuery class
- From: Jürg Billeter <juergbi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/async-queries-wip: 1/23] libtracker-data: Add execute_async method to SparqlQuery class
- Date: Thu, 15 Apr 2010 12:12:53 +0000 (UTC)
commit e21c43cd1b319c07fcf47560effe91afd62a8059
Author: Jürg Billeter <j bitron ch>
Date: Fri Apr 9 15:34:36 2010 +0200
libtracker-data: Add execute_async method to SparqlQuery class
src/libtracker-data/Makefile.am | 2 +-
src/libtracker-data/tracker-sparql-query.vala | 31 ++++++++++++++++++------
src/libtracker-db/libtracker-db.vapi | 1 +
3 files changed, 25 insertions(+), 9 deletions(-)
---
diff --git a/src/libtracker-data/Makefile.am b/src/libtracker-data/Makefile.am
index f2ed878..038d1e8 100644
--- a/src/libtracker-data/Makefile.am
+++ b/src/libtracker-data/Makefile.am
@@ -58,7 +58,7 @@ vapi_sources = \
libtracker-data.vapi
libtracker-data.vala.stamp: $(libtracker_data_la_VALASOURCES) $(vapi_sources)
- $(AM_V_GEN)$(VALAC) $(GCOV_VALAFLAGS) -C $(VALAFLAGS) -H tracker-sparql-query.h $^
+ $(AM_V_GEN)$(VALAC) $(GCOV_VALAFLAGS) -C $(VALAFLAGS) --pkg gio-2.0 -H tracker-sparql-query.h $^
touch $@
libtracker_data_la_LDFLAGS = \
diff --git a/src/libtracker-data/tracker-sparql-query.vala b/src/libtracker-data/tracker-sparql-query.vala
index ef688aa..7db2bb6 100644
--- a/src/libtracker-data/tracker-sparql-query.vala
+++ b/src/libtracker-data/tracker-sparql-query.vala
@@ -361,7 +361,7 @@ public class Tracker.Sparql.Query : Object {
}
}
- public DBResultSet? execute () throws DBInterfaceError, SparqlError, DateError {
+ public DBStatement prepare () throws DBInterfaceError, SparqlError, DateError {
assert (!update_extensions);
scanner = new SparqlScanner ((char*) query_string, (long) query_string.size ());
@@ -378,13 +378,13 @@ public class Tracker.Sparql.Query : Object {
switch (current ()) {
case SparqlTokenType.SELECT:
- return execute_select ();
+ return prepare_select ();
case SparqlTokenType.CONSTRUCT:
throw get_internal_error ("CONSTRUCT is not supported");
case SparqlTokenType.DESCRIBE:
throw get_internal_error ("DESCRIBE is not supported");
case SparqlTokenType.ASK:
- return execute_ask ();
+ return prepare_ask ();
case SparqlTokenType.INSERT:
case SparqlTokenType.DELETE:
case SparqlTokenType.DROP:
@@ -394,6 +394,16 @@ public class Tracker.Sparql.Query : Object {
}
}
+ public DBResultSet? execute () throws DBInterfaceError, SparqlError, DateError {
+ var stmt = prepare ();
+ return stmt.execute ();
+ }
+
+ public async DBResultSet? execute_async () throws DBInterfaceError, SparqlError, DateError {
+ var stmt = prepare ();
+ return yield stmt.execute_async ();
+ }
+
public PtrArray? execute_update (bool blank) throws DataError, DBInterfaceError, SparqlError, DateError {
assert (update_extensions);
@@ -442,7 +452,7 @@ public class Tracker.Sparql.Query : Object {
return blank_nodes;
}
- DBResultSet? exec_sql (string sql) throws DBInterfaceError, SparqlError, DateError {
+ DBStatement create_db_statement (string sql) throws DBInterfaceError, SparqlError, DateError {
var iface = DBManager.get_db_interface ();
var stmt = iface.create_statement ("%s", sql);
@@ -467,10 +477,15 @@ public class Tracker.Sparql.Query : Object {
i++;
}
+ return stmt;
+ }
+
+ DBResultSet? exec_sql (string sql) throws DBInterfaceError, SparqlError, DateError {
+ var stmt = create_db_statement (sql);
return stmt.execute ();
}
- DBResultSet? execute_select () throws DBInterfaceError, SparqlError, DateError {
+ DBStatement prepare_select () throws DBInterfaceError, SparqlError, DateError {
// SELECT query
context = new Context ();
@@ -483,10 +498,10 @@ public class Tracker.Sparql.Query : Object {
context = context.parent_context;
- return exec_sql (sql.str);
+ return create_db_statement (sql.str);
}
- DBResultSet? execute_ask () throws DBInterfaceError, SparqlError, DateError {
+ DBStatement prepare_ask () throws DBInterfaceError, SparqlError, DateError {
// ASK query
var pattern_sql = new StringBuilder ();
@@ -511,7 +526,7 @@ public class Tracker.Sparql.Query : Object {
context = context.parent_context;
- return exec_sql (sql.str);
+ return create_db_statement (sql.str);
}
private void parse_from_or_into_param () throws SparqlError {
diff --git a/src/libtracker-db/libtracker-db.vapi b/src/libtracker-db/libtracker-db.vapi
index d9a69e7..2a80317 100644
--- a/src/libtracker-db/libtracker-db.vapi
+++ b/src/libtracker-db/libtracker-db.vapi
@@ -56,6 +56,7 @@ namespace Tracker {
public abstract void bind_int (int index, int value);
public abstract void bind_text (int index, string value);
public abstract DBResultSet execute () throws DBInterfaceError;
+ public abstract async DBResultSet execute_async () throws DBInterfaceError;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]