Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Mon précédent post (grant execute sur des fonctions) reste sans réponse.
Alors que j'écris
create or replace function sync."insert_4newc_tblActions_data"(
schema_name varchar
,r audit_history
) returns boolean as $$
PostgreSQL produit
CREATE OR REPLACE FUNCTION sync."insert_4newc_tblActions_data"(
schema_name character varying,
r public.audit_history)
RETURNS boolean AS
C'est pas un bug ça ?
Merci pour votre attention et bonne journée
Hors ligne
Non. Le type de chaque argument doit être connu, ce qui implique de préciser le schéma.
Julien.
https://rjuju.github.io/
Hors ligne
Je comprends bien.
Mais je dois appeler ces functions à partir de plusieurs usernames.
et
grant usage on schema public to generic_user;
grant all on public.audit_history to generic_user;
ne résoud pas le problème.
Je crains que le problème soit plus grave que vous semblez le penser...
Hors ligne
Je ne vois pas le rapport avec les droits. Le message d'erreur dans votre précédent message était clair, vous ne passez pas le bon type. Concrètement lors de l'exécution de votre script audit_history != public.audit_history.
Julien.
https://rjuju.github.io/
Hors ligne
Je compile mes fonctions en tant que sync (ou owner de la db).
La compilation ajoute "public." devant "audit_history".
Comment dois-je alors faire pour pouvoir appeler mes fonctions avec un autre user ?
Hors ligne
Vous devez préciser le schéma ou configurer le search_path ( http://docs.postgresql.fr/9.6/ddl-schemas.html )
Julien.
https://rjuju.github.io/
Hors ligne
je précise le schema et j'obtiens
ERROR: function sync.insert_handler(character varying, audit_history) does not exist
LINE 1: SELECT sync.insert_handler(sync_schema_name, r)
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
QUERY: SELECT sync.insert_handler(sync_schema_name, r)
CONTEXT: PL/pgSQL function sync.tablet2server(character varying) line 54 at PERFORM
alors que j'éxécute les fonctions avec le même user qui les a créées !?!!
Je pense que c'est un problème de droits car ça marchait avant. Pourriez-vous jeter un oeil sur mon post précédent?
Hors ligne
Au cas où ce n'était pas clair, je voulais dire préciser le schéma sur l'argument qui pose soucis...
Julien.
https://rjuju.github.io/
Hors ligne
C'est ce que j'ai fait (pour chaque fonction) :
create or replace function sync."insert_4newc_tblContacts_data"(
schema_name varchar
,r public.audit_history
) returns void as $$
Hors ligne
À l'appel de cette fonction...
Avez-vous lu le message d'erreur ?
ERROR: function sync.insert_handler(character varying, audit_history) does not exist
LINE 1: SELECT sync.insert_handler(sync_schema_name, r)
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
r n'est pas de type public.audit_history
Julien.
https://rjuju.github.io/
Hors ligne
voici la définition de la fonction :
create or replace function sync.insert_handler(
schema_name varchar
,r public.audit_history
) returns void as $$
et son appel :
declare
r public.audit_history;
...
case r.operation
when 'INSERT' then perform sync.insert_handler(sync_schema_name, r);
Où ai-je pêché ?
Hors ligne
je ne crois pas que nous pourrons résoudre ce problème si vous n'examinez pas mon système de a à z
ce qui est bien sûr impossible
je vous remercie (très sincérement) pour votre attention
je vais continuer tout seul
si je trouve une solution intéressante, je vous le ferai savoir
merci et bonne journée
Hors ligne
j'ai droppé la db
et je l'ai recréée from the scratch
et ça marche... avec la syntaxe de mon dernier post.
Bonne soirée
Hors ligne
Pages : 1