@@ -2396,10 +2396,13 @@ def _subselect(self, proptree, parentname=None):
23962396 return '%s.id not in (select %s from %s%s)' % (parentname , nodeid_name ,
23972397 multilink_table , w )
23982398
2399- def _filter_multilink_expression_fallback (
2400- self , classname , multilink_table , expr ):
2399+ def _filter_multilink_expression_fallback (self , proptree , expr ):
24012400 '''This is a fallback for database that do not support
24022401 subselects.'''
2402+ classname = proptree .parent .uniqname
2403+ multilink_table = proptree .propclass .table_name
2404+ nid = proptree .propclass .nodeid_name
2405+ lid = proptree .propclass .linkid_name
24032406
24042407 is_valid = expr .evaluate
24052408
@@ -2417,21 +2420,21 @@ def _filter_multilink_expression_fallback(
24172420 # where the multilink table does not have join values
24182421 # needed in evaluation.
24192422
2420- stmnt = "SELECT c.id, m.linkid FROM _%s c " \
2423+ stmnt = "SELECT c.id, m.%s FROM _%s c " \
24212424 "LEFT OUTER JOIN %s m " \
2422- "ON c.id = m.nodeid ORDER BY c.id" % (
2423- classname , multilink_table )
2425+ "ON c.id = m.%s ORDER BY c.id" % (
2426+ lid , classname , multilink_table , nid )
24242427 self .db .sql (stmnt )
24252428
24262429 # collect all multilink items for a class item
2427- for nid , kw in self .db .sql_fetchiter ():
2428- if nid != last_id :
2430+ for nodeid , kw in self .db .sql_fetchiter ():
2431+ if nodeid != last_id :
24292432 if last_id is None :
2430- last_id = nid
2433+ last_id = nodeid
24312434 else :
24322435 # we have all multilink items -> evaluate!
24332436 if is_valid (kws ): append (last_id )
2434- last_id , kws = nid , []
2437+ last_id , kws = nodeid , []
24352438 if kw is not None :
24362439 kws .append (int (kw ))
24372440
@@ -2462,7 +2465,7 @@ def _filter_multilink_expression(self, proptree, v):
24622465 # We heavily rely on subselects. If there is
24632466 # no decent support fall back to slower variant.
24642467 return self ._filter_multilink_expression_fallback (
2465- classname , multilink_table , expr )
2468+ proptree , expr )
24662469
24672470 atom = \
24682471 "%s IN(SELECT %s FROM %s WHERE %s=a.id)" % (
0 commit comments