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

#26 Re : Général » Ecriture dans tablespace specifique » 03/03/2020 10:57:40

Le mieux serait de commencer par regarder dans le fichier de log postgres si vous avez un message d'erreur…

#27 Re : PL/pgSQL » jointures sql entre 3 tables » 19/02/2020 14:16:32

Un truc de ce genre ?

select p.pays, f.film from bx.film_id = f.id cross join pays p where not exists (select 1 from box_offices bx where bx.film_id = f.id and bx.pays_id = p.id) 

#28 Re : Général » Fichiers tmp.QHoZCixFte (tmp.zorglub) créées par Postgrès dans /tmp » 17/02/2020 19:08:08

Bonjour,

Le format de nommage de ces fichiers ressemble plutôt à ce que produit la commande "mktemp", pas à ce que produirait postgresql. Vous avez probablement un script quelque part qui crée ces répertoires.

#29 Re : Général » Clé primaire ET clé étrangère ? » 06/02/2020 21:06:57

J'ai l'impression d'un quiproquo...

Je pense que la phrase voulait dire les identifiants (ID) peuvent être identiques entre les deux tables.

Dans ce cas, aucune impossibilité à avoir ID en PK sur les deux tables, et en FK référençant l'autre table. La seule difficulté en faisant ça, c'est de réussir à insérer des données (mettre les contraintes en deferrable initially deferred par exemple).

Par contre, une FK ce n'est pas "peuvent être identiques", mais "doivent être identiques". Si une table peut contenir des id qui ne sont pas dans l'autre, il n'y a plus de lien de FK dans ce sens.

#30 Re : pgAdmin4 » Erreur accès au serveur » 27/01/2020 11:50:09

Bonjour,
Aucune idée, Azure Database for PostgreSQL est un service propriétaire de Microsoft. Pourquoi ne vous adressez-vous pas à eux ?

#31 Re : Général » fonction avec récupération current_user et current timestamp » 24/01/2020 10:35:19

Il faut deux fonctions, appelées par deux triggers différents.

La doc est là : https://www.postgresql.org/docs/10/trig … ition.html . Ce n'est pas extrêmement synthétique, mais ce n'est pas un sujet très simple non plus smile

#32 Re : Général » fonction avec récupération current_user et current timestamp » 23/01/2020 19:05:57

L'explication la plus simple que je vois: vous avez déclaré le trigger comme "AFTER". Si ce n'était pas le cas vous auriez des erreurs sur les INSERT. Par contre, pour pouvoir modifier NEW, il faut un trigger BEFORE. Donc je pense que vu ce que vous voulez faire, c'est un trigger BEFORE qui modifie NEW, et un trigger AFTER qui fait les insert.

#33 Re : Général » Message d'erreur à création d'index » 25/11/2019 12:03:11

J'imagine que ce n'est pas 40 caractères (soit maximum 160 octets en utf8), mais une faute de frappe ?

Pour le fichier CSV, vous êtes sûr d'avoir vérifié l'intégralité des lignes ?
Les caractères non-ascii ne posent pas de problème, tant que l'encodage de votre fichier est le même que celui de la session (ou que vous avez passé l'encoding à COPY). Vous pouvez voir l'encoding de la session avec SHOW client_encoding... aucune idée de ce que fait pgadmin4 de ce point de vue...

#34 Re : Général » Message d'erreur à création d'index » 24/11/2019 18:37:19

"ERREUR: la ligne index requiert 1298240 octets, la taille maximum est 8191".

=> Vous avez des champs trop gros pour être indexés. J'imagine que c'est une chaîne de caractères que vous essayez d'indexer ? Si oui, il y a une limite (elle est même plus basse en fait). On a quelques moyens de contournement, mais c'est à voir dans un second temps.

D'autre part à partir d'une table vide sans index quand j'ai voulu importer un fichier .csv avec 2 902 593 lignes il a été importer que 1 554 138 lignes sans message d'erreur , bizarre non .

Non, pas forcément, on peut très bien avoir des retours de chariots dans un CSV. Un enregistrement de ce genre par exemple:

1;"bonjour
les copains"
2;toto

3 lignes, 2 enregistrements.

#36 Re : Général » to_timestamp() mauvais résultat avec paramètres invresés » 21/11/2019 17:54:05

C'est voulu dans le code. to_timestamp essaye de son mieux, sans faire d'erreur, même si la chaîne ne format est "mauvaise". Ici, Les nombres dans la chaîne de formatage sont simplement ignorés. Je ne suis pas fan non plus, mais c'est comme ça, et voulu...

#37 Re : Général » [PG9.6] Comment gérer au mieux les contraintes d'unicité ? » 15/11/2019 17:56:48

Avec PostgreSQL récent, le mieux est d'utiliser INSERT ON CONFLICT (regardez la doc d'INSERT), dans la mesure du possible. Sinon oui, c'est mieux de ne pas générer d'erreur (ne serait-ce que pour ne pas polluer la log)

#38 Re : PL/pgSQL » Calcule d'une médiane sous postGreSql » 11/11/2019 10:51:57

Bonjour,

Une fonction d'agregation, c'est pas vraiment ce qui se fait de plus simple pour commencer, mais bon, essayons quand même...

Ce qu'on dit avec le create aggregate, c'est que pour calculer cet agrégat, on a une variable d'état qui est un tableau de numeric, qu'à chaque nouvel élément on l'ajoute à la fin du tableau (array_append), et qu'une fois qu'on a vu tous les enregistrements de l'agrégat, on appelle _final_median pour retourner la valeur de l'agrégat. initcond permet d'initialiser la variable d'état à un tableau vide.

La fonction est une fonction SQL (donc une simple requête). La valeur de retour de la fonction est donc le résultat de la requête. Les paramètres sont numérotés $1, $2, etc… (on peut leur donner des noms, mais là, vu qu'il n'y en a qu'un…)

Comme $1 est un tableau, on l'unnest (pour en refaire une liste d'enregistrements). On trie par la sortie de l'unnest (logique), et on récupère soit un soit deux enregistrements (suivant la valeur du modulo 2 de array_upper($1,1), c'est à dire la taille du tableau). Donc si le tableau a un nombre impair d'enregistrements, on prend 1 enregistrements, si il a un nombre pair, on en prend deux (pour calculer la moyenne). Même idée pour l'offset, on prend le ceil(milieu du tableau). Donc ce subselect nous retourne le ou les deux enregistrements du «milieu». La requête principale en retourne la moyenne.

Maintenant que tout ça est posé, pourquoi on comptabilise les null? Parce qu'ils sont dans le tableau. Donc pour éviter ça, deux solutions (désolé je vais dire des évidences smile ):
- ne pas les avoir dans le tableau
- les ignorer à la fin

Pour ne pas les avoir dans le tableau, il faut utiliser une fonction "stricte" d'état, c'est à dire une fonction déclarée comme stricte (c'est un des arguments de create function). C'est à dire une fonction qui retourne NULL quand on lui passe NULL. Évidemment, array_append n'est pas stricte. On peut par exemple pour se sortir de votre problème déclarer une fonction stricte qui fait comme array_append, mais déclarée stricte. Quelque chose comme (je n'ai pas testé):

CREATE  OR REPLACE FUNCTION _strict_array_append(ANYARRAY, ANYELEMENT) RETURNS ANYARRAY STRICT AS 
$$
  SELECT array_append($1,$1)
$$

(array_append est polymorphique, autant faire pareil)

Qu'il suffira d'utiliser dans l'agrégat à la place de l'autre.

Sinon, l'autre solution, c'est juste d'ignorer les NULL dans la fonction finale (moins bon d'un point de vue algorithmique évidemment, mais peut être plus simple). Là il y a plein de solutions… je pense que le plus simple, c'est une fonction intermédiaire qui supprime les null avant de les envoyer à la fonction finale... array_remove le fait très bien.

CREATE OR REPLACE FUNCTION _final_median(NUMERIC[])
   RETURNS NUMERIC AS
$$
   SELECT _final_median_filtered(array_remove($1,NULL));
$$
LANGUAGE 'sql' IMMUTABLE;

CREATE OR REPLACE FUNCTION _final_median_filtered(NUMERIC[])
   RETURNS NUMERIC AS
$$
   SELECT AVG(val)
   FROM (
     SELECT val
     FROM unnest($1) val
     ORDER BY 1
     LIMIT  2 - MOD(array_upper($1, 1), 2)
     OFFSET CEIL(array_upper($1, 1) / 2.0) - 1
   ) sub;
$$
LANGUAGE 'sql' IMMUTABLE;

#39 Re : Général » Serveur PGSQL à l'arrêt » 25/10/2019 09:20:37

Ok, que dit systemctl status postgresql@9.5-main.service ?

#40 Re : Général » Serveur PGSQL à l'arrêt » 25/10/2019 09:09:37

Non, la log postgres. Comme avant. On peut envoyer la log postgres dans le journal, mais debian et ubuntu ne le font pas par défaut.

#41 Re : Général » Serveur PGSQL à l'arrêt » 24/10/2019 17:37:11

Comme ça, difficile à dire, mais l'explication est certainement dans les dernières lignes du fichiers de loc /var/log/postgresql/postgresql-9.5-main.log. Si vous postez les dernières lignes on doit pouvoir vous aider.

#42 Re : PSQL » differences sqlplus --> psql » 20/09/2019 13:56:51

Sinon si vous migrez d'oracle à pg, avec ora2pg, il me semble qu'il y a le choix entre migrer les chaînes vides d'oracle vers vide ou vers null dans PG. À vérifier

#45 Re : PSQL » Conversion de script SQL*Plus Oracle vers Postgres » 20/09/2019 08:11:04

Tout ça est dans la doc de psql... https://www.postgresql.org/docs/current/app-psql.html

Je ne me rappelle plus de ce à quoi correspondent tous ces paramètres, mais une bonne partie a des équivalents...

Par exemple,WHENEVER SQLERROR EXIT 1 correspond à \set ON_ERROR_STOP on, HEADING OFF à \pset tuples only, PAGESIZE 0 doit correspondre à \pset pager off
Vous n'aurez je pense pas à toucher à LINESIZE (psql ne tronque pas les enregistrements par défaut). Pour le reste, je ne me souviens plus trop.

#46 Re : Réplication » Un slave peut-il impacter son Master » 13/08/2019 12:09:13

Le select long peut aussi avoir empêché vacuum de faire son boulot sur le master, si hot_standby_feedback est activé (mais ce n'est certainement pas l'explication la plus probable de votre problème)

#47 Re : Général » Lancer une query a chaque INSERT/UPDATE/DELETE sur certaines tables » 12/08/2019 15:32:30

Vous pouvez aussi dans le code du trigger déterminer sur quelle table il est en train de s'exécuter, c'est un compromis entre duplication de code et simplicité des fonctions trigger

#48 Re : Général » Lancer une query a chaque INSERT/UPDATE/DELETE sur certaines tables » 12/08/2019 12:30:27

Vous êtes obligé de définir les 3 triggers. Par contre rien ne vous empêche, d'avoir une seule fonction que les 3 triggers appellent...

#49 Re : Général » Restauration WAL » 24/07/2019 09:56:39

Je doute que rjuju vous ait dit de lancer un resetwal, dont la doc dit explicitement "It should be used only as a last resort, when the server will not start due to such corruption."

#50 Re : Optimisation » Baisse de performance et modification des paramètres de checkpoint » 19/07/2019 19:13:00

Juste un truc que je vois en lisant votre message:

à noter : l'extension pg_stat_statements a été ajoutée et donc après le redémarrage prise en compte
cette extension a été installée sur toutes les BDD du cluster (environ une dizaine).
elle vient d'être retirée et laissée que sur la base postgres.

En fait, tant que pg_stat_statements est en shared_preload_library, il fonctionne, que l'extension (qui permet d'interroger ce que pg_stat_statements collecte) soit installée ou non dans une base. C'est global à l'instance.

Par contre, je doute que ça soit lui, 20% d'impact serait énorme, par rapport à ce qu'on voit d'habitude (plutôt de l'ordre du pourcent). Malgré tout, si vous voulez en avoir le cœur net, redémarrez avec la librairie déchargée...

Pied de page des forums

Propulsé par FluxBB