Critère `{age < #TRUC}` erroné en SQLite #4033

Closed
opened 5 years ago by marcimat · 6 comments
marcimat commented 5 years ago
Owner

Découvert suite à https://forum.spip.net/fr_267686.html

  • Le critère {age<3} fonctionne bien en SQLite.
  • Le critère {age<#TRUC}, avec #TRUC valant 3 provoque une erreur de test en SQLite, qui renvoie toujours VRAI.

La différence est minime entre les deux :

  • TIMESTAMPDIFF('HOUR',articles.date,NOW())/24 < 3
  • TIMESTAMPDIFF('HOUR',articles.date,NOW())/24 < '3' pour le second

Mysql quand à lui a parfaitement l’air de s’en accomoder. Notons qu’il y a une petite différence en Mysql sur la sortie : TIMESTAMPDIFF(HOUR ... où HOUR est une variable interne
alors que sous SQLite c'est un paramètre de la fonction TIMESTAMPDIFF que sqlite_fonctions.php déclare. Mais ça ne change rien au problème rencontré ici.

Pour tester, sous SQLite on obtient 2 résultats différents.

#CACHE{0}

#SQUELETTE

#ID_ARTICLE : #COMPTEUR_BOUCLE / #GRAND_TOTAL
#SET{age,100} #ID_ARTICLE : #COMPTEUR_BOUCLE / #GRAND_TOTAL
Découvert suite à https://forum.spip.net/fr_267686.html - Le critère `{age<3}` fonctionne bien en SQLite. - Le critère `{age<#TRUC}`, avec `#TRUC` valant 3 provoque une erreur de test en SQLite, qui renvoie toujours VRAI. La différence est minime entre les deux : - `TIMESTAMPDIFF('HOUR',articles.date,NOW())/24 < 3` - `TIMESTAMPDIFF('HOUR',articles.date,NOW())/24 < '3'` pour le second Mysql quand à lui a parfaitement l’air de s’en accomoder. Notons qu’il y a une petite différence en Mysql sur la sortie : `TIMESTAMPDIFF(HOUR ... ` où HOUR est une variable interne alors que sous SQLite c'est un paramètre de la fonction TIMESTAMPDIFF que sqlite_fonctions.php déclare. Mais ça ne change rien au problème rencontré ici. Pour tester, sous SQLite on obtient 2 résultats différents. <pre> #CACHE{0} <h1>#SQUELETTE</h1> <BOUCLE_age(ARTICLES){age<100}{pagination 1}> #ID_ARTICLE : #COMPTEUR_BOUCLE / #GRAND_TOTAL<br /> </BOUCLE_age> #SET{age,100} <BOUCLE_age2(ARTICLES){age<#GET{age}}{pagination 1}> #ID_ARTICLE : #COMPTEUR_BOUCLE / #GRAND_TOTAL<br /> </BOUCLE_age2> </pre>
Poster
Owner
There is no content yet.
Poster
Owner

SQLite3 :

sqlite> select 2 < '3';
1
sqlite> select 4 < '3';
1

Mysql :

mysql> select 2 < '3';
1
mysql> select 4 < '3';
0
### SQLite3 : <pre> sqlite> select 2 < '3'; 1 sqlite> select 4 < '3'; 1 </pre> ### Mysql : <pre> mysql> select 2 < '3'; 1 mysql> select 4 < '3'; 0 </pre>
Poster
Owner
Ça fait donc suite à : - https://core.spip.net/projects/spip/repository/revisions/19343 - https://core.spip.net/projects/spip/repository/revisions/19497 Et donc à https://core.spip.net/issues/2686 aussi.
b_b commented 5 years ago
Owner

Redmine ne l'a pas fait, mais on peut fermer le ticket maintenant, non ?

Redmine ne l'a pas fait, mais on peut fermer le ticket maintenant, non ?
b_b commented 5 years ago
Owner

Statut changé à En cours

**Statut changé à En cours**
Owner

Statut changé à Fermé

**Statut changé à Fermé**
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.