[spip-dev] Re: mysql

@ Antoine Pitrou <antoine@rezo.net> :

> Attention, je vais commiter comme un fou (je passe l'appel
> d'inc_connect dans spip_query)

T'es sûr qu'il n'y a pas de soucis ??? Y a des tas de trucs
qui dépendent de $db_ok avant même qu'une seule requête ait
été effectuée....

D'autre part inc_connect est nécessité par LDAP (indépendamment
de toute requête SQL).

Je sais pas vraiment... à voir, donc.

-- Fil

> Y a des tas de trucs qui dépendent de $db_ok avant même qu'une seule
> requête ait été effectuée....

Ceux-là, normalement, appellent inc_connect d'eux-mêmes.

> D'autre part inc_connect est nécessité par LDAP (indépendamment
> de toute requête SQL).

tu peux regarder ?

-- Fil

> D'autre part inc_connect est nécessité par LDAP (indépendamment de
> toute requête SQL).

tu peux regarder ?

Pas tt de suite mais j'essaierai plus tard.
D'autre part, inc_connect lui-même appelle spip_query pour régler
la valeur de $db_ok...

D'autre part, inc_connect lui-même appelle spip_query pour régler
la valeur de $db_ok...

C'est chaud !! Chez moi ça marche, mais peut-être que sur php3 ça peut
merder..?? Bon, y'a plus qu'à tester

-- Fil

D'autre part, inc_connect lui-même appelle spip_query pour régler
la valeur de $db_ok...

Mhh, non, il appelle mysql_query... je vérifie...

-- Fil

Messiers ;
Après une nuit blanche, il ne me reste autre issue que de vous enquiquiner
un tant soit peu.

J'ai un problème que je suppose liée au téléchargement des images.
Je télécharge mes images, et après elles apparaissent comme documents liées,
mais sans l'icône dans la table conçue à cet effet, à savoir :

[
(#LOGO_DOCUMENT|#URL_DOCUMENT)
]

Et quand je appuie sur recalculer la page, je reçois cet abscons message

Warning: Supplied argument is not a valid MySQL result resource in
/home/sites/site183/web/inc-calcul.php3 on line 80

¡Hasta la victoria siempre!
Luis

Hay quién vive como si fuera inmortal, otros se cuidan como si valieran la
pena
Juan Gelman

D'autre part, inc_connect lui-même appelle spip_query pour régler
la valeur de $db_ok...

En effet ça fout le bazar. Deux choix pas terrible :

1) changer spip_query() partotu dans le code de spip, pour autre chose
2) modifier inc_connect pourqu'il appelle query() au lieu de spip_query()

mais peut-être quelqu'un aura une meilleure idée. ???

-- Fil

> D'autre part, inc_connect lui-même appelle spip_query pour régler
> la valeur de $db_ok...

En effet ça fout le bazar. Deux choix pas terrible :

1) changer spip_query() partotu dans le code de spip, pour autre chose
2) modifier inc_connect pourqu'il appelle query() au lieu de spip_query()

mais peut-être quelqu'un aura une meilleure idée. ???

PS: désolé, j'ai commité trop tôt, parce que chez moi le fichier in_connect
était basé sur mysql_query et pas sur spip_query, ce qui fait que je n'ai
pas vu le panneau...

En bref, le CVS actuel ne fonctionne que si on remplace spip_query par
mysql_query ou par query dans inc_connect.php3 (pour ceux qui velent
essayer).

-- Fil

2) modifier inc_connect pourqu'il appelle query() au lieu de
spip_query()

Ca me semble le mieux. En même temps, query() pourraît être
renommé en un machin plus explicite (spip_query_db ?...)

On pourrait avoir un truc de ce genre-là :

-> inc_version :

function spip_query($query) {
include_ecrire("inc_connect.php3");
if (!$GLOBALS['db_ok']) return;
return spip_query_db($query);
}

-> inc_connect :

<?php
if (defined("_ECRIRE_INC_CONNECT")) return;
define("_ECRIRE_INC_CONNECT", 1);

include_ecrire("inc_mysql.php3");
spip_connect_db("localhost", "", "login", "password", "database");
$r = spip_query_db("SELECT COUNT(*) FROM spip_meta");
$GLOBALS['db_ok'] = !!$r;
?>

-> inc_mysql :

function spip_connect_db($host, $port, $login, $pass, $db) {
if ($port > 0) $host = "$host:$port";
@mysql_connect($host, $login, $pass);
return @mysql_select_db($db);
}

> 2) modifier inc_connect pourqu'il appelle query() au lieu de
> spip_query()

Ca me semble le mieux.

Oui, mais : ça oblige à vérifier inc_connect.php3 et, au cas où il a été
créé sous la forme spip_query(), à le modifier. C'est pas la procé&dure
d'upgrade classique, il faudra faire gaffe.

En même temps, query() pourraît être renommé en un machin plus explicite
(spip_query_db ?...)

Oui, j'ai mis ça par manque d'imagination.

-- Fil

Oui, mais : ça oblige à vérifier inc_connect.php3 et, au cas où il a été
créé sous la forme spip_query(), à le modifier. C'est pas la procé&dure
d'upgrade classique, il faudra faire gaffe.

C'est impossible de mettre cet upgrade ailleurs que dans inc_version, et ça
ne va pas. Donc il faudra mettre un README en gros disant : si vous avez une
page blanche, c'est que vous avez installé entre telle date et telle date,
il vous suffit d'effacer inc_connect et d'indiquer à nouveau les codes de
base...

-- Fil

Oui, mais : ça oblige à vérifier inc_connect.php3 et, au cas où il a été
créé sous la forme spip_query(), à le modifier. C'est pas la procé&dure
d'upgrade classique, il faudra faire gaffe.

Bon, j'ai modifié tout ça et rationnalisé un peu le bordel.
Il y a un message d'upgrade spécifique invitant à réinstaller
(suppression de inc_connect.php3). Tests bienvenus, de préférence
pas sur un site important ;-))

J'ai aussi supprimé un bug qui trainait : quand on créait une
rubrique et qu'on publiait son premier article à l'intérieur,
la rubrique n'apparaissait pas tout de suite sur le site
public car l'article du jour était considéré comme anti-daté.

Bon, j'ai modifié tout ça et rationnalisé un peu le bordel.

kikoo

Il y a un message d'upgrade spécifique invitant à réinstaller
(suppression de inc_connect.php3). Tests bienvenus, de préférence
pas sur un site important ;-))

La procédure automatique que j'avais mise dans admin_repair te plaît pas ?
Trop risquée peut-être... vu le nombre de versions de inc_connect qui
traînent...?

-- Fil

Hello,

Correction d'un mini-bug sur les stats : l'insertion des visites était
faite avant la mise à jour, ce qui au cas où le INSERT DELAYED était
très très rapide doublait les statistiques initiales.

a+

Antoine.

> Il y a un message d'upgrade spécifique invitant à réinstaller
> (suppression de inc_connect.php3). Tests bienvenus, de préférence
> pas sur un site important ;-))

Chez moi ça n'upgrade pas du tout. Pages blanches. Le inc_connect est de la
forme "@spip_query" ; si je mets @mysql_query, en revanche, c'est bon (ie ça
propose l'upgrade puissant). Ta solution, qui nettoie plein de choses (les
très vieux inc_connect, j'avais pas pensé), n'évite pas cette boucle
infernale...

-- Fil

Il contient déjà ton spip_num_rows non ? Auquel cas c'est normal : la
fonction n'est pas reconnue (inc_db_mysql est normalement inclus par
inc_connect, mais pas le tien) donc PHP s'arrête (et pas de message
d'erreur à cause du @).

> Chez moi ça n'upgrade pas du tout. Pages blanches. Le inc_connect est de la
> forme "@spip_query" ;

Il contient déjà ton spip_num_rows non ? Auquel cas c'est normal : la
fonction n'est pas reconnue (inc_db_mysql est normalement inclus par
inc_connect, mais pas le tien) donc PHP s'arrête (et pas de message
d'erreur à cause du @).

Non, c'est moins récent que ça :

<?php
if (defined("_ECRIRE_INC_CONNECT")) return;
define("_ECRIRE_INC_CONNECT", "1");
$GLOBALS['db_ok'] = true;
@mysql_connect("localhost","root","");
@mysql_select_db("spip");
$GLOBALS['db_ok'] &= !!@mysql_num_rows(@spip_query('SELECT COUNT(*) FROM spip_meta'));
?>

-- Fil

> Il contient déjà ton spip_num_rows non ? Auquel cas c'est normal : la
> fonction n'est pas reconnue (inc_db_mysql est normalement inclus par
> inc_connect, mais pas le tien) donc PHP s'arrête (et pas de message
> d'erreur à cause du @).

Non, c'est moins récent que ça :

<?php
if (defined("_ECRIRE_INC_CONNECT")) return;
define("_ECRIRE_INC_CONNECT", "1");
$GLOBALS['db_ok'] = true;
@mysql_connect("localhost","root","");
@mysql_select_db("spip");
$GLOBALS['db_ok'] &= !!@mysql_num_rows(@spip_query('SELECT COUNT(*) FROM spip_meta'));
?>

Bon, alors ça doit être à cause du include_ecrire("inc_connect")
qui est fait avant le spip_query()... je corrige.

> Non, c'est moins récent que ça :
>
> <?php
> if (defined("_ECRIRE_INC_CONNECT")) return;
> define("_ECRIRE_INC_CONNECT", "1");
> $GLOBALS['db_ok'] = true;
> @mysql_connect("localhost","root","");
> @mysql_select_db("spip");
> $GLOBALS['db_ok'] &= !!@mysql_num_rows(@spip_query('SELECT COUNT(*) FROM spip_meta'));
> ?>

Bon, alors ça doit être à cause du include_ecrire("inc_connect")
qui est fait avant le spip_query()... je corrige.

Ca marche en effet !

-- Fil