<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Postgres SQL schema name inconsistency in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/postgres-sql-schema-name-inconsistency/m-p/180349#M133479</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;My dev evironment uses activiti 5.16.3 on a PostGreSQL 9.3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;My aciviti tables need to run in a seperate schema.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I lost some time due to the fact that i gave the schema an name in uppercase. Activiti always converts the entire tablename, incuding the database schema prefix, to lowercase when trying to connect.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In the TableDataManager&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt; if ("postgres".equals(getDbSqlSession().getDbSqlSessionFactory().getDatabaseType())) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tableName = tableName.toLowerCase();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Once i renamed my schema to lowercase, activiti was able to find my schema and the tables.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;In my configuration i still have the prefix in uppercase.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;However it then crashes during the dbSchemaCheck because there it does not convert the tablenames to lower case.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;Caused by: org.activiti.engine.ActivitiException: Activiti database problem: Tables missing for component(s) engine, history, identity&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.db.DbSqlSession.dbSchemaCheckVersion(DbSqlSession.java:892) [activiti-engine-5.16.3.jar:5.16.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.db.DbSqlSession.performSchemaOperationsProcessEngineBuild(DbSqlSession.java:1366) [activiti-engine-5.16.3.jar:5.16.3]&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;This is because in the DbSqlSession the table name is converted to lower case, but the schema name is not.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Which is rather inconsistent.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp; public boolean isEngineTablePresent(){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return isTablePresent("ACT_RU_EXECUTION");&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; public boolean isHistoryTablePresent(){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return isTablePresent("ACT_HI_PROCINST");&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; public boolean isIdentityTablePresent(){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return isTablePresent("ACT_ID_USER");&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; public boolean isTablePresent(String tableName) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;……..&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String schema = this.connectionMetadataDefaultSchema;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (dbSqlSessionFactory.getDatabaseSchema() != null &amp;amp;&amp;amp; dbSqlSessionFactory.getDatabaseSchema().length() &amp;gt; 0) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; schema = dbSqlSessionFactory.getDatabaseSchema();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String databaseType = dbSqlSessionFactory.getDatabaseType();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ("postgres".equals(databaseType)) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tableName = tableName.toLowerCase();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ……..&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I retrieve the schemaname via JNDI lookup so i will be able to obtain the correct schema name depending on the environment the application runs. But i suspect this is not intended behaviour.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 24 Sep 2014 13:37:43 GMT</pubDate>
    <dc:creator>deg</dc:creator>
    <dc:date>2014-09-24T13:37:43Z</dc:date>
    <item>
      <title>Postgres SQL schema name inconsistency</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/postgres-sql-schema-name-inconsistency/m-p/180349#M133479</link>
      <description>My dev evironment uses activiti 5.16.3 on a PostGreSQL 9.3My aciviti tables need to run in a seperate schema.I lost some time due to the fact that i gave the schema an name in uppercase. Activiti always converts the entire tablename, incuding the database schema prefix, to lowercase when trying to c</description>
      <pubDate>Wed, 24 Sep 2014 13:37:43 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/postgres-sql-schema-name-inconsistency/m-p/180349#M133479</guid>
      <dc:creator>deg</dc:creator>
      <dc:date>2014-09-24T13:37:43Z</dc:date>
    </item>
    <item>
      <title>Re: Postgres SQL schema name inconsistency</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/postgres-sql-schema-name-inconsistency/m-p/180350#M133480</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;In addition to the above remark, in encountered what looks like a bug.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;After resolving the upper , lower case problems the isTablePresent method still returns false.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;As a result i still get the exception&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;org.activiti.engine.ActivitiException: Activiti database problem: Tables missing for component(s) engine, history, identity&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The reason why this fails lies in the parameters passed to the &amp;lt;code&amp;gt;databaseMetaData.getTables&amp;lt;/code&amp;gt; method in the code below:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt; if ("postgres".equals(databaseType)) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tableName = tableName.toLowerCase();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tables = databaseMetaData.getTables(catalog, schema, tableName, JDBC_METADATA_TABLE_TYPES);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return tables.next();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } finally {&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The schema name is not passed. The tablename is the concatenation between schema and tablename. The tables are found when i pass the real tablename as a parameter in debugging mode. When i set the schema to the actual schema, instead of null as is now the case, then the tables are still found. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So to summarize:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;databaseMetaData.getTables(null, null, "myschema.act_ru_execution", JDBC_METADATA_TABLE_TYPES)&amp;lt;/code&amp;gt; finds nothing.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;databaseMetaData.getTables(null, null, "act_ru_execution", JDBC_METADATA_TABLE_TYPES)&amp;lt;/code&amp;gt; does find the table.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;databaseMetaData.getTables(null, "myschema", "act_ru_execution", JDBC_METADATA_TABLE_TYPES)&amp;lt;/code&amp;gt; does find the table.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So i think i'll return to an in-memory database for a while… &lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://connect.hyland.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Sep 2014 07:10:42 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/postgres-sql-schema-name-inconsistency/m-p/180350#M133480</guid>
      <dc:creator>deg</dc:creator>
      <dc:date>2014-09-25T07:10:42Z</dc:date>
    </item>
  </channel>
</rss>

