Fix newsfeed sql query with many parameters
This commit is contained in:
parent
b54916b1dc
commit
7bef78e10f
2 changed files with 9 additions and 6 deletions
|
@ -4,6 +4,7 @@ import re
|
||||||
from Plugin import PluginManager
|
from Plugin import PluginManager
|
||||||
from Db.DbQuery import DbQuery
|
from Db.DbQuery import DbQuery
|
||||||
from Debug import Debug
|
from Debug import Debug
|
||||||
|
from util import helper
|
||||||
|
|
||||||
|
|
||||||
@PluginManager.registerTo("UiWebsocket")
|
@PluginManager.registerTo("UiWebsocket")
|
||||||
|
@ -66,14 +67,14 @@ class UiWebsocketPlugin(object):
|
||||||
query = " UNION ".join(query_parts)
|
query = " UNION ".join(query_parts)
|
||||||
|
|
||||||
if ":params" in query:
|
if ":params" in query:
|
||||||
query = query.replace(":params", ",".join(["?"] * len(params)))
|
query_params = map(helper.sqlquote, params)
|
||||||
res = site.storage.query(query + " ORDER BY date_added DESC LIMIT %s" % limit, params * query_raw.count(":params"))
|
query = query.replace(":params", ",".join(query_params))
|
||||||
else:
|
|
||||||
res = site.storage.query(query + " ORDER BY date_added DESC LIMIT %s" % limit)
|
res = site.storage.query(query + " ORDER BY date_added DESC LIMIT %s" % limit)
|
||||||
|
|
||||||
except Exception as err: # Log error
|
except Exception as err: # Log error
|
||||||
self.log.error("%s feed query %s error: %s" % (address, name, Debug.formatException(err)))
|
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
|
continue
|
||||||
|
|
||||||
for row in res:
|
for row in res:
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import time
|
import time
|
||||||
import re
|
import re
|
||||||
import gevent
|
import gevent
|
||||||
|
from util import helper
|
||||||
|
|
||||||
|
|
||||||
# Special sqlite cursor
|
# Special sqlite cursor
|
||||||
|
|
||||||
|
@ -36,7 +38,7 @@ class DbCursor:
|
||||||
operator = "IN"
|
operator = "IN"
|
||||||
if len(value) > 100:
|
if len(value) > 100:
|
||||||
# Embed values in query to avoid "too many SQL variables" error
|
# 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:
|
else:
|
||||||
query_values = ",".join(["?"] * len(value))
|
query_values = ",".join(["?"] * len(value))
|
||||||
values += value
|
values += value
|
||||||
|
|
Loading…
Reference in a new issue