Fix newsfeed sql query with many parameters

This commit is contained in:
shortcutme 2019-04-29 16:44:13 +02:00
parent b54916b1dc
commit 7bef78e10f
No known key found for this signature in database
GPG Key ID: 5B63BAE6CB9613AE
2 changed files with 9 additions and 6 deletions

View File

@ -4,6 +4,7 @@ import re
from Plugin import PluginManager
from Db.DbQuery import DbQuery
from Debug import Debug
from util import helper
@PluginManager.registerTo("UiWebsocket")
@ -66,14 +67,14 @@ class UiWebsocketPlugin(object):
query = " UNION ".join(query_parts)
if ":params" in query:
query = query.replace(":params", ",".join(["?"] * len(params)))
res = site.storage.query(query + " ORDER BY date_added DESC LIMIT %s" % limit, params * query_raw.count(":params"))
else:
res = site.storage.query(query + " ORDER BY date_added DESC LIMIT %s" % limit)
query_params = map(helper.sqlquote, params)
query = query.replace(":params", ",".join(query_params))
res = site.storage.query(query + " ORDER BY date_added DESC LIMIT %s" % limit)
except Exception as err: # Log error
self.log.error("%s feed query %s error: %s" % (address, name, Debug.formatException(err)))
stats.append({"site": site.address, "feed_name": name, "error": str(err), "query": query})
stats.append({"site": site.address, "feed_name": name, "error": str(err)})
continue
for row in res:

View File

@ -1,6 +1,8 @@
import time
import re
import gevent
from util import helper
# Special sqlite cursor
@ -36,7 +38,7 @@ class DbCursor:
operator = "IN"
if len(value) > 100:
# Embed values in query to avoid "too many SQL variables" error
query_values = ",".join(map(self.quoteValue, value))
query_values = ",".join(map(helper.sqlquote, value))
else:
query_values = ",".join(["?"] * len(value))
values += value