IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

OID, Cache, Compil et autres malformations PG


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut OID, Cache, Compil et autres malformations PG
    Bonjour à tous,

    je sais qu'il y a déjà eu quelques posts à ce(s) sujet(s) mais je me permets d'en mettre un nouveau car je n'ai pas encore trouvé de solution "sympathique" à ce problème.

    1°) Quand je fais un CREATE OR REPLACE function, PG vérifie si les éléments (tables,etc...) auxquels je fais référence dans ma fonction sont présents. C'est un peu fatiguant car cela oblige à décomposer la création des tables et leur alimentation (STUPIDE). Si quelqu'un a une solution pour éviter cette 'sorte de compilation'....

    2°) Quand je fais un CREATE OR REPLACE function, PG vérifie si les éléments sont présents (STUPIDE), mais de plus les analyse et crée un plan d'éxécution une fois pour toute ( ABSURDE!!!) et enregistre ce plan avec les OID des éléments à cet instant précis (Ben voyons One Shot !). Du coup, si les OIDs de mes tables changent, cela lève de gros problèmes.

    Y A T IL UNE OPTION POUR QUE PG ARRETE DE ME METTRE DES OIDS EN DUR ?

    PS: Je ne souhaite pas utiliser 'execute' de plpgsql ni même me taper la rererecompilation d'une fonction chaque fois que je souhaite l'utiliser (sinon autant se taper l'écriture du code en direct !), ni même tripoter les tables pgtype ou autre....

    Si quelqu'un avait une solution ce serait formidable !!!
    J'aime bien PG (comparé à Sybase ou Oracle) mais là faut bien dire que ça en enlève TOUT le charme.

    Merci pour votre lecture !

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    bonjour il faut mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set default_with_oids to 'off';
    sur les dernieres versions de pg c'est la valeur par defaut
    et pour les tables deja creées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table ma_table set without oids

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut Pas exactement cela...
    Merci pour votre réactivité et pour cette première piste.

    Toutefois...

    En fait je crois (non je suis sûr) que mes tables sont (WITH OID = FALSE)

    Le problème est que la table a bel et bien un OID et que quand je fais mon CREATE/REPLACE FUNCTION il est mis dans le cache par PG. Dès lors si je DROP la table ou que pour quelque autre raison son OID change, si je cherche à éxécuter de nouveau ma fonction j'ai un beau message d'erreur :

    Error with OID 666999666 (ou qq du même genre)

    Ce que je souhaiterai c'est que CREATE/REPLACE FUNCTION ne mette pas les OIDs en cache ou forcer à les réévaluer lors de l'appel de la fonction (sans utiliser 'execute').

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/05/2008, 11h31
  2. ToolTipText caché par d'autres éléments
    Par Seb33300 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 12/02/2007, 10h47
  3. mib : oid pointant sur un autre oid
    Par sandrineM dans le forum Développement
    Réponses: 2
    Dernier message: 28/09/2006, 15h55
  4. ShowMessage "caché" derrière les autres fenêtres
    Par OutOfRange dans le forum Langage
    Réponses: 9
    Dernier message: 23/07/2005, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo