Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#51 Re : Autres langages » créer une vue en langage C » 08/03/2015 22:56:59
Salut
Grand merci à vous gleu, mais l'exemple donné ne m'a pas été très utile.
J'ai trouvé un code (sur une page en russe! avec les mots clé "postgresql srf function language C") que j'ai travaillé un peut...
La fonction en C
#include "postgres.h"
#include "fmgr.h"
#include "executor/spi.h"
#include "funcapi.h" // to return set of rows and cope with tuples
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
PG_MODULE_MAGIC;
PG_FUNCTION_INFO_V1(get_level1_c);
PGDLLEXPORT
Datum
get_level1_c(PG_FUNCTION_ARGS)
{
int spi_ret;
char sql[100];
char *id;
FuncCallContext *funcctx;
MemoryContext oldcontext;
Datum result;
if (SRF_IS_FIRSTCALL()) {
funcctx = SRF_FIRSTCALL_INIT();
oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
SPI_connect();
snprintf(sql, sizeof(sql), "SELECT id, prenom, lenom FROM personne;");
spi_ret = SPI_execute(sql, true, 0);
funcctx->max_calls = SPI_processed;
MemoryContextSwitchTo(oldcontext);
}
funcctx = SRF_PERCALL_SETUP();
if (funcctx->call_cntr < funcctx->max_calls) {
HeapTuple tuple = SPI_tuptable->vals[funcctx->call_cntr];// ligne que j'ai ajouté
//id = SPI_getvalue(SPI_tuptable->vals[funcctx->call_cntr], SPI_tuptable->tupdesc, 1);
//result = Int32GetDatum(atoi(id));
result=HeapTupleGetDatum(tuple);// ligne que j'ai ajouté
SRF_RETURN_NEXT(funcctx, result);
} else {
SPI_finish();
SRF_RETURN_DONE(funcctx);
}
}La fonction correspondante dans postgresql...
CREATE OR REPLACE FUNCTION get_level1_c(IN integer)
RETURNS table(id integer, prenom character varying(30), lenom character varying(20)) AS
'fnpgsqlsrf.dll', 'get_level1_c'
LANGUAGE CSans les lignes ajoutées j'obtiens une seule colonne. J'ai essayé d'avoir plusieurs colonnes mais j'ai l'erreur...
ERREUR: cache lookup failed for type 0
État SQL :XX000J’ai espoir que quelqu'un m'aidera à compléter cette fonction.
Merci d'avance.
#52 Re : Autres langages » créer une vue en langage C » 05/03/2015 22:32:42
Salut et encore merci
J'ai juste besoin D'UN POINT de départ. Ce n'est pas la volonté de chercher qui manque (plus de 90% de ma connaissance est le résultat d'une autoformation!!!).
Je trouve que c'est vraiment pas trop demandé de me coller UN PETIT EXEMPLE comme point de départ.
Merci d'avance.
#53 Re : Autres langages » créer une vue en langage C » 05/03/2015 17:40:46
Salut
Merci du temps perdu à m'aider.
Je reformule ma question...
Avez-vous un exemple de fonction (procédure stockée) en C qui exécute un select sur des tables et retourne le résultat sous forme de table? (le code du select étant intégré dans la fonction en C).
Merci d'avance.
#54 Re : Autres langages » créer une vue en langage C » 04/03/2015 21:33:40
Salut et grand merci de la réponse (qui m'apprend plus PostgreSQL).
Pour la création de vues, il s'agit de créer une fonction en C qui retourne une table puis je crée une vue par "CREATE VIEW NOMVUE AS SELECT * FROM MAFONCTION(...)".
Par ailleurs, il s'agit des codes de quelques uns de mes objets que je trouve être le cœur de mon œuvre.
Par votre réponse, doit-on comprendre qu'il est impossible de protéger un code source dans une base PostgreSQL?
Merci d'avance
#55 Autres langages » créer une vue en langage C » 02/03/2015 15:33:38
- alassanediakite
- Réponses : 10
Salut
J'ai un projet dans lequel je voudrais masquer certaines de mais vues dans des procédures en langage C.
En effet, ma base est sur PostgreSQL et l'interface est en ACCESS. Quand j'installe la base sur le serveur du client, l'administrateur du serveur a accès aux codes source de ma base sur PostgreSQL.
L'objectif est alors de créer quelques unes des mes vues dans des procédures en langage C.
Jusqu'à présent j'ai réussi à faire uniquement des fonctions qui retournent des types simples en langage C. J'ai tenter de comprendre le mécanisme mais il est trop compliqué (trop de pointeurs et de structures compliquées); et les exemples de la doc utilisent des lignes créées et non des lignes de tables.
Si vous avez un exemple?
Merci d'avance.
@+
#56 Re : Général » Problème de ORDER BY sur un champ de type case when » 21/07/2014 15:42:51
Salut
Cela est très normale.
le regroupement (group by) et le trie (order by) s'appliquent sur l'ensemble des données (concernées). Par exemple, on dira "regrouper par localité, par sexe, par moyenne..." ou "trier (ordonner) par nom, par prénom...".
Il est alors illogique de dire "grouper par jean, par zidane..." ou "trier par paris, par mercedes..."
Pour faire simple et précis: pas de condition dans le group by ou le order by!
@+
#57 Re : Général » [9.4 beta]resultat étrange jointure ou wehre » 21/07/2014 15:19:18
Salut
Merci pour la contribution.
En fait le problème vient de l'avant dernière jointure.
INNER JOIN tspecialite ON
tniveau.idspecialite = tniveau.idspecialite cela crée une jointure croisée.
Il faut avouer que c'était pas évident de le dénicher. Le problème a été détecter par une autre personne ailleurs.
@+
#58 Général » [9.4 beta]resultat étrange jointure ou wehre » 10/07/2014 14:11:28
- alassanediakite
- Réponses : 2
Bonjour
J'ai une situation assez étrange pour moi.
La base de données concerne une école (filière, spécialité, cycle, niveau, classe, étudiant, inscription->association entre étudiant et classe). Je voulais avoir la liste d'une classe et je suis un peut surpris du résultat.
Scénario...
I/ avec WHERE
SQL
SELECT
tetudiant.leprenom,
tetudiant.lenom
FROM
public.tinscription,
public.tetudiant,
public.tclasse,
public.tniveau,
public.tcycle,
public.tannee,
public.tspecialite,
public.tfiliere
WHERE
tetudiant.idetudiant = tinscription.idetudiant AND
tclasse.idclasse = tinscription.idclasse AND
tniveau.idniveau = tclasse.idniveau AND
tcycle.idcycle = tniveau.idcycle AND
tannee.idannee = tclasse.idannee AND
tspecialite.idspecialite = tniveau.idspecialite AND
tfiliere.idfiliere = tspecialite.idfiliere;sortie...
"Aoua";"Coulibaly"
"Kadiatou";"Coulibaly"
"Bintou";"Dembélé"
"Fatoumata";"Bagayoko"
"Fanta";"Bouaré"
"Amadou";"Bah"
II/ avec jointure 1ère forme....
SQL....
SELECT
tetudiant.leprenom,
tetudiant.lenom
from public.tannee inner join
public.tclasse on tannee.idannee = tclasse.idannee
inner join public.tniveau on tniveau.idniveau = tclasse.idniveau
inner join public.tinscription on tclasse.idclasse = tinscription.idclasse
inner join public.tcycle on tcycle.idcycle = tniveau.idcycle
inner join public.tspecialite on tspecialite.idspecialite = tniveau.idspecialite
inner join public.tfiliere on tfiliere.idfiliere = tspecialite.idfiliere
inner join public.tetudiant on tetudiant.idetudiant = tinscription.idetudiant sortie...
"Aoua";"Coulibaly"
"Kadiatou";"Coulibaly"
"Bintou";"Dembélé"
"Fatoumata";"Bagayoko"
"Fanta";"Bouaré"
"Amadou";"Bah"
II/ avec jointure 2ème forme...
SQL
SELECT
tetudiant.leprenom,
tetudiant.lenom
FROM tinscription
INNER JOIN tetudiant ON
tetudiant.idetudiant = tinscription.idetudiant
INNER JOIN tclasse ON
tclasse.idclasse = tinscription.idclasse
INNER JOIN tniveau ON
tniveau.idniveau = tclasse.idniveau
INNER JOIN tcycle ON
tcycle.idcycle = tniveau.idcycle
INNER JOIN tannee ON
tannee.idannee = tclasse.idannee
INNER JOIN tspecialite ON
tniveau.idspecialite = tniveau.idspecialite
INNER JOIN tfiliere ON
tfiliere.idfiliere = tspecialite.idfilieresortie...
"Aoua";"Coulibaly"
"Aoua";"Coulibaly"
"Aoua";"Coulibaly"
"Aoua";"Coulibaly"
"Kadiatou";"Coulibaly"
"Kadiatou";"Coulibaly"
"Kadiatou";"Coulibaly"
"Kadiatou";"Coulibaly"
"Bintou";"Dembélé"
"Bintou";"Dembélé"
"Bintou";"Dembélé"
"Bintou";"Dembélé"
"Fatoumata";"Bagayoko"
"Fatoumata";"Bagayoko"
"Fatoumata";"Bagayoko"
"Fatoumata";"Bagayoko"
"Fanta";"Bouaré"
"Fanta";"Bouaré"
"Fanta";"Bouaré"
"Fanta";"Bouaré"
"Amadou";"Bah"
"Amadou";"Bah"
"Amadou";"Bah"
"Amadou";"Bah"
_____________________________________
Je constate que la deuxième forme de jointure multiplie par 4 le résultat des deux autres.
Avez-vous des explications. Aux besoin, je peux donner le backup (<300KO) en sql de la base.
Merci d'avance.
#59 Réplication » siège et annexe autonome avec synchronisation régulière » 26/05/2014 17:24:14
- alassanediakite
- Réponses : 0
Bonjour
Ma situation :
Un établissement scolaire avec un siège principal et des annexes. Chaque annexe ne gère qu’un cycle de l’enseignement (maternel, primaire, secondaire ou supérieur)
Je veux :
->Un environnement autonome par localité
->A l’instant t0, le siège génère un script des données par localité (filtre alors par cycle sur une période maxi de trois années scolaires)
->t1, chaque annexe initialise ses données (propre au cycle) à partir du script généré par le siège. Chaque annexe ne peut modifier que les nouvelles lignes qu’elle aura ajoutées.
->t2, à la fin d’une période déterminée, chaque annexe génère un script des nouvelles lignes qu’elle à créé
->t3, le siège ajoute les lignes des annexes puis le cycle reprend.
Je voudrais avoir vos avis sur la mise en œuvre et les éventuels inconvénients.
Mers d’avance.
#60 Re : Général » Utilisation d'un outil graphique comme MySQL Workbench pour PostgreSQL » 09/05/2014 12:12:57
A supprimer SVP
#61 Re : Général » Utilisation d'un outil graphique comme MySQL Workbench pour PostgreSQL » 09/05/2014 12:09:55
Salut
gleu, on l'attendait depuis la version 1.16 je pense. Pourquoi ne pas le proposer en BETA avec envoie automatique de rapport. Je pense que cela permettra un bon test.
En écrivant cela je pense aux non informaticiens qui ne cessent de dire "pourquoi ne peut-on pas faire ceci ou cela?" ![]()
@+
#62 Re : Général » L'ordre des indexes a-t-il une importance ? (cas multi index) » 29/04/2014 13:06:46
Salut
Donc considérons que j'ai une table avec trois colonnes : a, b, et c.
Si je crée l'index mon_index(a, c) alors l'index agira dans les cas suivants :SELECT * FROM ma_table WHERE a = 1; SELECT * FROM ma_table WHERE a = 1 AND b = 1 AND c = 1; SELECT * FROM ma_table WHERE a = 1 OR b = 1 OR c = 1;...
Je ne pense que l'index agira dans le cas
SELECT * FROM ma_table WHERE a = 1 OR b = 1 OR c = 1;Le OR n'est pas sargable.
@+
#63 Re : Sécurité » desactiver le pg_hba.conf » 20/03/2014 14:53:10
(Win 7) clic-droit->propriété->général->attribut->avancés->chiffrer
#64 Re : Sécurité » desactiver le pg_hba.conf » 18/03/2014 12:03:34
Salut
gleu, avez-vous une solution à me proposer.
Sur windows, je pense
->créer un seul compte admin avec mot de passe
->lancer le service postgresql avec ce compte
->chiffrer le dossier data de postgresql
J'ai déjà tester la solution.
Cette solution est-elle bonne? quelles peuvent être les inconvénients?
Merci d'avance.
#65 Re : Sécurité » desactiver le pg_hba.conf » 17/03/2014 11:06:59
Bonjour
Merci pour la réponse.
Pas très rassurant, mais je continue à chercher les astuces.
#66 Sécurité » desactiver le pg_hba.conf » 13/03/2014 16:07:02
- alassanediakite
- Réponses : 7
Bonjour
Est-il possible de désactiver l'authentification passant par pg_hba.conf?
Je compte installer ma base (de mon appli de gestion d'école) sur le serveur du client. Puisque je ne peux pas monopoliser le serveur je voudrais désactiver le fichier pg_hba.conf pour éviter tout accès qu'à partir de mon appli. Ainsi je protège mes codes source Pl/pgsql et le schéma source de ma base.
Actuellement le serveur doit être sur windows. A défaut, une solution en Linux peut m’intéresser.
Merci d'avance.
#67 Re : Général » fonctionnement des inxdexs » 09/01/2014 20:29:16
Bonjour
Merci de la réponse
#68 Re : Général » fonctionnement des inxdexs » 08/01/2014 10:57:18
Bonjour
Quelles sont les avantages de cette méthode par rapport à REINDEX
Merci d'avance.
#69 Re : Général » heberger supportant postgresql » 03/10/2013 11:54:02
Salut et merci
Je ne sais pas ce que veut dire hébergement mutualisé.
Je cherche juste à créer un site (ex: www.monsite.com) pour un logiciel que j'ai développé pour les écoles au Mali (Afrique de l'ouest).
Merci d'avance
#70 Général » heberger supportant postgresql » 03/10/2013 11:43:01
- alassanediakite
- Réponses : 3
Bonjour
Je voudrais avoir une liste d’héberger supportant postgresql. La liste proposée par le site (postgresql.fr) me semble obsolète.
Merci d'avance.
#71 Re : Général » a propos de version 1.8.2 » 27/04/2013 14:51:11
Grand merci à vous.
#72 Général » a propos de version 1.8.2 » 27/04/2013 14:24:26
- alassanediakite
- Réponses : 2
Salut
Je voudrais juste savoir s'il existe une version 1.8.2 de PostgreSQL sortie en fév 2008?
Merci d'avance
#73 Re : Optimisation » Requête à optimiser » 12/02/2013 20:46:12
Salut à vous.
gleu, si la sous-requête "select numero,dat from TEMP group by numero,dat having (count(*)>1)" n'est pas corrélée pourquoi est-elle exécutée X fois?
@+
#74 Re : PL/Perl » envoie de mail » 27/12/2012 18:45:05
Salut
J'ai vraiment chercher mais rien n'a faire, pas de solution avec plperl. J'ai trouvé une solution avec vbscript + batch mais là mes infos (login et mot de passe) sont en claire sur vbs.
Ce n'est que partie remise.
@+
#75 Re : PL/Perl » envoie de mail » 20/12/2012 16:04:11
Salut et merci de la réponse
Je ne reçois pas d'erreur. Mais le zéro (0) de retour. En fait, s'il était possible de savoir l'erreur ce serait mieux.
PS/ je viens de voir un de vos immenses travaux ici. Grand merci à vous.