Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#126 Re : Général » option du backup pg_dump » 09/01/2019 20:56:23
La signification de ces options est dans la doc de pg_dump:
https://docs.postgresql.fr/11/app-pgdump.html
--section=sectionname
Sauvegarde seulement la section nommée. Le nom de la section peut être pre-data, data ou post-data. Cette option peut être spécifiée plus d'une fois pour sélectionner plusieurs sections. La valeur par défaut est toutes les sections.
La section data contient toutes les données des tables ainsi que la définition des Large Objects et les valeurs des séquences. Les éléments post-data incluent la définition des index, triggers, règles et constraintes (autres que les contraintes de vérification). Les éléments pre-data incluent en tous les autres éléments de définition.
L'interprétation la plus plausible de laisser ça à NO dans pgAdmin voudrait dire "ne pas spécifier ces options à pg_dump", ce qui revient à demander le comportement par défaut, donc d'avoir toutes les sections, pre+data+post. C'est certainement ce que vous voulez.
#127 Re : Général » problème avec pg_dumpall » 07/01/2019 19:07:32
C'est comme si on avait importé la base ma_base sur la base postgres.
Il y a t'il une expplication à cela ? Est ce un bug ?
En principe ça ne peut pas arriver avec les commandes indiquées parce que
- pg_dumpall place un \connect nomdelabase dans le script avant les ordres de restauration de cette base
- et psql -f all.sql quitte immédiatement si ce \connect échoue
donc comment ça pourrait restaurer dans la mauvaise base?
A contrario c'est une erreur classique de restaurer un dump individuel (pas pg_dumpall) dans la base postgres parce qu'on a oublié un -d à psql, personnellement ça m'est arrivé plus d'une fois.
#128 Re : Général » Double compatibilité PostGreSQL / Oracle » 05/01/2019 15:14:20
Dans l'exemple du CONNECT BY, c'est remplaçable par un WITH récursif équivalent puisque cette syntaxe est acceptée par Oracle depuis leur version 11g, cf http://www.orafaq.com/node/2993.
#129 Re : pgAdmin4 » pgadmin4 dans un container docker et pg11 en local » 02/01/2019 16:32:21
il y a sur le net un grand nombre de sites qui vous donnent votre adresse IP (ex : http://www.mon-ip.com/)
C'est l'IP du point de vue de l'extérieur, autrement dit du reste de l'Internet. "Operation timed out" dans la tentative de connexion signifie généralement qu'il y a un firewall qui bloque les paquets, ce qui est normal pour éviter que n'importe qui sur Internet soit tenté de se connecter à votre instance Postgres.
Je pense que cette IP ne sert pas pour ce que voulez faire. Ce que vous voulez, c'est que le container puisse initier une connexion TCP vers le host sur son port 5433. Il y a sûrement moyen de faire ça, mais c'est une question purement réseau docker à laquelle personnellement je ne sais pas répondre.
#130 Re : pgAdmin4 » pgadmin4 dans un container docker et pg11 en local » 01/01/2019 17:54:57
Adresse IP du local (donnée par google): 217.39.18.97
Comment ça donnée par google?
Ce n'est pas une adresse locale, dans le sens où c'est une adresse routable depuis l'Internet, et elle n'appartient pas à google non plus visiblement: https://www.whois.com/whois/217.39.18.97
#131 Re : PHP » Problème d'activation de l'extension pdo_pgsql sous centos 6 » 01/01/2019 17:48:31
CentOS 6 fournit en paquet php 5.3, qui n'est plus supporté depuis 2014, cf http://php.net/eol.php (alors que Cent OS 6 est supporté jusqu'en 2020).
Si vous avez compilé vous-même php 7.0.33 pour avoir une version récente, il faut effectivement faire la même chose avec les extensions comme pdo. Mais il n'y a pas besoin de télécharger des sources à part, parce que pdo_pgsql fait déjà partie du code source de php dans le répertoire ext/. pg_config et les autres dépendances nécessaires devraient être installables via un paquet CentOS postgresql-devel.
Si au contraire vous avez installé php 7.0.33 précompilé via un paquet, il faut voir si le fournisseur de ce paquet ne fournit pas aussi pdo_pgsql et autres extensions, puisque logiquement il devrait.
#132 Re : Général » recherche de motif » 26/12/2018 16:55:11
La forme à 2 arguments: substring(text,text) utilise des expressions régulières du standard POSIX alors que SIMILAR TO utilise la syntaxe du standard SQL. Ces deux syntaxes sont différentes et incompatibles.
En revanche cette forme là: substring(string FROM pattern FOR escape) ou a 3 arguments utilise la syntaxe du standard SQL.
Comme vous voulez extraire plusieurs termes d'une seule chaîne, je pense que regexp_match et les expressions POSIX seraient le meilleur choix.
#133 Re : Général » Caractères spéciaux dans les recherches full text » 20/12/2018 14:05:00
Effectivement il faudrait mettre un analyseur lexical alternatif, sans quoi dans "C++" par exemple les + produisent le même lexème qu'un espace:
=# select ts_debug('C++');
ts_debug
--------------------------------------------------------------
(asciiword,"Word, all ASCII",C,{french_stem},french_stem,{})
(blank,"Space symbols",+,{},,)
(blank,"Space symbols",+,{},,)
Il est possible de faire une configuration texte avec son propre analyseur lexical, mais il faut l'écrire en C.
Un exemple ici: https://github.com/postgrespro/pg_tsparser
#134 Re : Migration » Migration simple vers PostgresSQL, problème de clés étrangères. » 14/12/2018 19:06:32
Ce n'est pas spécialement un problème de migration, avec une extraction postgres à recharger par postgres le problème est le même.
Si on crée la table ci-dessus avec PostgreSQL, modulo l'oubli de S à personneS, et qu'on l'exporte avec pg_dump, il va éviter le problème d'intégrité référentielle en faisant ce découpage:
CREATE TABLE public.personnes (
code_personne text NOT NULL,
nom_personne text,
responsable text
);
...
COPY public.personnes (code_personne, nom_personne, responsable) FROM stdin;
... ici les contenus...
... ensuite seulement l'ajout des contraintes
ALTER TABLE ONLY public.personnes
ADD CONSTRAINT personnes_pkey PRIMARY KEY (code_personne);
ALTER TABLE ONLY public.personnes
ADD CONSTRAINT personnes_responsable_fkey FOREIGN KEY (responsable) REFERENCES public.personnes(code_personne);
.. pour finir les droits d'accès via GRANT#135 Re : Site PostgreSQL.fr » [resolu]Suggestion » 12/12/2018 15:27:16
Pour la partie qui se trouve ici: https://docs.postgresql.fr/10/tutorial-sql.html il n'est pas vraiment nécessaire que make passe dans le répertoire src/tutorial, il suffit de copier dans ce répertoire le fichier basics.source sous le nom basics.sql, ou de ne même pas le copier, et quand la doc dit de faire \i basics.sql, faire \i basics.source à la place.
Quoiqu'il en soit ce tuto est hyper basique, c'est vraiment pour se faire une idée très générale de ce à quoi ressemblent les commandes SQL les plus courantes. Vous irez beaucoup plus loin avec un livre.
#136 Re : Site PostgreSQL.fr » [resolu]Suggestion » 11/12/2018 20:47:32
Ce problème est tout à fait normal quand on n'a pas les paquets développeur des quelques outils et bibliothèques utilisés pour la compilation de PostgreSQL.
Cette page:
https://wiki.postgresql.org/wiki/Compil … ource_code
donne les dépendances manquantes (c'est un peu vieux mais je ne suis pas sûr qu'il en manque).
Mais la question que je me pose, c'est à quoi ça va vous servir de compiler le tutoriel. Si vous voulez faire du html/php, vous pouvez totalement vous passer de ce genre d'étape. Une fois que vous avez installé un serveur web avec php et le driver postgresql, tout ça via dnf et les paquets Fedora, vous pouvez écrire du code html/php directement. Pourquoi compiler quoi que ce soit?
#137 Re : Site PostgreSQL.fr » [resolu]Suggestion » 11/12/2018 18:52:49
Il y a un risque de confusion dans ce que vous faites, parce que vous jouez sur 2 tableaux: la compilation des sources d'un côté, qui est faisable complètement indépendamment des paquets précompilés, et de l'autre côté l'installation des paquets précompilés pour Fedora.
Le Makefile du répertoire tutorial a ces explications en tête de fichier:
#-------------------------------------------------------------------------
#
# Makefile--
# Makefile for tutorial
#
# By default, this builds against an existing PostgreSQL installation
# (the one identified by whichever pg_config is first in your path).
# Within a configured source tree, you can say "make NO_PGXS=1 all"
# to build using the surrounding source tree.
#
# IDENTIFICATION
# src/tutorial/Makefile
#
#-------------------------------------------------------------------------
Donc après avoir compilé les sources de postgresql, c'est-à-dire essentiellement
1) téléchargé les sources
2) fait un ./configure avec succès à la racine de ces sources
3) fait un make qui s'est terminé aussi avec succès toujours à la racine
On peut aller dans src/tutorial, et lancer:
make NO_PGXS=1 allet ça va compiler avec succès le tutoriel.
Cette démarche est dans la logique que les sources sont auto-suffisantes. Ca ne veut pas dire que vous ne devez pas aussi installer postgresql-devel ou d'autres paquets pour ce que vous voulez faire par ailleurs, mais il y a une séparation nette entre ce qui est nécessaire pour compiler PostgreSQL et ce qui est nécessaire pour compiler votre propre projet lié à PostgreSQL sous Fedora.
#138 Re : Général » problèmes avec execute » 02/12/2018 19:57:41
Ce qui est voulu c'est récupérer un champ variable d'une requête, donc la fonction test() serait plutôt avec une signature du style: FUNCTION test(requete text, nom_du_champ text)
#139 Re : Général » problèmes avec execute » 01/12/2018 15:31:23
mais alors sous plpgsql a-t-on la possibilité de faire une indirection ?
Non, plpgsql ne sait pas faire ça, pas plus que sql.
Au mieux, les fonctions telles que row_to_json() permettent de lire des jeux de résultats de manière un peu dynamique du fait du modèle collection/clef/valeur du type json,
Mais pour aller vraiment plus loin il faut passer aux langages où les noms de colonnes ne sont pas des identifiants mais des variables.
#140 Re : Général » problèmes avec execute » 30/11/2018 12:40:29
Derrière EXECUTE il faut une requête SQL et non pas du plpgsql.
SELECT quelquechose INTO variable est du plpgsql , et variable:=valeur également.
#141 Re : Général » inverse de crosstab » 29/11/2018 15:42:13
Ca peut se faire en passant par des fonctions json et une jointure latérale.
Voir "Comment dé-pivoter un jeu de données?" dans
https://blog-postgresql.verite.pro/2018 … pivot.html
pour un exemple concret.
#142 Re : Général » Oracle Data Integrator & PostgreSQL 9.6.10 » 28/11/2018 17:49:23
D'après https://github.com/pgaudit/pgaudit/releases:
"For PG 9.6 needs, please use release series 1.1.X."
A vue d'oeil le " pgaudit stack is not empty " ressemble à une erreur interne de pgaudit qui ne devrait pas arriver, ça peut valoir le coup de faire un rapport de bug pour avoir un retour des développeurs de l'extension.
#143 Re : Général » [PG10] Stockage de fichiers » 28/11/2018 15:32:05
%PDF-1.6\012%\336\255\276\357\0126 0 obj\012<< /Length 39463 /Filter /FlateDecode /DecodeParms\012<< /Predictor
C'est manifestement du format 'escape', c'est-à-dire que les caractères ASCII sont tels quels et les autres sont sous forme octale précédé d'un antislash. \012 est le code de LF en octal.
https://www.postgresql.org/docs/current … inary.html
En ce qui concerne le chargement "bloquant" c'est un point intéressant, parce qu'effectivement laisser l'utilisateur poireauter devant l'écran sans information sur ce qui se passe, à partir de quelques secondes, c'est vraiment gênant.
L'idéal c'est d'avoir une API et un stockage qui segmente les données et les renvoie segment par segment. Ce que les large objects font nativement, mais ils ont quelques inconvénients,notamment le fait que les segments sont trop petits (2048 octets max) de nos jours et qu'ils ne sont pas prévus pour des opérations en masse sur plein d'objets dans la même transaction (problème de verrouillage).
Mais une table de ce genre:
CREATE TABLE contenu_binaire(numero_objet bigint references objet(numero), numero_segment int, contenu_segment bytea),
qui ressemble beaucoup à pg_largeobject d'ailleurs, mais dont les segments sont limités à 512 Ko permet d'éviter les problèmes liés à la fois à taille des binaires et à leur nombre.
Avec des fichiers externes ça pourrait être fait aussi mais ça demande de la programmation côté serveur avec un langage "untrusted".
#144 Re : Général » [PG10] Stockage de fichiers » 27/11/2018 19:49:55
Il ne restera plus qu'à gérer l'effacement des fichiers. En effet, il peut arriver qu'un fichier doive être effacé (obsolescence du fichier, erreur ...). Et là, external_file ne propose pas cette fonction. Il faudra voir si je peux octroyer les droits Super-utilisateur aux administrateur de l'application... A voir.
Ce n'est pas un hasard ni un oubli il me semble, external_file n'a aucun moyen d'effaçer un fichier parce qu'il utilise l'API large object, spécifiquement lo_export() pour écrire sur disque et lo_import() pour lire. Il y a bien un lo_unlink(), mais cette fonction effaçe un large object de la base, pas un fichier sur disque.
#145 Re : Général » [PG10] Stockage de fichiers » 27/11/2018 19:37:51
Il n'est pas indispensable d'être connecté en tant que super-utilisateur si un super-utilisateur a délégué le droit d'usage via une fonction déclarée avec SECURITY DEFINER.
C'est d'ailleurs ce mécanisme qu'utilise l'extension external_file. Regardez le source:
https://github.com/darold/external_file … e--1.0.sql
CREATE OR REPLACE FUNCTION writeEfile(buffer bytea, e_file efile)
RETURNS void
AS $$
etc...
END;
$$ LANGUAGE PLPGSQL SECURITY DEFINER SET search_path = @extschema@, pg_temp;
Quand un super-utilisateur créé cette fonction, cette clause dit que les utilisateurs de cette fonction
auront les droits de super-utilisateur pendant son exécution.
Reste à donner les droits d'exécution via GRANT aux bons rôles, et (très important pour la sécurité), retirer le droit au pseudo-rôle public si ce n'est pas déjà fait globalement (ce pseudo-rôle désigne l'ensemble des utilisateurs):
REVOKE EXECUTE ON FUNCTION nom_de_fonction() FROM public;
#146 Re : Général » [PG10] Stockage de fichiers » 27/11/2018 14:53:24
Un 0 à côté de chaque octet est typique de l'encodage UTF-16 que Windows utilise préférentiellement pour l'Unicode:
https://fr.wikipedia.org/wiki/UTF-16
Ca peut vouloir dire que le binaire aurait été pris à tort pour du texte et passé dans un mauvais filtre.
#147 Re : Général » [PG10] Stockage de fichiers » 26/11/2018 20:36:15
J'ai regardé un peu external_file, et c'est du plpgsql, il n'y a pas de code C.
Il utilise les large objects comme stockage intermédiaire, malheureusement ça n'est pas économe en accès disques: stockage du bytea en large object, export du large object en fichier externe, effacement du large object.
Une méthode plus efficace serait de faire des fonctions write_bytea() et read_bytea() qui feraient du transfert fichier<->bytea et rien d'autre, mais là effectivement cette efficacité là suppose de l'écrire en C, donc de compiler. En revanche le contenu lui-même des fonctions serait vraiment simple. C'est comparable à ce que fait pg_read_binary_file() pour la lecture
(une fonction intégrée) et pg_file_write du module adminpack pour la lecture.
On peut aussi utiliser un langage de script untrusted, mais l'efficacité reste à tester. plperlu par exemple ne gère pas les passages de paramètres en binaire, donc une donnée de X octets va être transformée en 2*X octets de texte en hexa puis reconvertis à l'envers une fois dans la fonction.
#148 Re : Sécurité » Role pour deux cas différents » 23/11/2018 12:36:46
Je voudrais créer un role superadmin qui aurait toute les droits
C'est ce que fait SUPERUSER. Il n'est pas nécessaire d'ajouter des droits à un rôle qui a déjà cet attribut.
En l'occurrence "GRANT ALL PRIVILEGES on database peracon to tcm_admin;" n'amène aucun droit
à tcm_admin qu'il n'avait pas déjà.
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA lcm TO peracon_lcm;
Ca ne touche que les tables pré-existantes. Il faudra utiliser ALTER DEFAULT PRIVILEGES si vous voulez aussi que les futures tables du schéma soient concernées, à moins que cet utilisateur soit aussi le futur possesseur de ces tables.
#149 Re : Sécurité » Accès Postgres depuis autre PC » 20/11/2018 18:06:26
Je reste sur l'écran de saisie du mot de passe.
C'est-à-dire qu'aucun message d'erreur ne s'affiche?
Au pire aller sur le serveur dans le sous-répertoire pg_log à l'intérieur du répertoire postgres,
ou dans l'observateur d'évènements windows suivant la configuration, pour consulter les messages
d'erreurs.
#150 Re : Site PostgreSQL.fr » Le forum est resté à l'heure d'été » 14/11/2018 18:14:21
Ah en efffet merci Julien. Je n'avais pas imaginé que ça pouvait se régler comme ça, c'est assez particulier ![]()