aboutsummaryrefslogtreecommitdiff
path: root/src/sq/sq.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sq/sq.c')
-rw-r--r--src/sq/sq.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/sq/sq.c b/src/sq/sq.c
index dc4416761..089ebf0ff 100644
--- a/src/sq/sq.c
+++ b/src/sq/sq.c
@@ -49,7 +49,14 @@ GNUNET_SQ_bind (sqlite3_stmt *stmt,
49 "sq", 49 "sq",
50 _("Failure to bind %u-th SQL parameter\n"), 50 _("Failure to bind %u-th SQL parameter\n"),
51 i); 51 i);
52 return GNUNET_SYSERR; 52 if (SQLITE_OK !=
53 sqlite3_reset (stmt))
54 {
55 GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
56 "sq",
57 _("Failure in sqlite3_reset (!)\n"));
58 return GNUNET_SYSERR;
59 }
53 } 60 }
54 GNUNET_assert (0 != params[i].num_params); 61 GNUNET_assert (0 != params[i].num_params);
55 j += params[i].num_params; 62 j += params[i].num_params;
@@ -83,7 +90,12 @@ GNUNET_SQ_extract_result (sqlite3_stmt *result,
83 j, 90 j,
84 rs[i].result_size, 91 rs[i].result_size,
85 rs[i].dst)) 92 rs[i].dst))
93 {
94 for (unsigned int k=0;k<i;k++)
95 if (NULL != rs[k].cleaner)
96 rs[k].cleaner (rs[k].cls);
86 return GNUNET_SYSERR; 97 return GNUNET_SYSERR;
98 }
87 GNUNET_assert (0 != rs[i].num_params); 99 GNUNET_assert (0 != rs[i].num_params);
88 j += rs[i].num_params; 100 j += rs[i].num_params;
89 } 101 }
@@ -105,4 +117,24 @@ GNUNET_SQ_cleanup_result (struct GNUNET_SQ_ResultSpec *rs)
105 rs[i].cleaner (rs[i].cls); 117 rs[i].cleaner (rs[i].cls);
106} 118}
107 119
120
121/**
122 * Reset @a stmt and log error.
123 *
124 * @param dbh database handle
125 * @param stmt statement to reset
126 */
127void
128GNUNET_SQ_reset (sqlite3 *dbh,
129 sqlite3_stmt *stmt)
130{
131 if (SQLITE_OK !=
132 sqlite3_reset (stmt))
133 GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
134 "sqlite",
135 _("Failed to reset sqlite statement with error: %s\n"),
136 sqlite3_errmsg (dbh));
137}
138
139
108/* end of sq.c */ 140/* end of sq.c */