Projet

Général

Profil

Development #67884

Pourquoi fait-on des critères « Equal('user_id', str(user.id) if user else '-1') » alors qu'on sait que la réponse va être vide ?

Ajouté par Thomas Noël il y a plus d'un an. Mis à jour il y a plus d'un an.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
02 août 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

À plusieurs endroits du code, on a ce pattern  « Equal('user_id', str(user.id) if user else '-1') »

On peut peut-être chercher à le court-circuiter pour gagner des requêtes (d'autant plus qu'on n'a pas d'index sur user_id).


Fichiers

Révisions associées

Révision 043ed9be (diff)
Ajouté par Frédéric Péters il y a plus d'un an

misc: add special "Nothing" criteria to bypass query and return nothing (#67884)

Historique

#1

Mis à jour par Frédéric Péters il y a plus d'un an

  • Assigné à mis à Frédéric Péters
#2

Mis à jour par Frédéric Péters il y a plus d'un an

Ajout d'un critère "Nothing" qui fait juste FALSE en SQL.

Je traite les quelques Equald('user_id', ... '-1') mais aussi les Equal('status', '_none').

J'ai à un moment court-circuité davantage, façon :

# short-circuit if there's a "Nothing" criteria
if isinstance(clause, list) and any(x for x in clause if isinstance(x, wcs.qommon.storage.Nothing)):
    return []

mais ça doit être répété à trop d'endroits et c'était moche et postgresql arrive très bien à optimiser et faire One-Time Filter: false et ça suffit.

#3

Mis à jour par Thomas Noël il y a plus d'un an

  • Statut changé de Solution proposée à Solution validée

Simple et efficace, ça me va.

#4

Mis à jour par Frédéric Péters il y a plus d'un an

  • Statut changé de Solution validée à Résolu (à déployer)
commit 043ed9be54c95cb8addfe59b6700364811a422a8
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Thu Aug 11 17:09:52 2022 +0200

    misc: add special "Nothing" criteria to bypass query and return nothing (#67884)
#5

Mis à jour par Transition automatique il y a plus d'un an

  • Statut changé de Résolu (à déployer) à Solution déployée
#6

Mis à jour par Transition automatique il y a plus d'un an

Automatic expiration

Formats disponibles : Atom PDF