drop some pointless queries now that we can use RETURNING for inserts

This commit is contained in:
Andrew Dolgov
2025-05-05 21:55:38 +03:00
parent 070585ac5e
commit 677cd7453f

View File

@@ -990,12 +990,14 @@ class RSSUtils {
WHERE guid IN (?, ?, ?)"); WHERE guid IN (?, ?, ?)");
$csth->execute([$entry_guid, $entry_guid_hashed, $entry_guid_hashed_compat]); $csth->execute([$entry_guid, $entry_guid_hashed, $entry_guid_hashed_compat]);
if (!$csth->fetch()) { if ($row = $csth->fetch()) {
Debug::log("select returned RID: " . $row['id'], Debug::LOG_VERBOSE);
$base_record_created = false;
} else {
Debug::log("base guid [$entry_guid or $entry_guid_hashed] not found, creating...", Debug::LOG_VERBOSE); Debug::log("base guid [$entry_guid or $entry_guid_hashed] not found, creating...", Debug::LOG_VERBOSE);
// base post entry does not exist, create it // base post entry does not exist, create it
$usth = $pdo->prepare( $usth = $pdo->prepare(
"INSERT INTO ttrss_entries "INSERT INTO ttrss_entries
(title, (title,
@@ -1016,7 +1018,7 @@ class RSSUtils {
(?, ?, ?, ?, ?, ?, (?, ?, ?, ?, ?, ?,
false, false,
NOW(), NOW(),
?, ?, ?, ?, ?, ?)"); ?, ?, ?, ?, ?, ?) RETURNING id");
$usth->execute([$entry_title, $usth->execute([$entry_title,
$entry_guid_hashed, $entry_guid_hashed,
@@ -1031,16 +1033,18 @@ class RSSUtils {
"$entry_language", "$entry_language",
"$entry_author"]); "$entry_author"]);
} $row = $usth->fetch();
$csth->execute([$entry_guid, $entry_guid_hashed, $entry_guid_hashed_compat]); Debug::log("insert returned RID: " . $row['id'], Debug::LOG_VERBOSE);
$base_record_created = true;
}
$entry_ref_id = 0; $entry_ref_id = 0;
$entry_int_id = 0; $entry_int_id = 0;
if ($row = $csth->fetch()) { if ($row['id']) {
Debug::log("base guid found, checking for user record", Debug::LOG_VERBOSE); Debug::log("base record with RID: " . $row['id'] . " found, checking for user record", Debug::LOG_VERBOSE);
$ref_id = $row['id']; $ref_id = $row['id'];
$entry_ref_id = $ref_id; $entry_ref_id = $ref_id;
@@ -1100,56 +1104,54 @@ class RSSUtils {
(ref_id, owner_uid, feed_id, unread, last_read, marked, (ref_id, owner_uid, feed_id, unread, last_read, marked,
published, score, tag_cache, label_cache, uuid, published, score, tag_cache, label_cache, uuid,
last_marked, last_published) last_marked, last_published)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, '', '', '', ".$last_marked.", ".$last_published.")"); VALUES (?, ?, ?, ?, ?, ?, ?, ?, '', '', '', ".$last_marked.", ".$last_published.")
RETURNING int_id");
$sth->execute([$ref_id, $feed_obj->owner_uid, $feed, $unread, $last_read_qpart, $marked, $sth->execute([$ref_id, $feed_obj->owner_uid, $feed, $unread, $last_read_qpart, $marked,
$published, $score]); $published, $score]);
if ($row = $sth->fetch())
$entry_int_id = $row['int_id'];
if ($marked) if ($marked)
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_MARK_TOGGLED, [$ref_id]); PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_MARK_TOGGLED, [$ref_id]);
if ($published) if ($published)
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_PUBLISH_TOGGLED, [$ref_id]); PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_PUBLISH_TOGGLED, [$ref_id]);
$sth = $pdo->prepare("SELECT int_id FROM ttrss_user_entries WHERE
ref_id = ? AND owner_uid = ? AND
feed_id = ? LIMIT 1");
$sth->execute([$ref_id, $feed_obj->owner_uid, $feed]);
if ($row = $sth->fetch())
$entry_int_id = $row['int_id'];
} }
Debug::log("resulting RID: $entry_ref_id, IID: $entry_int_id", Debug::LOG_VERBOSE); Debug::log("resulting RID: $entry_ref_id, IID: $entry_int_id", Debug::LOG_VERBOSE);
$sth = $pdo->prepare("UPDATE ttrss_entries // it's pointless to update base record we've just created
SET title = :title, if (!$base_record_created) {
tsvector_combined = to_tsvector(:ts_lang, :ts_content), $sth = $pdo->prepare("UPDATE ttrss_entries
content = :content, SET title = :title,
content_hash = :content_hash, tsvector_combined = to_tsvector(:ts_lang, :ts_content),
updated = :updated, content = :content,
date_updated = NOW(), content_hash = :content_hash,
num_comments = :num_comments, updated = :updated,
plugin_data = :plugin_data, date_updated = NOW(),
author = :author, num_comments = :num_comments,
lang = :lang plugin_data = :plugin_data,
WHERE id = :id"); author = :author,
lang = :lang
WHERE id = :id");
$params = [":title" => $entry_title, $params = [":title" => $entry_title,
":content" => "$entry_content", ":content" => "$entry_content",
":content_hash" => $entry_current_hash, ":content_hash" => $entry_current_hash,
":updated" => $entry_timestamp_fmt, ":updated" => $entry_timestamp_fmt,
":num_comments" => (int)$num_comments, ":num_comments" => (int)$num_comments,
":plugin_data" => $entry_plugin_data, ":plugin_data" => $entry_plugin_data,
":author" => "$entry_author", ":author" => "$entry_author",
":lang" => $entry_language, ":lang" => $entry_language,
":id" => $ref_id, ":id" => $ref_id,
":ts_lang" => $feed_language, ":ts_lang" => $feed_language,
":ts_content" => mb_substr(strip_tags($entry_title) . " " . \Soundasleep\Html2Text::convert($entry_content), 0, 900000) ":ts_content" => mb_substr(strip_tags($entry_title) . " " . \Soundasleep\Html2Text::convert($entry_content), 0, 900000)
]; ];
$sth->execute($params); $sth->execute($params);
}
// update aux data // update aux data
$sth = $pdo->prepare("UPDATE ttrss_user_entries $sth = $pdo->prepare("UPDATE ttrss_user_entries