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

Reply via email to