Abbiamo riscontrato lo stesso problema e ci siamo messi in contatto con AWS, che ha confermato che si tratta effettivamente di un problema con lo strumento Editor di query. Non hanno un ETA su quando il problema verrà risolto.
Soluzione 1:usa psql
La buona notizia è che funzionerà con psql
. Questo è uno snippet della loro email di risposta:
$ 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
Documentazione su come configurarlo:https://docs.aws .amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html
Soluzione 2:utilizza l'API dei dati
Utilizziamo già l'Data API per comunicare con il nostro cluster, quindi per noi la soluzione più semplice è in realtà utilizzare l'AWS CLI e il database secret esistente.
Puoi inserire la definizione della tua funzione in un function.sql
file:
CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$
BEGIN
RETURN i + 1;
END;
$$ LANGUAGE plpgsql;
Quindi eseguilo sul database con:
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
Spero che questo sia utile, buona fortuna!