[ 
https://issues.apache.org/jira/browse/OFBIZ-7129?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul Foxworthy updated OFBIZ-7129:
----------------------------------
    Description: 
In framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java, the 
getTableNames method looks for table types of "TABLE", "VIEW", "ALIAS" and 
"SYNONYM" 
(https://fisheye6.atlassian.com/browse/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java?r=1644354#to989).

MariaDB produces a table type of "BASE TABLE", so OFBiz didn't detect the 
tables were there, and attempted to create them. In fact, the tables do exist 
so the create failed.

The JDBC docs suggest that plain "TABLE" is a "typical" value for table type 
(https://docs.oracle.com/javase/8/docs/api/java/sql/DatabaseMetaData.html#getTables-java.lang.String-java.lang.String-java.lang.String-java.lang.String:A-)

But it seems "BASE TABLE" is more standards compliant - see for example 
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt page 576. I assume 
some JDBC drivers transform "BASE TABLE" to plain "TABLE", but the MariaDB one 
does not.

I've attached a patch so OFBiz will recognise "BASE TABLE" if that's what it 
receives in the metadata.

  was:
In framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java, the 
getTableNames method looks for table types of "TABLE", "VIEW", "ALIAS" and 
"SYNONYM".

MariaDB produces a table type of "BASE TABLE", so OFBiz didn't detect the 
tables were there, and attempted to create them. In fact, the tables do exist 
so the create failed.

The JDBC docs suggest that plain "TABLE" is a "typical" value for table type 
(https://docs.oracle.com/javase/8/docs/api/java/sql/DatabaseMetaData.html#getTables-java.lang.String-java.lang.String-java.lang.String-java.lang.String:A-)

But it seems "BASE TABLE" is more standards compliant - see for example 
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt page 576. I assume 
some JDBC drivers transform "BASE TABLE" to plain "TABLE", but the MariaDB one 
does not.

I've attached a patch so OFBiz will recognise "BASE TABLE" if that's what it 
receives in the metadata.


> Recognise "BASE TABLE" table type in metadata
> ---------------------------------------------
>
>                 Key: OFBIZ-7129
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-7129
>             Project: OFBiz
>          Issue Type: Bug
>          Components: framework
>    Affects Versions: Trunk
>            Reporter: Paul Foxworthy
>            Assignee: Paul Foxworthy
>         Attachments: OFBIZ-7129_BaseTableMetadata.patch
>
>
> In framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java, the 
> getTableNames method looks for table types of "TABLE", "VIEW", "ALIAS" and 
> "SYNONYM" 
> (https://fisheye6.atlassian.com/browse/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java?r=1644354#to989).
> MariaDB produces a table type of "BASE TABLE", so OFBiz didn't detect the 
> tables were there, and attempted to create them. In fact, the tables do exist 
> so the create failed.
> The JDBC docs suggest that plain "TABLE" is a "typical" value for table type 
> (https://docs.oracle.com/javase/8/docs/api/java/sql/DatabaseMetaData.html#getTables-java.lang.String-java.lang.String-java.lang.String-java.lang.String:A-)
> But it seems "BASE TABLE" is more standards compliant - see for example 
> http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt page 576. I assume 
> some JDBC drivers transform "BASE TABLE" to plain "TABLE", but the MariaDB 
> one does not.
> I've attached a patch so OFBiz will recognise "BASE TABLE" if that's what it 
> receives in the metadata.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to