Nous avons rencontré le même problème et avons contacté AWS, qui a confirmé qu'il s'agissait bien d'un problème avec l'outil Query Editor. Ils n'ont pas d'ETA sur la date à laquelle le problème sera résolu.
Solution 1 : utiliser psql
La bonne nouvelle est que cela fonctionnera avec psql
. Voici un extrait de leur e-mail de réponse :
$ psql -h database-2.cluster-xx.us-west-2.rds.amazonaws.com -d postgres -U postgres
postgres=> CREATE OR REPLACE FUNCTION trigger_set_updated_at() RETURNS TRIGGER AS $$
postgres$> BEGIN NEW.updated_at = NOW();
postgres$> RETURN NEW;END;$$
postgres-> LANGUAGE plpgsql;
CREATE FUNCTION
Documentation sur la configuration :https://docs.aws .amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html
Solution 2 :Utiliser l'API de données
Nous utilisons déjà l'API de données pour communiquer avec notre cluster, donc pour nous, la solution la plus simple consiste en fait à utiliser l'AWS CLI et le secret de la base de données existante.
Vous pouvez mettre votre définition de fonction dans un function.sql
fichier :
CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$
BEGIN
RETURN i + 1;
END;
$$ LANGUAGE plpgsql;
Puis exécutez-le sur la base de données avec :
cat function.sql | xargs -0 aws rds-data execute-statement \
--resource-arn arn:aws:rds:eu-west-1:xxx:cluster:cluster-name \
--secret-arn arn:aws:secretsmanager:eu-west-1:xxx:secret:secret-name-xxx \
--database "database_name" \
--sql
J'espère que cela vous sera utile, bonne chance !