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).

#26 Re : Général » Construction de bases avec vues modifiables » 02/03/2018 13:46:07

j'ai implementé cette méthode sur une table de 400 records jointe à deux autres tables (foreign) avec un front-end access/vba (mon client aime ça).

la vue était une linked table en Access et tout semble aller correctement

cela sera-t-il le cas avec une table de plusieurs milliers de records ?

de toute façon, il faut faire des forms qui sont updatables alors qu'elles sont basées sur des queries multi-tables !

sans le trigger instead of i,u,d, je ne vois comment on pourrait faire

#28 Re : Général » Construction de bases avec vues modifiables » 27/02/2018 19:05:36

on peut faire des update, insert et delete dans des vues arbitrairement complexes avec autant de jointures que l'on veut avec un trigger

INSTEAD OF INSERT OR DELETE OR UPDATE

sur la view.

#29 Re : Général » Foreign DW : DETAIL: FATAL: sorry, too many clients already » 27/02/2018 17:55:56

Encore merci pour votre tenacité.

Je suis le seul, pour le moment à faire des connexions fdw. Parce que je fais des tests qui créent et droppent des fdw servers.

Je pensais que le

drop server if exists fdw_utilities cascade;

devait remettre les pendules à zéro.

Ceci dit, le pg_ctl restart a aujourd'hui terminé (droppé) les connexions.

Et je peux continuer à tester. J'ai des problèmes au niveau des permissions. Si je définis des permissions aux niveau des foreign tables, je suppose que je dois le faire au niveau des tables de base. Non ?

#30 Re : Général » Foreign DW : DETAIL: FATAL: sorry, too many clients already » 27/02/2018 17:15:54

le
ALTER FUNCTION public.create_fdw_utilities(text, text, text, text)

après le  create foreign table "rubin_permissions" (

est un problème de copier/coller

l'éditeur de pgadmin4 est aussi dangereux que sa procédure d'installation

#31 Re : Général » Foreign DW : DETAIL: FATAL: sorry, too many clients already » 27/02/2018 17:11:47

C'est moi qui crée les connexions en testant les functions qui créent les fdws. Ca c'est sûr. Ce n'est personne d'autre. Un exemple :

-- FUNCTION: public.create_fdw_utilities(text, text, text, text)

-- DROP FUNCTION public.create_fdw_utilities(text, text, text, text);

CREATE OR REPLACE FUNCTION public.create_fdw_utilities(
	this_host_address text,
	this_database_name text,
	this_user_name text,
	this_password text)
    RETURNS void
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE SECURITY DEFINER 
    ROWS 0
AS $BODY$

declare
	sql_stmt	text;
        port_number text;
        this_table_name text;

begin

    port_number = '5432';
    
    drop server if exists fdw_utilities cascade;
    
    sql_stmt = 	   'create server fdw_utilities '
				|| ' foreign data wrapper postgres_fdw '
				|| ' options (host'
                                || ''''
                                || this_host_address
                                || ''''
                                || ', dbname '
				|| ''''
				|| this_database_name                
                                || ''''
                                || ', port'
                                || ''''
                                || port_number
				|| ''''
                                || ')';
                
    execute sql_stmt;
    
    
    sql_stmt = 	'create user mapping for public '
    			|| ' server fdw_utilities '
                        || ' options (user '
                        || ''''
                        || this_user_name
                	|| ''''
                        || ', password '
                        || ''''
                        || this_password
                        || ''''
                        || ')';
                
    execute sql_stmt;
    
    create foreign table "rubin_permissions" (
		pg_user_name		text,
               permissions			text,
      	       db_name				text,
    	       pg_server_name		text,
    	       pg_server_address  	text
    ) server fdw_utilitiesALTER FUNCTION public.create_fdw_utilities(text, text, text, text)
    OWNER TO rubin;
        options (
            schema_name 'public',
            table_name 'rubin_permissions'
        );
 	
	sql_stmt =     'create view public.user_rubin_permissions as select '
    			|| ' * from rubin_permissions where pg_user_name = '
                        || ''''
                        || this_user_name
                 	|| '''';          
       
    execute sql_stmt;

    sql_stmt =	   'grant usage on foreign server '
    			|| this_fdw_server_name
                        || ' to '
                        || this_user_name;
                
    execute sql_stmt;
  

    sql_stmt =      'grant usage on schema public to ' 
                || this_user_name;

    execute sql_stmt;

  
    sql_stmt =      'grant all on public.user_rubin_permissions to ' 
                || this_user_name;

    execute sql_stmt;

end 
ALTER FUNCTION public.create_fdw_utilities(text, text, text, text)
    OWNER TO rubin;
$BODY$;

Devrais-je faire un

    drop server if exists fdw_utilities cascade;

quand le user quitte le front-end ?

Merci pour votre aide car dans les livres, tout est facile...

"Grise est la théorie, vert est l'arbre de la vie" Goethe ;-))

#32 Re : Général » Foreign DW : DETAIL: FATAL: sorry, too many clients already » 27/02/2018 15:07:50

Pour le moment, il n'y a que moi qui crée des fdw servers en développement. Il n'y donc que moi qui crée toutes ces connexions. C'est étrange !

mais plus tard, chaque fois qu'un utilisateur se connectera, il créera des fdws. (Plusieurs dbs sur plusieurs serveurs. Le user se connecte à son sandbox où il a ses tables locales et les tables foreign)

Faut-il que je fasse des drop servers fdw quand le user quitte l'application?

Merci à tous deux

#33 Re : Général » Foreign DW : DETAIL: FATAL: sorry, too many clients already » 27/02/2018 11:50:50

Merci pour votre réponse.

Si je vous comprends, je devrais augmenter max_connections ?

Mais commentexpliquer que pg_ctl restart ne remet pas les compteurs à zéro ?

#34 Général » Foreign DW : DETAIL: FATAL: sorry, too many clients already » 26/02/2018 18:42:46

Michel Depiesse
Réponses : 11

Bonjour,

J'avais utilisé des FDWs dans un projet et ça marchait bien.

Je recommence dans un autre projet.

Je dois jouer plusieurs fois le script qui crée le serveur FDW car j'ai un problème de permission sur la foreign table.

Et tout d'un coup, quand j'essaie de faire un select sur la foreign table, je reçois :

ERROR:  could not connect to server "fdw_utilities"
DETAIL:  FATAL:  sorry, too many clients already
FATAL:  sorry, too many clients already

et une chiée de

CONTEXT:  Remote SQL command: SELECT pg_user_name, permissions, db_name, pg_server_name, pg_server_address FROM public.list_permissions
Remote SQL command: SELECT pg_user_name, permissions, db_name, pg_server_name, pg_server_address FROM public.list_permissions
Remote SQL command: SELECT pg_user_name, permissions, db_name, pg_server_name, pg_server_address FROM public.list_permissions

je fais pg_ctl restart

ça continue

j'ai pourtant

shared_buffers = 2048MB
max_connections = 100

Je pédale dans la choucroute et je vous appelle à l'aide !

#35 Re : Général » Insert / update / delete » 05/01/2018 11:24:43

Merci ! Et bon week-end à vous et à Dalibo

#36 Re : Général » Insert / update / delete » 04/01/2018 18:46:35

Merci mais je ne vois pas si je peux faire

CREATE MATERIALIZED VIEW mymatview ...

INSERT INTO mymatview...

DELETE FROM mymatview...

UPDATE mymatview...


Encore merci et bonne soirée

#37 Général » Insert / update / delete » 04/01/2018 17:14:13

Michel Depiesse
Réponses : 4

Bonjour,
Est-il possible de faire des insert / update / delete sur une vue matérialisée étant entendu qu'on pourrait le faire avec une vue ordinaire ayant le même select ?
On en parle sans doute dans la documentation mais je n'ai pas trouvé où.

Merci pour votre attention

#38 Re : Général » Pour qu'un DBA ne puisse pas voir les données » 15/11/2017 10:56:08

Merci à tous deux pour vos réponses.

Ceci dit, en cherchant avec "dba cannot see data", on trouve pas mal d'information concernant SQL Server...

Ce qui voudrait, semble-t-il, dire que le raisonnenement de Guillaume n'est pas absolu...

Affaire à suivre, semble-t-il...

#39 Général » Pour qu'un DBA ne puisse pas voir les données » 13/11/2017 10:08:16

Michel Depiesse
Réponses : 4

Bonjour,

J'ai un client un peu parano. Il veut que j'administre ses dbs mais il ne veut pas que je puisse voir les données.

PGSql donne-t-il un mécanisme pour cela ?

Merci pour votre attention,
MD

#40 Re : Réplication » pg_dump d'un schema et pg_restore dans un autre schema » 26/09/2017 11:12:33

Merci pour cette réponse rapide et cette explication claire.

Bonne journée à vous et bonne chance dans toutes vos projets

#41 Réplication » pg_dump d'un schema et pg_restore dans un autre schema » 26/09/2017 10:52:49

Michel Depiesse
Réponses : 2

Bonjour,

J'aimerais savoir s'il est possible de faire la chose suivante :

1/ pg_dump du schema public d'une db
2/ pg_restore de ce backup vers une autre db dans un schema autre que public

Je n'arrive pas à interpréter ce que j'ai vu sur le net.

Il y aurait dans la db de destination, en plus du schema public, des schemas qui serviraient pour faire des restores de dbs utilisées par des collaborateurs itinérants lorsqu'ils reviennent au bureau. La db fait moins de 5 megas.

Merci pour votre attention et bonne journée

#42 Re : PL/pgSQL » extension ltree » 10/09/2017 22:48:09

Merci !

Je vais envoyer un message aux russes....

#43 Re : PL/pgSQL » extension ltree » 10/09/2017 15:10:51

et avec

select
         substring(input_line, char_length(substring(input_line from '[0-9.]*[ ]')) + 1) as node_name
        ,text2ltree(substring(input_line from '[0-9.]*')) as node_path
from staging;

j'me ramasse

psql:load.sql:4: ERROR:  syntax error
DETAIL:  Unexpected end of line.

#44 PL/pgSQL » extension ltree » 10/09/2017 12:48:20

Michel Depiesse
Réponses : 4

Bonjour,

Dans un précédent projet en 9.5, j'avais fait :

create table ltree_node (
 node_id integer primary key
    default nextval('ltree_node_sequence')
 ,node_name text
 ,node_path ltree
);

create index path_gist_idx on ltree_node using gist(node_path);

insert into ltree_node(node_name, node_path) select
 substring(input_line, 
    char_length(substring(
        input_line from '[0-9.]*[ ]')) + 1) as node_name
 ,cast(substring(input_line from '[0-9.]*') as ltree) as node_path
from tree_staging;

Et ça marchait ! Maintenant, je suis en 9.6 et ça ne marche pas !

Le

as ltree 

me vaut

ERROR:  syntax error
DETAIL:  Unexpected end of line.
********** Error **********

ERROR: syntax error
SQL state: 42601
Detail: Unexpected end of line.

idem avec

substring(input_line from '[0-9.]*')::ltree

Je ne trouve rien sur le net... Qqun pourrait-il éclairer ma lanterne ?

Merci !

#45 Re : pgAdmin4 » Problème connexion server - PgAdmin 4 » 24/08/2017 16:02:06

un # -*- coding: utf-8 -*- qui manque qq part ?
dans quelle langue travaillez-vous ?

#46 Général » Linux / C /programmation fonctionnelle » 23/08/2017 09:41:01

Michel Depiesse
Réponses : 0

Bonjour,

Mes connaissances en Linux et C ayant été acquises il y a longtemps, j'aimerais les rafraîchir.

Quels livres (en anglais) pourriez-vous me conseiller ?

Certains me diront peut-être que cette question n'a rien à faire sur ce forum.

Pour ma part, je pense que des spécialistes PostgreSQL me donneront certainement de bons conseils puisque mon but est de devenir un spécialiste PostgreSQL.

Par ailleurs, je pense apprendre un langage généraliste de pointe. Pensez-vous que dans le futur, les langages de programmation fonctionelle vont se développer dans le monde PostgreSQL? Je trouve OCaml fort cartésien.

Merci pour votre attention,
elephantsql.wordpress.com/

#47 Re : pgAdmin4 » Error message undefined » 20/08/2017 12:44:02

Merci !

Mais tel est bien le cas ! Un mystère de plus avec pgadmin4

la semaine prochaine, je vais installer pgadmin4 sur windows10 chez mon client

j'ai vu une abondante littérature à ce sujet sur le net

ce serait bien que  pgamdin4 soit aussi facile à installer que mysql workbench

#48 Re : pgAdmin4 » Installation sur Ubuntu 16.04 » 17/08/2017 13:29:08

Problème résolu : j'ai effacé le fichier pgadmin.db que j'ai finalement trouvé dans mon home_directory/.pgadmin/pgadmin4.db

et j'ai restarté

il était temps, je pensais conseiller à mon client de refaire l'application en COBOL

#49 Re : pgAdmin4 » Installation sur Ubuntu 16.04 » 17/08/2017 09:54:54

je reçois le message : ERROR  pgadmin:        The desktop user pgadmin4@pgadmin.org was not found in the configuration database.

mais si je fais : find . -name 'pgadmin4.db', je ne trouve rien.

Franchement, je suis très inquiet...

#50 Re : pgAdmin4 » Installation sur Ubuntu 16.04 » 16/08/2017 17:07:35

Merci. Je viens d'envoyer un message à redmine.

Avez-vous vu sur le site de pgadmin ne décrit pas de procédure d'installation ?

Sur mon ordi perso, j'ai mis 1 heures à installer pg 9.6 et 5 heures à installer pgadmin4.

Et sur l'ordi du client, je pédale dans la choucroute depuis 4 heures.

Sans doute que mon QI n'est pas assez haut pour pgadmin4 (sur ubuntu 16.04) wink

Pied de page des forums

Propulsé par FluxBB