[Marseille-pm] Fichier de test pour Class::DBI

arnaud at underlands.org arnaud at underlands.org
Tue Sep 2 09:11:21 CDT 2003


On Sat, Aug 30, 2003 at 08:52:53AM +0200, Robert Silve wrote:
> ca y est j'ai fait un petit test qui plante chez moi :

Débugger avec un tel jeu de test est un régal !
Cours et complet, le TOP !
:-)

Réponse courte :

ajoute la ligne suivante 
__PACKAGE__->columns(Essential => qw(id label1 label2 label3));

Réponse longue :

En regardant ton code, j'ai été surpris par le print STDERRqui ne servait à rien
dans ce qui nous préoccupait...

J'ai donc remplacé 
  print STDERR "WARNING ",map { $_->label1 } @acc;
par
  my @dummy  = map { $_->label1 } @acc;

Pour un comportement identique.
Suppositionr:  ce qui fait marcher le 2° cas c'est probablement une
autovivification

en *accédant* à $_->label1 tu *force* Perl a renseigner sa valeur.

Pour en avoir le coeur net, j'ai affiché les clefs du haschage avant et après
l'autovivification :

Avant : Juste Id présent
Après : Toutes les colonnes sont présentes en tant que clé du haschage

Donc le problème vient du fait qu'avec Class::DBI quand tu récupères un objet ne
récupère pas TOUTES les collonnes (voir "lazy population" dans la doc)

dans ton cas en essayant d'accéder EXPLICITEMENT à label1 tu forcais la
récupération de toutes les autres colonnes...

La ligne que j'ai donné en début de mail, force la récupération de toutes
les colonnes dés le début (pas otimal en terme de vitesse d'éxécution...)

En espérant avoir répondu a tes attentes.
Et encore désolé pour TOUS les retards que j'accumule, mais jetouche vraiment
plus terre...

Arnaud.



More information about the Marseille-pm mailing list