mirror of
https://git.sr.ht/~cismonx/bookmarkfs
synced 2025-06-29 13:58:51 +00:00
backend_firefox: refactor db query utils
- `DO_QUERY()` macro: * Pass stmt idx as argument instead of pointer. * Remove the `BEFORE_QUERY` argument. - Shorter names for stmt idx.
This commit is contained in:
parent
31f4311419
commit
ba9a23c295
1 changed files with 88 additions and 126 deletions
|
@ -74,10 +74,11 @@
|
||||||
#define BOOKMARKS_ROOT_GUID "root________"
|
#define BOOKMARKS_ROOT_GUID "root________"
|
||||||
#define TAGS_ROOT_GUID "tags________"
|
#define TAGS_ROOT_GUID "tags________"
|
||||||
|
|
||||||
#define DO_QUERY(ctx, stmt_ptr, sql, query_cb, query_cb_data, \
|
#define DO_QUERY(ctx, stmt_idx, sql, query_cb, query_cb_data, \
|
||||||
result, BEFORE_PREPARE, BEFORE_QUERY, ...) \
|
result, BEFORE_PREPARE, ...) \
|
||||||
do { \
|
do { \
|
||||||
sqlite3_stmt *stmt_ = *(stmt_ptr); \
|
sqlite3_stmt **stmt_ptr_ = &(ctx)->stmts[stmt_idx]; \
|
||||||
|
sqlite3_stmt *stmt_ = *stmt_ptr_; \
|
||||||
BEFORE_PREPARE \
|
BEFORE_PREPARE \
|
||||||
if (stmt_ == NULL) { \
|
if (stmt_ == NULL) { \
|
||||||
stmt_ = db_prepare((ctx)->db, sql, strlen(sql), true); \
|
stmt_ = db_prepare((ctx)->db, sql, strlen(sql), true); \
|
||||||
|
@ -85,10 +86,9 @@
|
||||||
(result) = -EIO; \
|
(result) = -EIO; \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
*(stmt_ptr) = stmt_; \
|
*stmt_ptr_ = stmt_; \
|
||||||
} \
|
} \
|
||||||
struct db_stmt_bind_item const bind_[] = { __VA_ARGS__ }; \
|
struct db_stmt_bind_item const bind_[] = { __VA_ARGS__ }; \
|
||||||
BEFORE_QUERY \
|
|
||||||
(result) = db_query(stmt_, bind_, DB_BIND_ITEMS_CNT(bind_), \
|
(result) = db_query(stmt_, bind_, DB_BIND_ITEMS_CNT(bind_), \
|
||||||
true, (query_cb), (query_cb_data)); \
|
true, (query_cb), (query_cb_data)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
@ -114,35 +114,35 @@ enum {
|
||||||
STMT_BEGIN = PERSISTED_STMT_WRITE_START,
|
STMT_BEGIN = PERSISTED_STMT_WRITE_START,
|
||||||
STMT_COMMIT,
|
STMT_COMMIT,
|
||||||
STMT_ROLLBACK,
|
STMT_ROLLBACK,
|
||||||
STMT_MOZPLACE_ADDREF,
|
STMT_MP_ADDREF,
|
||||||
STMT_MOZPLACE_ADDREF_ID,
|
STMT_MP_ADDREF_ID,
|
||||||
STMT_MOZPLACE_DELETE,
|
STMT_MP_DELETE,
|
||||||
STMT_MOZPLACE_DELREF,
|
STMT_MP_DELREF,
|
||||||
STMT_MOZPLACE_INSERT,
|
STMT_MP_INSERT,
|
||||||
STMT_MOZPLACE_UPDATE,
|
STMT_MP_UPDATE,
|
||||||
STMT_MOZORIGIN_DELETE,
|
STMT_MO_DELETE,
|
||||||
STMT_MOZORIGIN_GET,
|
STMT_MO_GET,
|
||||||
STMT_MOZORIGIN_INSERT,
|
STMT_MO_INSERT,
|
||||||
STMT_MOZBM_DELETE_DIR,
|
STMT_MB_DELETE_DIR,
|
||||||
STMT_MOZBM_DELETE_URL,
|
STMT_MB_DELETE_URL,
|
||||||
STMT_MOZBM_GET_TITLE,
|
STMT_MB_GET_TITLE,
|
||||||
STMT_MOZBM_INSERT,
|
STMT_MB_INSERT,
|
||||||
STMT_MOZBM_LOOKUP,
|
STMT_MB_LOOKUP,
|
||||||
STMT_MOZBM_LOOKUP_ID,
|
STMT_MB_LOOKUP_FK,
|
||||||
STMT_MOZBM_MOVE,
|
STMT_MB_LOOKUP_ID,
|
||||||
STMT_MOZBM_MTIME_UPDATE,
|
STMT_MB_MOVE,
|
||||||
STMT_MOZBM_POS_SHIFT,
|
STMT_MB_MTIME_UPDATE,
|
||||||
STMT_MOZBM_POS_UPDATE,
|
STMT_MB_POS_SHIFT,
|
||||||
STMT_MOZBM_PURGE,
|
STMT_MB_POS_UPDATE,
|
||||||
STMT_MOZBM_PURGE_CHECK,
|
STMT_MB_PURGE,
|
||||||
STMT_MOZBM_UPDATE,
|
STMT_MB_PURGE_CHECK,
|
||||||
STMT_MOZBMDEL_INSERT,
|
STMT_MB_UPDATE,
|
||||||
STMT_MOZKW_DELETE,
|
STMT_MBDEL_INSERT,
|
||||||
STMT_MOZKW_INSERT,
|
STMT_MK_DELETE,
|
||||||
STMT_MOZKW_LOOKUP,
|
STMT_MK_INSERT,
|
||||||
STMT_MOZKW_PURGE,
|
STMT_MK_LOOKUP,
|
||||||
STMT_MOZKW_RENAME,
|
STMT_MK_PURGE,
|
||||||
STMT_TAG_ENTRY_LOOKUP,
|
STMT_MK_RENAME,
|
||||||
#endif /* defined(BOOKMARKFS_BACKEND_FIREFOX_WRITE) */
|
#endif /* defined(BOOKMARKFS_BACKEND_FIREFOX_WRITE) */
|
||||||
PERSISTED_STMT_END,
|
PERSISTED_STMT_END,
|
||||||
};
|
};
|
||||||
|
@ -692,16 +692,16 @@ mozbm_delete (
|
||||||
"AND `id` NOT IN (SELECT DISTINCT `parent` FROM `moz_bookmarks`) ")
|
"AND `id` NOT IN (SELECT DISTINCT `parent` FROM `moz_bookmarks`) ")
|
||||||
#define MOZBM_DELETE_URL MOZBM_DELETE_("")
|
#define MOZBM_DELETE_URL MOZBM_DELETE_("")
|
||||||
|
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZBM_DELETE_URL];
|
int stmt_idx = STMT_MB_DELETE_URL;
|
||||||
char const *sql = MOZBM_DELETE_URL;
|
char const *sql = MOZBM_DELETE_URL;
|
||||||
if (is_dir) {
|
if (is_dir) {
|
||||||
stmt_ptr = &ctx->stmts[STMT_MOZBM_DELETE_DIR];
|
stmt_idx = STMT_MB_DELETE_DIR;
|
||||||
sql = MOZBM_DELETE_DIR;
|
sql = MOZBM_DELETE_DIR;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct mozbm_delete_ctx qctx;
|
struct mozbm_delete_ctx qctx;
|
||||||
ssize_t nrows;
|
ssize_t nrows;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, mozbm_delete_cb, &qctx, nrows, , ,
|
DO_QUERY(ctx, stmt_idx, sql, mozbm_delete_cb, &qctx, nrows, ,
|
||||||
DB_QUERY_BIND_INT64(id),
|
DB_QUERY_BIND_INT64(id),
|
||||||
);
|
);
|
||||||
if (nrows < 0) {
|
if (nrows < 0) {
|
||||||
|
@ -753,12 +753,11 @@ mozbm_get_title (
|
||||||
db_query_row_func *row_func,
|
db_query_row_func *row_func,
|
||||||
void *user_data
|
void *user_data
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZBM_GET_TITLE];
|
|
||||||
char const *sql = "SELECT `title` FROM `moz_bookmarks` "
|
char const *sql = "SELECT `title` FROM `moz_bookmarks` "
|
||||||
"WHERE `id` = ? AND `parent` = ?";
|
"WHERE `id` = ? AND `parent` = ?";
|
||||||
|
|
||||||
ssize_t nrows;
|
ssize_t nrows;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, row_func, user_data, nrows, , ,
|
DO_QUERY(ctx, STMT_MB_GET_TITLE, sql, row_func, user_data, nrows, ,
|
||||||
DB_QUERY_BIND_INT64(id),
|
DB_QUERY_BIND_INT64(id),
|
||||||
DB_QUERY_BIND_INT64(parent_id),
|
DB_QUERY_BIND_INT64(parent_id),
|
||||||
);
|
);
|
||||||
|
@ -776,7 +775,6 @@ mozbm_insert (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
struct mozbm *mb
|
struct mozbm *mb
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZBM_INSERT];
|
|
||||||
char const *sql =
|
char const *sql =
|
||||||
"INSERT INTO `moz_bookmarks` (`parent`, `position`, `title`, "
|
"INSERT INTO `moz_bookmarks` (`parent`, `position`, `title`, "
|
||||||
"`dateAdded`, `lastModified`, `type`, `fk`, `guid`, `syncStatus`) "
|
"`dateAdded`, `lastModified`, `type`, `fk`, `guid`, `syncStatus`) "
|
||||||
|
@ -784,7 +782,7 @@ mozbm_insert (
|
||||||
"?4, ?5, ?6, 1)";
|
"?4, ?5, ?6, 1)";
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, prepare:, ,
|
DO_QUERY(ctx, STMT_MB_INSERT, sql, NULL, NULL, status, prepare:,
|
||||||
DB_QUERY_BIND_INT64(mb->parent_id),
|
DB_QUERY_BIND_INT64(mb->parent_id),
|
||||||
DB_QUERY_BIND_TEXT(mb->title, mb->title_len),
|
DB_QUERY_BIND_TEXT(mb->title, mb->title_len),
|
||||||
DB_QUERY_BIND_INT64(mb->date_added),
|
DB_QUERY_BIND_INT64(mb->date_added),
|
||||||
|
@ -820,7 +818,6 @@ mozbm_lookup (
|
||||||
"SELECT `id`, `fk`, `position` FROM `moz_bookmarks` " \
|
"SELECT `id`, `fk`, `position` FROM `moz_bookmarks` " \
|
||||||
"WHERE `parent` = ? AND `" col "` = ? ORDER BY `position` LIMIT 1"
|
"WHERE `parent` = ? AND `" col "` = ? ORDER BY `position` LIMIT 1"
|
||||||
|
|
||||||
struct sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZBM_LOOKUP];
|
|
||||||
char const *sql = MOZBM_LOOKUP("title");
|
char const *sql = MOZBM_LOOKUP("title");
|
||||||
if (ctx->flags & BACKEND_FILENAME_GUID) {
|
if (ctx->flags & BACKEND_FILENAME_GUID) {
|
||||||
if (validate_guid && !is_valid_guid(name, name_len)) {
|
if (validate_guid && !is_valid_guid(name, name_len)) {
|
||||||
|
@ -831,7 +828,7 @@ mozbm_lookup (
|
||||||
|
|
||||||
int64_t values[3];
|
int64_t values[3];
|
||||||
ssize_t nrows;
|
ssize_t nrows;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, db_query_i64_cb, values, nrows, , ,
|
DO_QUERY(ctx, STMT_MB_LOOKUP, sql, db_query_i64_cb, values, nrows, ,
|
||||||
DB_QUERY_BIND_INT64(parent_id),
|
DB_QUERY_BIND_INT64(parent_id),
|
||||||
DB_QUERY_BIND_TEXT(name, name_len),
|
DB_QUERY_BIND_TEXT(name, name_len),
|
||||||
);
|
);
|
||||||
|
@ -857,7 +854,6 @@ mozbm_lookup_id (
|
||||||
"(SELECT `fk`, `" col "` FROM `moz_bookmarks` WHERE `id` = ?) " \
|
"(SELECT `fk`, `" col "` FROM `moz_bookmarks` WHERE `id` = ?) " \
|
||||||
"ORDER BY `id` LIMIT 1"
|
"ORDER BY `id` LIMIT 1"
|
||||||
|
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZBM_LOOKUP_ID];
|
|
||||||
char const *sql = MOZBM_LOOKUP_ID("title");
|
char const *sql = MOZBM_LOOKUP_ID("title");
|
||||||
if (ctx->flags & BACKEND_FILENAME_GUID) {
|
if (ctx->flags & BACKEND_FILENAME_GUID) {
|
||||||
sql = MOZBM_LOOKUP_ID("guid");
|
sql = MOZBM_LOOKUP_ID("guid");
|
||||||
|
@ -865,7 +861,7 @@ mozbm_lookup_id (
|
||||||
|
|
||||||
int64_t values[2];
|
int64_t values[2];
|
||||||
ssize_t nrows;
|
ssize_t nrows;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, db_query_i64_cb, values, nrows, , ,
|
DO_QUERY(ctx, STMT_MB_LOOKUP_ID, sql, db_query_i64_cb, values, nrows, ,
|
||||||
DB_QUERY_BIND_INT64(mb->id),
|
DB_QUERY_BIND_INT64(mb->id),
|
||||||
);
|
);
|
||||||
if (nrows < 0) {
|
if (nrows < 0) {
|
||||||
|
@ -893,14 +889,13 @@ mozbm_move (
|
||||||
"ifnull(?3, safeincr((" MOZBM_MAXPOS("?1") ")))) " \
|
"ifnull(?3, safeincr((" MOZBM_MAXPOS("?1") ")))) " \
|
||||||
"WHERE `id` = ?4"
|
"WHERE `id` = ?4"
|
||||||
|
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZBM_MOVE];
|
|
||||||
char const *sql = MOZBM_MOVE("title");
|
char const *sql = MOZBM_MOVE("title");
|
||||||
if (ctx->flags & BACKEND_FILENAME_GUID) {
|
if (ctx->flags & BACKEND_FILENAME_GUID) {
|
||||||
sql = MOZBM_MOVE("guid");
|
sql = MOZBM_MOVE("guid");
|
||||||
}
|
}
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, , ,
|
DO_QUERY(ctx, STMT_MB_MOVE, sql, NULL, NULL, status, ,
|
||||||
DB_QUERY_BIND_INT64(new_parent),
|
DB_QUERY_BIND_INT64(new_parent),
|
||||||
DB_QUERY_BIND_TEXT(new_name, new_name_len),
|
DB_QUERY_BIND_TEXT(new_name, new_name_len),
|
||||||
DB_QUERY_BIND_INT64(new_position),
|
DB_QUERY_BIND_INT64(new_position),
|
||||||
|
@ -918,7 +913,6 @@ mozbm_mtime_update (
|
||||||
int64_t id,
|
int64_t id,
|
||||||
int64_t *usecs_ptr
|
int64_t *usecs_ptr
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZBM_MTIME_UPDATE];
|
|
||||||
char const *sql =
|
char const *sql =
|
||||||
"UPDATE `moz_bookmarks` SET `lastModified` = ? WHERE `id` = ?";
|
"UPDATE `moz_bookmarks` SET `lastModified` = ? WHERE `id` = ?";
|
||||||
|
|
||||||
|
@ -934,7 +928,7 @@ mozbm_mtime_update (
|
||||||
}
|
}
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, , ,
|
DO_QUERY(ctx, STMT_MB_MTIME_UPDATE, sql, NULL, NULL, status, ,
|
||||||
DB_QUERY_BIND_INT64(usecs),
|
DB_QUERY_BIND_INT64(usecs),
|
||||||
DB_QUERY_BIND_INT64(id),
|
DB_QUERY_BIND_INT64(id),
|
||||||
);
|
);
|
||||||
|
@ -989,13 +983,12 @@ mozbm_pos_shift (
|
||||||
pos_start = tmp;
|
pos_start = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZBM_POS_SHIFT];
|
|
||||||
char const *sql =
|
char const *sql =
|
||||||
"UPDATE `moz_bookmarks` SET `position` = `position` + (? - 1) "
|
"UPDATE `moz_bookmarks` SET `position` = `position` + (? - 1) "
|
||||||
"WHERE `parent` = ? AND `position` BETWEEN ? AND ?";
|
"WHERE `parent` = ? AND `position` BETWEEN ? AND ?";
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, , ,
|
DO_QUERY(ctx, STMT_MB_POS_SHIFT, sql, NULL, NULL, status, ,
|
||||||
DB_QUERY_BIND_INT64(diff),
|
DB_QUERY_BIND_INT64(diff),
|
||||||
DB_QUERY_BIND_INT64(parent_id),
|
DB_QUERY_BIND_INT64(parent_id),
|
||||||
DB_QUERY_BIND_INT64(pos_start),
|
DB_QUERY_BIND_INT64(pos_start),
|
||||||
|
@ -1013,12 +1006,11 @@ mozbm_pos_update (
|
||||||
int64_t id,
|
int64_t id,
|
||||||
int64_t new_pos
|
int64_t new_pos
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZBM_POS_UPDATE];
|
|
||||||
char const *sql =
|
char const *sql =
|
||||||
"UPDATE `moz_bookmarks` SET `position` = ? WHERE `id` = ?";
|
"UPDATE `moz_bookmarks` SET `position` = ? WHERE `id` = ?";
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, , ,
|
DO_QUERY(ctx, STMT_MB_POS_UPDATE, sql, NULL, NULL, status, ,
|
||||||
DB_QUERY_BIND_INT64(new_pos),
|
DB_QUERY_BIND_INT64(new_pos),
|
||||||
DB_QUERY_BIND_INT64(id),
|
DB_QUERY_BIND_INT64(id),
|
||||||
);
|
);
|
||||||
|
@ -1033,11 +1025,10 @@ mozbm_purge (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
int64_t place_id
|
int64_t place_id
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZBM_PURGE];
|
|
||||||
char const *sql = "DELETE FROM `moz_bookmarks` WHERE `fk` = ?";
|
char const *sql = "DELETE FROM `moz_bookmarks` WHERE `fk` = ?";
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, , ,
|
DO_QUERY(ctx, STMT_MB_PURGE, sql, NULL, NULL, status, ,
|
||||||
DB_QUERY_BIND_INT64(place_id),
|
DB_QUERY_BIND_INT64(place_id),
|
||||||
);
|
);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
|
@ -1051,20 +1042,19 @@ mozbm_purge_check (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
int64_t place_id
|
int64_t place_id
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZBM_PURGE_CHECK];
|
|
||||||
char const *sql = "SELECT COUNT(*) FROM `moz_bookmarks` "
|
char const *sql = "SELECT COUNT(*) FROM `moz_bookmarks` "
|
||||||
"WHERE `fk` = ? AND `title` IS NOT NULL";
|
"WHERE `fk` = ? AND `title` IS NOT NULL";
|
||||||
|
|
||||||
int64_t result;
|
int64_t cnt;
|
||||||
ssize_t nrows;
|
ssize_t nrows;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, db_query_i64_cb, &result, nrows, , ,
|
DO_QUERY(ctx, STMT_MB_PURGE_CHECK, sql, db_query_i64_cb, &cnt, nrows, ,
|
||||||
DB_QUERY_BIND_INT64(place_id),
|
DB_QUERY_BIND_INT64(place_id),
|
||||||
);
|
);
|
||||||
if (nrows < 0) {
|
if (nrows < 0) {
|
||||||
return nrows;
|
return nrows;
|
||||||
}
|
}
|
||||||
debug_assert(nrows == 1);
|
debug_assert(nrows == 1);
|
||||||
return result == 0;
|
return cnt == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -1072,7 +1062,6 @@ mozbm_update (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
struct mozbm *mb
|
struct mozbm *mb
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZBM_UPDATE];
|
|
||||||
char const *sql = "UPDATE `moz_bookmarks` "
|
char const *sql = "UPDATE `moz_bookmarks` "
|
||||||
"SET (`fk`, `title`, `guid`, `dateAdded`, `lastModified`) "
|
"SET (`fk`, `title`, `guid`, `dateAdded`, `lastModified`) "
|
||||||
"= (ifnull(?, `fk`), ifnull(?, `title`), ifnull(?, `guid`), "
|
"= (ifnull(?, `fk`), ifnull(?, `title`), ifnull(?, `guid`), "
|
||||||
|
@ -1080,7 +1069,7 @@ mozbm_update (
|
||||||
"WHERE `id` = ? RETURNING `fk`";
|
"WHERE `id` = ? RETURNING `fk`";
|
||||||
|
|
||||||
ssize_t nrows;
|
ssize_t nrows;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, db_query_i64_cb, &mb->place_id, nrows, , ,
|
DO_QUERY(ctx, STMT_MB_UPDATE, sql, db_query_i64_cb, &mb->place_id, nrows, ,
|
||||||
DB_QUERY_BIND_INT64(mb->place_id),
|
DB_QUERY_BIND_INT64(mb->place_id),
|
||||||
DB_QUERY_BIND_TEXT(mb->title, mb->title_len),
|
DB_QUERY_BIND_TEXT(mb->title, mb->title_len),
|
||||||
DB_QUERY_BIND_TEXT(mb->guid, GUID_STR_LEN),
|
DB_QUERY_BIND_TEXT(mb->guid, GUID_STR_LEN),
|
||||||
|
@ -1106,7 +1095,6 @@ mozbmdel_insert (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
char const *guid
|
char const *guid
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZBMDEL_INSERT];
|
|
||||||
char const *sql =
|
char const *sql =
|
||||||
"INSERT OR IGNORE INTO `moz_bookmarks_deleted` (`guid`, `dateRemoved`)"
|
"INSERT OR IGNORE INTO `moz_bookmarks_deleted` (`guid`, `dateRemoved`)"
|
||||||
"VALUES (?, ?)";
|
"VALUES (?, ?)";
|
||||||
|
@ -1117,7 +1105,7 @@ mozbmdel_insert (
|
||||||
}
|
}
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, , ,
|
DO_QUERY(ctx, STMT_MBDEL_INSERT, sql, NULL, NULL, status, ,
|
||||||
DB_QUERY_BIND_TEXT(guid, GUID_STR_LEN),
|
DB_QUERY_BIND_TEXT(guid, GUID_STR_LEN),
|
||||||
DB_QUERY_BIND_INT64(date_removed),
|
DB_QUERY_BIND_INT64(date_removed),
|
||||||
);
|
);
|
||||||
|
@ -1133,13 +1121,12 @@ mozkw_delete (
|
||||||
char const *name,
|
char const *name,
|
||||||
size_t name_len
|
size_t name_len
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZKW_DELETE];
|
|
||||||
char const *sql = "DELETE FROM `moz_keywords` "
|
char const *sql = "DELETE FROM `moz_keywords` "
|
||||||
"WHERE `keyword` = ? RETURNING `place_id`";
|
"WHERE `keyword` = ? RETURNING `place_id`";
|
||||||
|
|
||||||
int64_t place_id;
|
int64_t place_id;
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, db_query_i64_cb, &place_id, status, , ,
|
DO_QUERY(ctx, STMT_MK_DELETE, sql, db_query_i64_cb, &place_id, status, ,
|
||||||
DB_QUERY_BIND_TEXT(name, name_len),
|
DB_QUERY_BIND_TEXT(name, name_len),
|
||||||
);
|
);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
|
@ -1157,12 +1144,11 @@ mozkw_insert (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
struct mozkw *mk
|
struct mozkw *mk
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZKW_INSERT];
|
|
||||||
char const *sql =
|
char const *sql =
|
||||||
"INSERT INTO `moz_keywords` (`keyword`, `place_id`) VALUES (?, ?)";
|
"INSERT INTO `moz_keywords` (`keyword`, `place_id`) VALUES (?, ?)";
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, , ,
|
DO_QUERY(ctx, STMT_MK_INSERT, sql, NULL, NULL, status, ,
|
||||||
DB_QUERY_BIND_TEXT(mk->keyword, mk->keyword_len),
|
DB_QUERY_BIND_TEXT(mk->keyword, mk->keyword_len),
|
||||||
DB_QUERY_BIND_INT64(mk->place_id),
|
DB_QUERY_BIND_INT64(mk->place_id),
|
||||||
);
|
);
|
||||||
|
@ -1180,13 +1166,12 @@ mozkw_lookup (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
struct mozkw *mk
|
struct mozkw *mk
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZKW_LOOKUP];
|
|
||||||
char const *sql =
|
char const *sql =
|
||||||
"SELECT `id`, `place_id` FROM `moz_keywords` WHERE `keyword` = ?";
|
"SELECT `id`, `place_id` FROM `moz_keywords` WHERE `keyword` = ?";
|
||||||
|
|
||||||
int64_t values[2];
|
int64_t values[2];
|
||||||
ssize_t nrows;
|
ssize_t nrows;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, db_query_i64_cb, values, nrows, , ,
|
DO_QUERY(ctx, STMT_MK_LOOKUP, sql, db_query_i64_cb, values, nrows, ,
|
||||||
DB_QUERY_BIND_TEXT(mk->keyword, mk->keyword_len),
|
DB_QUERY_BIND_TEXT(mk->keyword, mk->keyword_len),
|
||||||
);
|
);
|
||||||
if (nrows < 0) {
|
if (nrows < 0) {
|
||||||
|
@ -1205,11 +1190,10 @@ mozkw_purge (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
int64_t place_id
|
int64_t place_id
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZKW_PURGE];
|
|
||||||
char const *sql = "DELETE FROM `moz_keywords` WHERE `place_id` = ?";
|
char const *sql = "DELETE FROM `moz_keywords` WHERE `place_id` = ?";
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, , ,
|
DO_QUERY(ctx, STMT_MK_PURGE, sql, NULL, NULL, status, ,
|
||||||
DB_QUERY_BIND_INT64(place_id),
|
DB_QUERY_BIND_INT64(place_id),
|
||||||
);
|
);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
|
@ -1244,11 +1228,10 @@ mozkw_rename (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZKW_RENAME];
|
|
||||||
char const *sql =
|
char const *sql =
|
||||||
"UPDATE OR REPLACE `moz_keywords` SET `id` = ? WHERE `keyword` = ?";
|
"UPDATE OR REPLACE `moz_keywords` SET `id` = ? WHERE `keyword` = ?";
|
||||||
|
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, , ,
|
DO_QUERY(ctx, STMT_MK_RENAME, sql, NULL, NULL, status, ,
|
||||||
DB_QUERY_BIND_INT64(old_mk.id),
|
DB_QUERY_BIND_INT64(old_mk.id),
|
||||||
DB_QUERY_BIND_TEXT(new_name, strlen(new_name)),
|
DB_QUERY_BIND_TEXT(new_name, strlen(new_name)),
|
||||||
);
|
);
|
||||||
|
@ -1266,12 +1249,11 @@ mozorigin_delete (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
int64_t id
|
int64_t id
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZORIGIN_DELETE];
|
|
||||||
char const *sql = "DELETE FROM `moz_origins` WHERE `id` = ? "
|
char const *sql = "DELETE FROM `moz_origins` WHERE `id` = ? "
|
||||||
"AND `id` NOT IN (SELECT DISTINCT `origin_id` FROM `moz_places`)";
|
"AND `id` NOT IN (SELECT DISTINCT `origin_id` FROM `moz_places`)";
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, , ,
|
DO_QUERY(ctx, STMT_MO_DELETE, sql, NULL, NULL, status, ,
|
||||||
DB_QUERY_BIND_INT64(id),
|
DB_QUERY_BIND_INT64(id),
|
||||||
);
|
);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
|
@ -1285,12 +1267,11 @@ mozorigin_get (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
struct mozorigin *mo
|
struct mozorigin *mo
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZORIGIN_GET];
|
|
||||||
char const *sql =
|
char const *sql =
|
||||||
"SELECT `id` FROM `moz_origins` WHERE `prefix` = ? AND `host` = ?";
|
"SELECT `id` FROM `moz_origins` WHERE `prefix` = ? AND `host` = ?";
|
||||||
|
|
||||||
ssize_t nrows;
|
ssize_t nrows;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, db_query_i64_cb, &mo->id, nrows, , ,
|
DO_QUERY(ctx, STMT_MO_GET, sql, db_query_i64_cb, &mo->id, nrows, ,
|
||||||
DB_QUERY_BIND_TEXT(mo->prefix, mo->prefix_len),
|
DB_QUERY_BIND_TEXT(mo->prefix, mo->prefix_len),
|
||||||
DB_QUERY_BIND_TEXT(mo->host, mo->host_len),
|
DB_QUERY_BIND_TEXT(mo->host, mo->host_len),
|
||||||
);
|
);
|
||||||
|
@ -1308,14 +1289,13 @@ mozorigin_insert (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
struct mozorigin *mo
|
struct mozorigin *mo
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZORIGIN_INSERT];
|
|
||||||
char const *sql =
|
char const *sql =
|
||||||
"INSERT INTO `moz_origins` (`prefix`, `host`, `frecency`, "
|
"INSERT INTO `moz_origins` (`prefix`, `host`, `frecency`, "
|
||||||
"`recalc_frecency`, `recalc_alt_frecency`) "
|
"`recalc_frecency`, `recalc_alt_frecency`) "
|
||||||
"VALUES (?, ?, 1, 1, 1)";
|
"VALUES (?, ?, 1, 1, 1)";
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, , ,
|
DO_QUERY(ctx, STMT_MO_INSERT, sql, NULL, NULL, status, ,
|
||||||
DB_QUERY_BIND_TEXT(mo->prefix, mo->prefix_len),
|
DB_QUERY_BIND_TEXT(mo->prefix, mo->prefix_len),
|
||||||
DB_QUERY_BIND_TEXT(mo->host, mo->host_len),
|
DB_QUERY_BIND_TEXT(mo->host, mo->host_len),
|
||||||
);
|
);
|
||||||
|
@ -1340,17 +1320,14 @@ mozplace_addref (
|
||||||
}
|
}
|
||||||
int64_t url_hash = mozplace_url_hash(mp->url, mp->url_len);
|
int64_t url_hash = mozplace_url_hash(mp->url, mp->url_len);
|
||||||
|
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZPLACE_ADDREF];
|
|
||||||
char const *sql =
|
char const *sql =
|
||||||
"UPDATE `moz_places` SET `foreign_count` = `foreign_count` + 1 "
|
"UPDATE `moz_places` SET `foreign_count` = `foreign_count` + 1 "
|
||||||
"WHERE `url_hash` = ? AND `url` = ? RETURNING `id`, `last_visit_date`";
|
"WHERE `url_hash` = ? AND `url` = ? RETURNING `id`, `last_visit_date`";
|
||||||
|
|
||||||
struct mozplace_addref_ctx qctx;
|
struct mozplace_addref_ctx qctx;
|
||||||
ssize_t nrows;
|
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, mozplace_addref_cb, &qctx, nrows, ,
|
|
||||||
{
|
|
||||||
qctx.atime_buf = atime_buf;
|
qctx.atime_buf = atime_buf;
|
||||||
},
|
ssize_t nrows;
|
||||||
|
DO_QUERY(ctx, STMT_MP_ADDREF, sql, mozplace_addref_cb, &qctx, nrows, ,
|
||||||
DB_QUERY_BIND_INT64(url_hash),
|
DB_QUERY_BIND_INT64(url_hash),
|
||||||
DB_QUERY_BIND_TEXT(mp->url, mp->url_len),
|
DB_QUERY_BIND_TEXT(mp->url, mp->url_len),
|
||||||
);
|
);
|
||||||
|
@ -1409,12 +1386,11 @@ mozplace_addref_id (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
int64_t id
|
int64_t id
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZPLACE_ADDREF_ID];
|
|
||||||
char const *sql = "UPDATE `moz_places` "
|
char const *sql = "UPDATE `moz_places` "
|
||||||
"SET `foreign_count` = `foreign_count` + 1 WHERE `id` = ?";
|
"SET `foreign_count` = `foreign_count` + 1 WHERE `id` = ?";
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, , ,
|
DO_QUERY(ctx, STMT_MP_ADDREF_ID, sql, NULL, NULL, status, ,
|
||||||
DB_QUERY_BIND_INT64(id),
|
DB_QUERY_BIND_INT64(id),
|
||||||
);
|
);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
|
@ -1432,11 +1408,10 @@ mozplace_delete (
|
||||||
int64_t id,
|
int64_t id,
|
||||||
int64_t origin_id
|
int64_t origin_id
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZPLACE_DELETE];
|
|
||||||
char const *sql = "DELETE FROM `moz_places` WHERE `id` = ?";
|
char const *sql = "DELETE FROM `moz_places` WHERE `id` = ?";
|
||||||
|
|
||||||
ssize_t nrows;
|
ssize_t nrows;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, nrows, , ,
|
DO_QUERY(ctx, STMT_MP_DELETE, sql, NULL, NULL, nrows, ,
|
||||||
DB_QUERY_BIND_INT64(id),
|
DB_QUERY_BIND_INT64(id),
|
||||||
);
|
);
|
||||||
if (nrows < 0) {
|
if (nrows < 0) {
|
||||||
|
@ -1454,14 +1429,13 @@ mozplace_delref (
|
||||||
int64_t id,
|
int64_t id,
|
||||||
int purge
|
int purge
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZPLACE_DELREF];
|
|
||||||
char const *sql =
|
char const *sql =
|
||||||
"UPDATE `moz_places` SET `foreign_count` = `foreign_count` - ? "
|
"UPDATE `moz_places` SET `foreign_count` = `foreign_count` - ? "
|
||||||
"WHERE `id` = ? RETURNING `foreign_count`, `origin_id`";
|
"WHERE `id` = ? RETURNING `foreign_count`, `origin_id`";
|
||||||
|
|
||||||
ssize_t nrows;
|
ssize_t nrows;
|
||||||
int64_t result[2]; // `foreign_count`, `origin_id`
|
int64_t result[2]; // `foreign_count`, `origin_id`
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, db_query_i64_cb, result, nrows, , ,
|
DO_QUERY(ctx, STMT_MP_DELREF, sql, db_query_i64_cb, result, nrows, ,
|
||||||
DB_QUERY_BIND_INT64(purge == 0 ? 1 : purge),
|
DB_QUERY_BIND_INT64(purge == 0 ? 1 : purge),
|
||||||
DB_QUERY_BIND_INT64(id),
|
DB_QUERY_BIND_INT64(id),
|
||||||
);
|
);
|
||||||
|
@ -1486,7 +1460,6 @@ mozplace_insert (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
struct mozplace *mp
|
struct mozplace *mp
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZPLACE_INSERT];
|
|
||||||
char const *sql =
|
char const *sql =
|
||||||
"INSERT INTO `moz_places` (`url`, `rev_host`, `guid`, `frecency`, "
|
"INSERT INTO `moz_places` (`url`, `rev_host`, `guid`, `frecency`, "
|
||||||
"`foreign_count`, `url_hash`, `origin_id`, `recalc_frecency`) "
|
"`foreign_count`, `url_hash`, `origin_id`, `recalc_frecency`) "
|
||||||
|
@ -1494,7 +1467,7 @@ mozplace_insert (
|
||||||
|
|
||||||
char guid_buf[GUID_STR_LEN];
|
char guid_buf[GUID_STR_LEN];
|
||||||
int status;
|
int status;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, prepare:, ,
|
DO_QUERY(ctx, STMT_MP_INSERT, sql, NULL, NULL, status, prepare:,
|
||||||
DB_QUERY_BIND_TEXT(mp->url, mp->url_len),
|
DB_QUERY_BIND_TEXT(mp->url, mp->url_len),
|
||||||
DB_QUERY_BIND_TEXT(mp->rev_host, mp->rev_host_len),
|
DB_QUERY_BIND_TEXT(mp->rev_host, mp->rev_host_len),
|
||||||
DB_QUERY_BIND_TEXT(gen_random_guid(guid_buf), GUID_STR_LEN),
|
DB_QUERY_BIND_TEXT(gen_random_guid(guid_buf), GUID_STR_LEN),
|
||||||
|
@ -1559,13 +1532,12 @@ mozplace_update (
|
||||||
}
|
}
|
||||||
|
|
||||||
do_update: ;
|
do_update: ;
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_MOZPLACE_UPDATE];
|
|
||||||
char const *sql = "UPDATE `moz_places` "
|
char const *sql = "UPDATE `moz_places` "
|
||||||
"SET (`last_visit_date`, `description`) "
|
"SET (`last_visit_date`, `description`) "
|
||||||
"= (ifnull(?, `last_visit_date`), ifnull(?, `description`)) "
|
"= (ifnull(?, `last_visit_date`), ifnull(?, `description`)) "
|
||||||
"WHERE `id` = ?";
|
"WHERE `id` = ?";
|
||||||
|
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, NULL, NULL, status, , ,
|
DO_QUERY(ctx, STMT_MP_UPDATE, sql, NULL, NULL, status, ,
|
||||||
DB_QUERY_BIND_INT64(mp->last_visit_date),
|
DB_QUERY_BIND_INT64(mp->last_visit_date),
|
||||||
DB_QUERY_BIND_TEXT(mp->desc, mp->desc_len),
|
DB_QUERY_BIND_TEXT(mp->desc, mp->desc_len),
|
||||||
DB_QUERY_BIND_INT64(mp->id),
|
DB_QUERY_BIND_INT64(mp->id),
|
||||||
|
@ -2091,12 +2063,11 @@ tag_entry_lookup (
|
||||||
struct backend_ctx *ctx,
|
struct backend_ctx *ctx,
|
||||||
struct mozbm *mb
|
struct mozbm *mb
|
||||||
) {
|
) {
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_TAG_ENTRY_LOOKUP];
|
|
||||||
char const *sql = "SELECT `id` FROM `moz_bookmarks` "
|
char const *sql = "SELECT `id` FROM `moz_bookmarks` "
|
||||||
"WHERE `parent` = ? AND `fk` = ? LIMIT 1";
|
"WHERE `parent` = ? AND `fk` = ? LIMIT 1";
|
||||||
|
|
||||||
ssize_t nrows;
|
ssize_t nrows;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, db_query_i64_cb, &mb->id, nrows, , ,
|
DO_QUERY(ctx, STMT_MB_LOOKUP_FK, sql, db_query_i64_cb, &mb->id, nrows, ,
|
||||||
DB_QUERY_BIND_INT64(mb->parent_id),
|
DB_QUERY_BIND_INT64(mb->parent_id),
|
||||||
DB_QUERY_BIND_INT64(mb->place_id),
|
DB_QUERY_BIND_INT64(mb->place_id),
|
||||||
);
|
);
|
||||||
|
@ -2180,10 +2151,10 @@ bookmark_do_get (
|
||||||
#define BOOKMARK_GET_WITH_TITLE \
|
#define BOOKMARK_GET_WITH_TITLE \
|
||||||
BOOKMARK_GET("WHEN " STRINGIFY(BM_XATTR_TITLE) " THEN `b`.`title` ")
|
BOOKMARK_GET("WHEN " STRINGIFY(BM_XATTR_TITLE) " THEN `b`.`title` ")
|
||||||
|
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[STMT_BOOKMARK_GET_EX];
|
int stmt_idx = STMT_BOOKMARK_GET_EX;
|
||||||
char const *sql = BOOKMARK_GET_EX;
|
char const *sql = BOOKMARK_GET_EX;
|
||||||
if (xattr_id >= MOZBM_XATTR_START) {
|
if (xattr_id >= MOZBM_XATTR_START) {
|
||||||
stmt_ptr = &ctx->stmts[STMT_BOOKMARK_GET];
|
stmt_idx = STMT_BOOKMARK_GET;
|
||||||
sql = BOOKMARK_GET_WITH_GUID;
|
sql = BOOKMARK_GET_WITH_GUID;
|
||||||
if (ctx->flags & BACKEND_FILENAME_GUID) {
|
if (ctx->flags & BACKEND_FILENAME_GUID) {
|
||||||
sql = BOOKMARK_GET_WITH_TITLE;
|
sql = BOOKMARK_GET_WITH_TITLE;
|
||||||
|
@ -2191,10 +2162,7 @@ bookmark_do_get (
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t nrows;
|
ssize_t nrows;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, bookmark_get_cb, qctx, nrows, ,
|
DO_QUERY(ctx, stmt_idx, sql, bookmark_get_cb, qctx, nrows, ,
|
||||||
{
|
|
||||||
qctx->tags_root_id = ctx->tags_root_id;
|
|
||||||
},
|
|
||||||
DB_QUERY_BIND_INT64(xattr_id),
|
DB_QUERY_BIND_INT64(xattr_id),
|
||||||
DB_QUERY_BIND_INT64(id),
|
DB_QUERY_BIND_INT64(id),
|
||||||
);
|
);
|
||||||
|
@ -2270,8 +2238,7 @@ bookmark_do_list (
|
||||||
{ STMT_BOOKMARK_LIST_TAG, STMT_BOOKMARK_LIST_TAG_EX },
|
{ STMT_BOOKMARK_LIST_TAG, STMT_BOOKMARK_LIST_TAG_EX },
|
||||||
{ STMT_BOOKMARK_LIST_KEYWORD, STMT_BOOKMARK_LIST_KEYWORD_EX },
|
{ STMT_BOOKMARK_LIST_KEYWORD, STMT_BOOKMARK_LIST_KEYWORD_EX },
|
||||||
};
|
};
|
||||||
sqlite3_stmt **stmt_ptr
|
int stmt_idx = stmt_idx_table[bookmark_type][with_stat];
|
||||||
= &ctx->stmts[stmt_idx_table[bookmark_type][with_stat]];
|
|
||||||
|
|
||||||
bool filename_is_guid = ctx->flags & BACKEND_FILENAME_GUID;
|
bool filename_is_guid = ctx->flags & BACKEND_FILENAME_GUID;
|
||||||
char const *sql_table[3][2][2] = {
|
char const *sql_table[3][2][2] = {
|
||||||
|
@ -2284,17 +2251,14 @@ bookmark_do_list (
|
||||||
};
|
};
|
||||||
char const *sql = sql_table[bookmark_type][filename_is_guid][with_stat];
|
char const *sql = sql_table[bookmark_type][filename_is_guid][with_stat];
|
||||||
|
|
||||||
ssize_t nrows;
|
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, qctx->row_func, qctx, nrows, ,
|
|
||||||
{
|
|
||||||
bool name_distinct = filename_is_guid
|
|
||||||
|| !BOOKMARKFS_BOOKMARK_IS_TYPE(flags, BOOKMARK)
|
|
||||||
|| (ctx->flags & BACKEND_ASSUME_TITLE_DISTINCT);
|
|
||||||
|
|
||||||
qctx->tags_root_id = ctx->tags_root_id;
|
qctx->tags_root_id = ctx->tags_root_id;
|
||||||
qctx->check_name = !name_distinct;
|
qctx->check_name = !filename_is_guid
|
||||||
|
&& BOOKMARKFS_BOOKMARK_IS_TYPE(flags, BOOKMARK)
|
||||||
|
&& !(ctx->flags & BACKEND_ASSUME_TITLE_DISTINCT);
|
||||||
qctx->with_stat = with_stat;
|
qctx->with_stat = with_stat;
|
||||||
},
|
|
||||||
|
ssize_t nrows;
|
||||||
|
DO_QUERY(ctx, stmt_idx, sql, qctx->row_func, qctx, nrows, ,
|
||||||
DB_QUERY_BIND_INT64(id),
|
DB_QUERY_BIND_INT64(id),
|
||||||
DB_QUERY_BIND_INT64(off),
|
DB_QUERY_BIND_INT64(off),
|
||||||
);
|
);
|
||||||
|
@ -2395,15 +2359,12 @@ bookmark_do_lookup (
|
||||||
sql = sql_table[bookmark_type][filename_is_guid];
|
sql = sql_table[bookmark_type][filename_is_guid];
|
||||||
|
|
||||||
query: ;
|
query: ;
|
||||||
sqlite3_stmt **stmt_ptr = &ctx->stmts[stmt_idx];
|
|
||||||
|
|
||||||
ssize_t nrows;
|
|
||||||
struct bookmark_lookup_ctx qctx;
|
struct bookmark_lookup_ctx qctx;
|
||||||
DO_QUERY(ctx, stmt_ptr, sql, bookmark_lookup_cb, &qctx, nrows, ,
|
|
||||||
{
|
|
||||||
qctx.tags_root_id = name == NULL ? UINT64_MAX : ctx->tags_root_id;
|
qctx.tags_root_id = name == NULL ? UINT64_MAX : ctx->tags_root_id;
|
||||||
qctx.stat_buf = stat_buf;
|
qctx.stat_buf = stat_buf;
|
||||||
},
|
|
||||||
|
ssize_t nrows;
|
||||||
|
DO_QUERY(ctx, stmt_idx, sql, bookmark_lookup_cb, &qctx, nrows, ,
|
||||||
DB_QUERY_BIND_INT64(id),
|
DB_QUERY_BIND_INT64(id),
|
||||||
DB_QUERY_BIND_TEXT(name, name_len),
|
DB_QUERY_BIND_TEXT(name, name_len),
|
||||||
);
|
);
|
||||||
|
@ -3254,6 +3215,7 @@ bookmark_get (
|
||||||
|
|
||||||
query: ;
|
query: ;
|
||||||
struct bookmark_get_ctx qctx;
|
struct bookmark_get_ctx qctx;
|
||||||
|
qctx.tags_root_id = ctx->tags_root_id;
|
||||||
qctx.callback = callback;
|
qctx.callback = callback;
|
||||||
qctx.user_data = user_data;
|
qctx.user_data = user_data;
|
||||||
int status = bookmark_do_get(ctx, id, xattr_id, &qctx);
|
int status = bookmark_do_get(ctx, id, xattr_id, &qctx);
|
||||||
|
|
Loading…
Add table
Reference in a new issue