[tracker/wip/carlosg/serialize-api] libtracker-data: Do not forward cursor variable names separately



commit b8785b9145af2f1919f2526d16be1b1df2d690ab
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sat Jan 29 22:07:07 2022 +0100

    libtracker-data: Do not forward cursor variable names separately
    
    These are already forwarded correctly via the AS keyword in SQL, we do
    not need to forward these names separately, and can fetch them from the
    sqlite3_stmt instead.

 src/libtracker-data/tracker-db-interface-sqlite.c | 40 +++--------------------
 src/libtracker-data/tracker-db-interface.h        |  2 --
 src/libtracker-data/tracker-sparql.c              | 12 +------
 3 files changed, 6 insertions(+), 48 deletions(-)
---
diff --git a/src/libtracker-data/tracker-db-interface-sqlite.c 
b/src/libtracker-data/tracker-db-interface-sqlite.c
index 31f7d9f68..92c407257 100644
--- a/src/libtracker-data/tracker-db-interface-sqlite.c
+++ b/src/libtracker-data/tracker-db-interface-sqlite.c
@@ -117,8 +117,6 @@ struct TrackerDBCursor {
        gboolean finished;
        TrackerPropertyType *types;
        guint n_types;
-       gchar **variable_names;
-       guint n_variable_names;
 };
 
 struct TrackerDBCursorClass {
@@ -145,9 +143,7 @@ static TrackerDBStatement *tracker_db_statement_sqlite_new          (TrackerDBIn
 static void                tracker_db_statement_sqlite_reset        (TrackerDBStatement    *stmt);
 static TrackerDBCursor    *tracker_db_cursor_sqlite_new             (TrackerDBStatement    *ref_stmt,
                                                                      TrackerPropertyType   *types,
-                                                                     guint                  n_types,
-                                                                     const gchar * const   *variable_names,
-                                                                     guint                  
n_variable_names);
+                                                                     guint                  n_types);
 static gboolean            tracker_db_cursor_get_boolean            (TrackerSparqlCursor   *cursor,
                                                                      guint                  column);
 static gboolean            db_cursor_iter_next                      (TrackerDBCursor       *cursor,
@@ -3129,7 +3125,6 @@ static void
 tracker_db_cursor_finalize (GObject *object)
 {
        TrackerDBCursor *cursor;
-       guint i;
 
        cursor = TRACKER_DB_CURSOR (object);
 
@@ -3137,11 +3132,6 @@ tracker_db_cursor_finalize (GObject *object)
 
        g_free (cursor->types);
 
-       for (i = 0; i < cursor->n_variable_names; i++) {
-               g_free (cursor->variable_names[i]);
-       }
-       g_free (cursor->variable_names);
-
        G_OBJECT_CLASS (tracker_db_cursor_parent_class)->finalize (object);
 }
 
@@ -3231,9 +3221,7 @@ tracker_db_cursor_class_init (TrackerDBCursorClass *class)
 static TrackerDBCursor *
 tracker_db_cursor_sqlite_new (TrackerDBStatement  *ref_stmt,
                               TrackerPropertyType *types,
-                              guint                n_types,
-                              const gchar * const *variable_names,
-                              guint                n_variable_names)
+                              guint                n_types)
 {
        TrackerDBCursor *cursor;
        TrackerDBInterface *iface;
@@ -3274,16 +3262,6 @@ tracker_db_cursor_sqlite_new (TrackerDBStatement  *ref_stmt,
                }
        }
 
-       if (variable_names) {
-               guint i;
-
-               cursor->variable_names = g_new (gchar *, n_variable_names);
-               cursor->n_variable_names = n_variable_names;
-               for (i = 0; i < n_variable_names; i++) {
-                       cursor->variable_names[i] = g_strdup (variable_names[i]);
-               }
-       }
-
        return cursor;
 }
 
@@ -3637,13 +3615,7 @@ tracker_db_cursor_get_variable_name (TrackerDBCursor *cursor,
        iface = cursor->ref_stmt->db_interface;
 
        tracker_db_interface_lock (iface);
-
-       if (column < cursor->n_variable_names) {
-               result = cursor->variable_names[column];
-       } else {
-               result = sqlite3_column_name (cursor->stmt, column);
-       }
-
+       result = sqlite3_column_name (cursor->stmt, column);
        tracker_db_interface_unlock (iface);
 
        return result;
@@ -3693,21 +3665,19 @@ tracker_db_statement_start_cursor (TrackerDBStatement  *stmt,
        g_return_val_if_fail (TRACKER_IS_DB_STATEMENT (stmt), NULL);
        g_return_val_if_fail (!stmt->stmt_is_used, NULL);
 
-       return tracker_db_cursor_sqlite_new (stmt, NULL, 0, NULL, 0);
+       return tracker_db_cursor_sqlite_new (stmt, NULL, 0);
 }
 
 TrackerDBCursor *
 tracker_db_statement_start_sparql_cursor (TrackerDBStatement   *stmt,
                                           TrackerPropertyType  *types,
                                           guint                 n_types,
-                                          const gchar * const  *variable_names,
-                                          guint                 n_variable_names,
                                           GError              **error)
 {
        g_return_val_if_fail (TRACKER_IS_DB_STATEMENT (stmt), NULL);
        g_return_val_if_fail (!stmt->stmt_is_used, NULL);
 
-       return tracker_db_cursor_sqlite_new (stmt, types, n_types, variable_names, n_variable_names);
+       return tracker_db_cursor_sqlite_new (stmt, types, n_types);
 }
 
 static void
diff --git a/src/libtracker-data/tracker-db-interface.h b/src/libtracker-data/tracker-db-interface.h
index ca651126d..83e0e9438 100644
--- a/src/libtracker-data/tracker-db-interface.h
+++ b/src/libtracker-data/tracker-db-interface.h
@@ -145,8 +145,6 @@ TrackerDBCursor *       tracker_db_statement_start_cursor            (TrackerDBS
 TrackerDBCursor *       tracker_db_statement_start_sparql_cursor     (TrackerDBStatement         *stmt,
                                                                       TrackerPropertyType        *types,
                                                                       guint                       n_types,
-                                                                      const gchar * const        
*variable_names,
-                                                                      guint                       
n_variable_names,
                                                                       GError                    **error);
 
 /* Functions to deal with a cursor */
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index 225554dc8..ca9e4b528 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -174,7 +174,6 @@ struct _TrackerSparql
        GHashTable *prefix_map;
        GList *filter_clauses;
 
-       GPtrArray *var_names;
        GArray *var_types;
        GHashTable *cached_bindings;
 
@@ -243,7 +242,6 @@ tracker_sparql_finalize (GObject *object)
 
        g_ptr_array_unref (sparql->named_graphs);
        g_ptr_array_unref (sparql->anon_graphs);
-       g_ptr_array_unref (sparql->var_names);
        g_array_unref (sparql->var_types);
        g_free (sparql->base);
 
@@ -2792,7 +2790,6 @@ tracker_sparql_add_select_var (TrackerSparql       *sparql,
 {
        if (sparql->current_state->select_context == sparql->context) {
                /* Topmost select context */
-               g_ptr_array_add (sparql->var_names, g_strdup (name));
                g_array_append_val (sparql->var_types, type);
        } else {
                TrackerContext *parent;
@@ -4648,7 +4645,6 @@ get_solution_for_pattern (TrackerSparql      *sparql,
                return NULL;
 
        cursor = tracker_db_statement_start_sparql_cursor (stmt,
-                                                          NULL, 0,
                                                           NULL, 0,
                                                           error);
        g_object_unref (stmt);
@@ -9738,7 +9734,6 @@ tracker_sparql_init (TrackerSparql *sparql)
                                                         g_free, g_object_unref);
        sparql->parameters = g_hash_table_new_full (g_str_hash, g_str_equal,
                                                    g_free, g_object_unref);
-       sparql->var_names = g_ptr_array_new_with_free_func (g_free);
        sparql->var_types = g_array_new (FALSE, FALSE, sizeof (TrackerPropertyType));
        sparql->anon_graphs = g_ptr_array_new_with_free_func (g_free);
        sparql->named_graphs = g_ptr_array_new_with_free_func (g_free);
@@ -9931,7 +9926,6 @@ tracker_sparql_reset_state (TrackerSparql *sparql)
        g_clear_object (&sparql->context);
        g_list_free (sparql->filter_clauses);
        sparql->filter_clauses = NULL;
-       g_ptr_array_set_size (sparql->var_names, 0);
        g_array_set_size (sparql->var_types, 0);
        g_hash_table_remove_all (sparql->cached_bindings);
        g_hash_table_remove_all (sparql->parameters);
@@ -9948,8 +9942,7 @@ tracker_sparql_execute_cursor (TrackerSparql  *sparql,
        TrackerDBInterface *iface = NULL;
        TrackerDBCursor *cursor = NULL;
        TrackerPropertyType *types;
-       const gchar * const *names;
-       guint n_types, n_names;
+       guint n_types;
 
        g_mutex_lock (&sparql->mutex);
 
@@ -9999,12 +9992,9 @@ tracker_sparql_execute_cursor (TrackerSparql  *sparql,
 
        types = (TrackerPropertyType *) sparql->var_types->data;
        n_types = sparql->var_types->len;
-       names = (const gchar * const *) sparql->var_names->pdata;
-       n_names = sparql->var_names->len;
 
        cursor = tracker_db_statement_start_sparql_cursor (stmt,
                                                           types, n_types,
-                                                          names, n_names,
                                                           error);
        g_object_unref (stmt);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]