details: https://code.openbravo.com/erp/devel/pi/rev/0247affd1bb7 changeset: 33094:0247affd1bb7 user: Gorka Ion Damián <gorkaion.damian <at> openbravo.com> date: Fri Dec 01 11:32:33 2017 +0100 summary: Fixed issue 37310. Add support for Amazon PG RDS database.
Changes required to support Amazon PG RDS. *bbdd.user is no longer superuser *new prescript added in postgresql to execute with bbdd.systemUser to create requried pg extensions that need superuser privileges to execute. *uuid_generate_v4 function is now created by creating the full uuid-ossp instead of just the function. diffstat: src-db/database/build-create.xml | 7 ++--- src-db/database/build.xml | 4 ++- src-db/database/model/excludeFilter.xml | 1 + src-db/database/model/postscript-PostgreSql.sql | 6 ----- src-db/database/model/prescript-PostgreSql.sql | 10 -------- src-db/database/model/prescript-systemuser-PostgreSql.sql | 18 +++++++++++++++ 6 files changed, 25 insertions(+), 21 deletions(-) diffs (129 lines): diff -r f96b66a5e5ad -r 0247affd1bb7 src-db/database/build-create.xml --- a/src-db/database/build-create.xml Thu Nov 30 16:38:33 2017 -0500 +++ b/src-db/database/build-create.xml Fri Dec 01 11:32:33 2017 +0100 @@ -168,11 +168,11 @@ <transaction> --CREATING USER CREATE ROLE ${bbdd.user} LOGIN PASSWORD '${bbdd.password}' - SUPERUSER CREATEDB CREATEROLE + CREATEDB CREATEROLE VALID UNTIL 'infinity'; </transaction> </sql> - <sql driver="${bbdd.driver}" url="${bbdd.url}/postgres" userid="${bbdd.systemUser}" password="${bbdd.systemPassword}" autocommit="true"> + <sql driver="${bbdd.driver}" url="${bbdd.url}/postgres" userid="${bbdd.user}" password="${bbdd.password}" autocommit="true"> <classpath> <fileset dir="${base.lib}"> <include name="**/*.jar"> @@ -182,14 +182,13 @@ <transaction> CREATE DATABASE ${bbdd.sid} WITH ENCODING='UTF8' - OWNER=${bbdd.user} TEMPLATE=template0; </transaction> </sql> </target> <target name="create.database.all"> - <createdatabase driver="${bbdd.driver}" url="${bbdd.owner.url}" user="${bbdd.user}" password="${bbdd.password}" model="model" object="${bbdd.object}" dropfirst="false" failonerror="false" verbosity="${bbdd.verbosity}" basedir="${base.db}/../.." modulesDir="${base.modules}/" dirFilter="*/src-db/database/model" filter="com.openbravo.db.OpenbravoMetadataFilter" input="src-db/database/sourcedata,modules/*/src-db/database/sourcedata"> + <createdatabase driver="${bbdd.driver}" url="${bbdd.owner.url}" user="${bbdd.user}" password="${bbdd.password}" model="model" object="${bbdd.object}" dropfirst="false" failonerror="false" verbosity="${bbdd.verbosity}" basedir="${base.db}/../.." modulesDir="${base.modules}/" dirFilter="*/src-db/database/model" filter="com.openbravo.db.OpenbravoMetadataFilter" input="src-db/database/sourcedata,modules/*/src-db/database/sourcedata" systemUser="${bbdd.systemUser}" systemPassword="${bbdd.systemPassword}"> </createdatabase> <antcall target="database.poststructure.${bbdd.rdbms}" /> </target> diff -r f96b66a5e5ad -r 0247affd1bb7 src-db/database/build.xml --- a/src-db/database/build.xml Thu Nov 30 16:38:33 2017 -0500 +++ b/src-db/database/build.xml Fri Dec 01 11:32:33 2017 +0100 @@ -70,7 +70,7 @@ </target> <target name="update.database"> - <alterdatabasedataall driver="${bbdd.driver}" url="${bbdd.owner.url}" user="${bbdd.user}" password="${bbdd.password}" excludeobjects="com.openbravo.db.OpenbravoExcludeFilter" model="model" filter="com.openbravo.db.OpenbravoMetadataFilter" input="sourcedata" object="${bbdd.object}" failonerror="false" verbosity="${bbdd.verbosity}" basedir="${base.modules}/" dirFilter="*/src-db/database/model" datadir="${base.modules}/" dataFilter="*/src-db/database/sourcedata" userId="0" adminMode="true" propertiesFile="${base.config}/Openbravo.properties" force="${force}" onlyIfModified="${onlyIfModified}" forcedRecreation="${forcedRecreation}" executeModuleScripts="${execute.modulescripts}" threads="${max.threads}"/> + <alterdatabasedataall driver="${bbdd.driver}" url="${bbdd.owner.url}" user="${bbdd.user}" password="${bbdd.password}" excludeobjects="com.openbravo.db.OpenbravoExcludeFilter" model="model" filter="com.openbravo.db.OpenbravoMetadataFilter" input="sourcedata" object="${bbdd.object}" failonerror="false" verbosity="${bbdd.verbosity}" basedir="${base.modules}/" dirFilter="*/src-db/database/model" datadir="${base.modules}/" dataFilter="*/src-db/database/sourcedata" userId="0" adminMode="true" propertiesFile="${base.config}/Openbravo.properties" force="${force}" onlyIfModified="${onlyIfModified}" forcedRecreation="${forcedRecreation}" executeModuleScripts="${execute.modulescripts}" threads="${max.threads}" systemUser="${bbdd.systemUser}" systemPassword="${bbdd.systemPassword}"/> <antcall target="database.postupdate.${bbdd.rdbms}" /> <antcall target="update.dbupdate.timestamp" /> </target> @@ -98,6 +98,8 @@ <arg value="${forcedRecreation}"/> <arg value="${execute.modulescripts}"/> <arg value="${max.threads}"/> + <arg value="${bbdd.systemUser}"/> + <arg value="${bbdd.systemPassword}"/> <classpath refid="runtime-classpath" /> <syspropertyset> <propertyref name="java.security.egd" /> diff -r f96b66a5e5ad -r 0247affd1bb7 src-db/database/model/excludeFilter.xml --- a/src-db/database/model/excludeFilter.xml Thu Nov 30 16:38:33 2017 -0500 +++ b/src-db/database/model/excludeFilter.xml Fri Dec 01 11:32:33 2017 +0100 @@ -95,4 +95,5 @@ <excludedFunction name="WORD_SIMILARITY_COMMUTATOR_OP"/> <excludedFunction name="OBEQUALS"/> + <excludedFunction name="UUID\_%"/> <!-- PostgreSQL uuid functions --> </vector> diff -r f96b66a5e5ad -r 0247affd1bb7 src-db/database/model/postscript-PostgreSql.sql --- a/src-db/database/model/postscript-PostgreSql.sql Thu Nov 30 16:38:33 2017 -0500 +++ b/src-db/database/model/postscript-PostgreSql.sql Fri Dec 01 11:32:33 2017 +0100 @@ -272,12 +272,6 @@ LANGUAGE 'plpgsql' VOLATILE /-- END -CREATE OR REPLACE FUNCTION uuid_generate_v4() -RETURNS uuid -AS '$libdir/uuid-ossp', 'uuid_generate_v4' -VOLATILE STRICT LANGUAGE C; -/-- END - -- Inserts an alert recipient for available updates -- See issue: https://issues.openbravo.com/view.php?id=11743 CREATE OR REPLACE FUNCTION pg_temp.insert_recipient() diff -r f96b66a5e5ad -r 0247affd1bb7 src-db/database/model/prescript-PostgreSql.sql --- a/src-db/database/model/prescript-PostgreSql.sql Thu Nov 30 16:38:33 2017 -0500 +++ b/src-db/database/model/prescript-PostgreSql.sql Fri Dec 01 11:32:33 2017 +0100 @@ -1179,13 +1179,6 @@ DROP FUNCTION drop_view (varchar) /-- END - -CREATE OR REPLACE FUNCTION uuid_generate_v4() -RETURNS uuid -AS '$libdir/uuid-ossp', 'uuid_generate_v4' -VOLATILE STRICT LANGUAGE C; -/-- END - CREATE OR REPLACE FUNCTION get_uuid() RETURNS varchar AS $BODY$ DECLARE @@ -1533,10 +1526,6 @@ LANGUAGE plpgsql IMMUTABLE /-- END --- INSTALL PG_TRGM EXTENSION -CREATE EXTENSION IF NOT EXISTS "pg_trgm" -/-- END - CREATE OR REPLACE FUNCTION obequals( p_number_a numeric, p_number_b numeric) diff -r f96b66a5e5ad -r 0247affd1bb7 src-db/database/model/prescript-systemuser-PostgreSql.sql --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src-db/database/model/prescript-systemuser-PostgreSql.sql Fri Dec 01 11:32:33 2017 +0100 @@ -0,0 +1,18 @@ +-- In previous versions of Openbravo uuid_generate_v4 was created manually not enabling the uuid-ossp +-- extension. If that is the case we need to drop it before creating the extension to avoid errors. +DO $$DECLARE + v_exists NUMERIC; + +BEGIN + SELECT count(1) INTO v_exists FROM pg_extension WHERE extname = 'uuid-ossp'; + IF (v_exists = 0) THEN + DROP FUNCTION IF EXISTS uuid_generate_v4(); + END IF; +END$$; +/-- END + +CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; +/-- END + +CREATE EXTENSION IF NOT EXISTS "pg_trgm"; +/-- END ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Openbravo-commits mailing list Openbravo-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbravo-commits