PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : C et C++ » Fonction Postgres en C » 17/08/2010 15:05:23

Parfait ! j'ai résolu mon problème : voici la portion du code qui posait problème

 
newtuple=SPI_modifytuple(rel,rettuple,1,&ret,(Datum *)&serial_num,NULL);

a transformer en :

 
	DatumBuffer = palloc(sizeof(Datum));
 
	DatumBuffer = DirectFunctionCall1(textin,CStringGetDatum(serial_num));
 
	newtuple=SPI_modifytuple(rel,rettuple,1,&ret,&DatumBuffer,NULL);

cependant, il y a beaucoup de warning a la compilation, mais, le tout marche donc : résolue.
Merci a tous!

Tartine

#2 Re : C et C++ » Fonction Postgres en C » 17/08/2010 09:30:10

Le pg_dump ne donne rien (cf post de 14:58:34 16 aout ) mais une requete de ce type  :
SELECT country,octet_length(country),count(*) FROM http GROUP BY country, octet_length(country);
me donne des valeurs farfelues.

 United States |           46 |     1
 United States |           46 |     1
 nited States  |           41 |     1
 nited States  |           41 |     1
 nited States  |           41 |     1
 nited States  |           41 |     1
 United States |           46 |    12
 United States |           46 |     2
 United States |           46 |     1
 nited States  |           41 |     2
 nited States  |           41 |     2
 nited States  |           41 |     1
 nited States  |           41 |     1
 United States |           46 |     2
 United States |           46 |     1

Donc, il semble qu'il y ai effectivement des problemes de caractères mais le pg_dump ne me sort rien.
est-il possible que ce sois le palloc de mon trigger qui ne fasse pas bien son travail ?
sachant que le strlen sur la string que je remplis me sort une valeur correct.

IRIS

#3 Re : C et C++ » Fonction Postgres en C » 16/08/2010 17:03:03

C'est intéressant : voici le résultat : on ne voit pas le deuxième chevron.

select count(*), '<' || country || '>' from http group by 2;

 count |    ?column?    
-------+----------------
     2 | <United States
     1 | <United States
     2 | <United States
     1 | <United States
    12 | <United States
     1 | <United States
     1 | <United States

A quoi cela pourrait il être dû ?

PS , les deux requetes marches tongue

#4 Re : C et C++ » Fonction Postgres en C » 16/08/2010 14:58:34

J'ai effectué un pg_dump de ma base et hex-dumpé le tout  : voici la partie intéressante.

http://pastebin.com/CYzt7zHR

Je n'ai pas trouvé de caractère caché dans mon dump.
Il semble que postgres fasse un comptage en fonction d'une autre colonne ( j'ai découvert cela en effectuant plusieurs fois la même requête).


D'autre part je n'ai pas tout a fait compris votre requête.

select count(*), '<' || country || '>' from http group by country;

IRIS

#5 Re : C et C++ » Fonction Postgres en C » 16/08/2010 12:27:54

comment verifer la présence de ces caracteres ?
est-ce qu'un petit script python qui select * from matable est suffisant, ou faut il aller plus loins ?

#6 C et C++ » Fonction Postgres en C » 16/08/2010 10:26:07

iris
Réponses : 10

Bonjour

Voici une fonction que j'ai creer :

http://pastebin.com/6h95N9Sf

c'est un trigger qui intervient Before Insert/update
Le trigger fonctionne ainsi que la fonction et l'insertion.
Le probleme survient quand je fais une requête de ce type :

select count(*),country from http group by country;

Le resultat est incorect ( du style : UK=12 FR=3 UK=2 UK=4 ) en gros : il ne regroupe pas (ne trie pas).

Voila, j'ai aussi testé avec du INT et ça marche tres bien ( comptage et regroupage).

Si quelqu'un a une idée wink

IRIS

#7 Re : Optimisation » [Triggers] Actions blonquantes » 03/03/2010 11:06:32

Voici un exemple :

Dans mon exemple, nous avons une table "toto" qui possède un trigger et sa procédure stockée (before insert).

Le scénario est le suivant: Deux INSERT sont réalisés sur la table "toto" qui déclanche au même moment le trigger (before insert).

Requete n*1
insert    trigger  procédure (insert dans la base)
[*]------->[*] ---------------------->[*]
         requete n*2
         insert      trigger  procédure (insert dans la base)
          [*]------->[*] ------------------------->[*]


Legende:
[*] début d'une action
-----> temps


Voici mes questions:
- Comment se comporte les deux trigger ?
- Les trigger peuvent-ils fonctionner en concurance ?
- Ces deux requetes sont atomiques et la seconde sera bloquée le temps que la premiere aboutisse ?

Iris

#8 Optimisation » [Triggers] Actions blonquantes » 03/03/2010 10:04:37

iris
Réponses : 3

Bonjour

Dans une table quelconque qui possede un trigger avec sa procédure stockée associée. Comment sont gérées les concurences entre les triggers de celle-ci ?

Iris

#9 Général » Probleme d'encodage » 14/09/2009 13:01:13

iris
Réponses : 2

Bonjour,

Existe-t-il un type de colonne dans postgres qui est capable de gerer et d'enregistrer n'importe quelle string quel que sois l'encodage?
En effet, j'ai des données qui proviennes de plusieurs endroits/systèmes et certains ont un encodage "exotique" et je souhaiterai pouvoir tout rentrer tout dans la base.

Cordialement
--iris

#10 Re : Général » Changer le caractère de protection des chaines de caractère. » 11/09/2009 09:59:46

Merci beaucoup pour cette reponse, c'est exactement ce que je cherchais !

-iris

#11 Général » Changer le caractère de protection des chaines de caractère. » 07/09/2009 11:41:39

iris
Réponses : 2

Bonjour.
existe t il un moyen de changer le caractere de protection des string ( ici ' ) par un autre dans la config de postgres?
J'ai déja utilisé $$ mais cette chaine est trops recurente pour pouvoir faire mes insertions ici.

Cordialement
-Iris

Pied de page des forums

Propulsé par FluxBB