Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EclipseLink/Development/Incubator/Extensions/SymfowarePlatform"

(Added issues with SQL keywords in table/column names and maximum precision)
Line 91: Line 91:
 
* EclipseLink allows two ways of doing Bulk Update/Delete.   
 
* EclipseLink allows two ways of doing Bulk Update/Delete.   
 
** The default version involves a subquery, that may include a reference to a table in the outer query.  This is not supported by Symfoware
 
** The default version involves a subquery, that may include a reference to a table in the outer query.  This is not supported by Symfoware
** The alternate version involes temporary table (either Global or Local)
+
** The alternate version involves temporary table (either Global or Local)
 
*** Symfoware supports global temporary tables, but they may not be dropped until the connection that was using them is closed
 
*** Symfoware supports global temporary tables, but they may not be dropped until the connection that was using them is closed
 
*** EclipseLink tries to drop these tables when done with them causing locking issues
 
*** EclipseLink tries to drop these tables when done with them causing locking issues
 
*** We are having issues creating the temp table in the correct tablespace.  We will need to address this
 
*** We are having issues creating the temp table in the correct tablespace.  We will need to address this
 +
*** Symfoware does not support local temporary tables
  
 
=== Drop Table Restrictions ===
 
=== Drop Table Restrictions ===
Line 106: Line 107:
 
* When using ANSI outer join, EclipseLink generates SQL that includes "JOIN" syntax as well
 
* When using ANSI outer join, EclipseLink generates SQL that includes "JOIN" syntax as well
 
** e.g. SELECT t1.ID, t1.NAME, t1.SALARY FROM EMPLOYEE t1 LEFT OUTER JOIN (EMPLOYEE_PROJECT t2 JOIN PROJECT t0 ON (t0.ID = t2.projects_ID))ON (t2.employees_ID = t1.ID)  
 
** e.g. SELECT t1.ID, t1.NAME, t1.SALARY FROM EMPLOYEE t1 LEFT OUTER JOIN (EMPLOYEE_PROJECT t2 JOIN PROJECT t0 ON (t0.ID = t2.projects_ID))ON (t2.employees_ID = t1.ID)  
** the JOIN keyword above is not supported by Symfoware
+
** the JOIN keyword above (without LEFT/RIGHT OUTER) is not supported by Symfoware
 +
 
 +
=== Table, Column Name Restrictions ===
 +
 
 +
* The EclipseLink testing framework has tests that use reserved SQL keywords as table, column or sequence names. Symfoware does not allow the use of SQL keywords from SQL92, SQL95, SQL96, SQL2000 and SQL2007.
 +
** Symfoware does allow them if the keywords are enclosed in double-quotes.
 +
** Some of these tests have been changed to use another name, but not all. In particular, the use of keyword SEQUENCE as table sequence name is causing failures.
 +
 
 +
=== Column Precision Restrictions ===
 +
 
 +
* The EclipseLink testing framework has tests that use hard-coded database column types with precision values that exceed Symfoware's supported range of its corresponding types. There is no suitable column type with a bigger range that can be mapped to instead.
 +
** In some of these tests the precision has been decreased to fall in Symfoware's supported range, but not all. For example, a column type of NUMBER or NUMERIC can have a maximum precision of 18 on Symfoware but some tests specify a value of 20 and 19/31 resp.

Revision as of 21:07, 12 October 2009

Note: This page describes an extension of EclipseLink that is part of the EclipseLink incubator. Incubator projects are published so the community can use them either to progress towards having them included in the main product, or to use in their own implementations. They have been tested to varying levels and as such, we recommend doing your own testing before including any of this code in a production-level product. Please report any issues via the bug listed below:

Bug

bug 288715

Description

This is a subclass of DatabasePlatform that can be used by customers using the Symfoware database.

Documentation

This section should be written as the platform is exercised and should include things like "configuration", "how to use", "limitations"

Limitations

SymfowarePlatform inherits the limitations of Symfoware Server and its JDBC driver. For example, note the following restrictions. Refer to the database manual for details.

  • Reserved SQL keywords cannot be used as table, column or sequence names. Use a different name, or enclose the name in double quotes. For example:
@Column(name="\"LANGUAGE\"")
  • The MOD function cannot be used.
  • The third argument to the LOCATE function cannot be an input parameter.
  • No more than one input parameter can be used as argument to the LOCATE function.
  • Input parameters cannot be used as arguments to the TRIM and LENGTH functions.
  • The first argument to the SUBSTRING function cannot be an input parameter.
  • No more than one input parameter can be used as argument to the CONCAT function.
  • The LockNoWait option of Pessimitic Locking cannot be used.
  • Pessimistic Locking cannot be used with queries that select from multiple tables.
  • Pessimistic Locking cannot be used with queries that use DISTINCT.

Location

svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.persistence/incubator/extensions/trunk/org.eclipse.persistence.platform.database.symfoware

Level of Testing

  • Sept 3, 2009 - Initial check-in - Template file. Awaiting initial implementation from contributer.

Location of tests and examples

No specific tests or examples have been written. Until a database conformance suite (see EclipseLink/Development/Testing/DatabaseCertification) is available, the following tests are run on this platform:


Test suite Location Setup
JPA Test Suite EclipseLink/Development/Testing/JPA See below
Foundation Test Suite LRG (long regression) EclipseLink/Development/Testing/foundation See below
Java EE 5 CTS (ejb30 category) Not publicly available Refer to the CTS guide


  • Install Symfoware Server Client on the machine that EclipseLink is installed on.
  • For the JPA and Foundation Test Suites, update the respective test.properties files with your JDBC connection settings.

For example:

jdbc.driver.jar=c:/SFWCLNT/JDBC/fjjdbc/lib/fjsymjdbc4.jar;c:/eclipselink_incubator_extensions/org.eclipse.persistence.platform.database.symfoware/classes
db.driver=com.fujitsu.symfoware.jdbc.SYMDriver
db.url=jdbc:symford://symfodb:56005/TESTDB
db.user=symfouser
db.pwd=symfopwd
db.platform=org.eclipse.persistence.extensions.platform.database.SymfowarePlatform

Note the following:

jdbc.driver.jar
Should include the path to the JDBC driver libraries. Refer to the Symfoware Server Client manual for details, and use the correct driver for your JDK version.
Should include the path to the Symfoware Platform class.
db.platform
The platform name is org.eclipse.persistence.extensions.platform.database.SymfowarePlatform. The "extensions" part will be dropped when the platform is moved to the main project.
  • Also, include the JDBC driver native libraries in your PATH (Windows) or LD_LIBRARY_PATH (Unix).

Open Issues

Bulk Update/Delete

  • EclipseLink allows two ways of doing Bulk Update/Delete.
    • The default version involves a subquery, that may include a reference to a table in the outer query. This is not supported by Symfoware
    • The alternate version involves temporary table (either Global or Local)
      • Symfoware supports global temporary tables, but they may not be dropped until the connection that was using them is closed
      • EclipseLink tries to drop these tables when done with them causing locking issues
      • We are having issues creating the temp table in the correct tablespace. We will need to address this
      • Symfoware does not support local temporary tables

Drop Table Restrictions

  • The EclipseLink testing framework makes extensive use of DDL to clean up the database after tests run
  • Symfoware does not support dropping tables until the connections using those tables have been closed
  • Need clarification about whether using a transaction to wrap table creation and use makes any difference

Inner Join Keyword

  • When using ANSI outer join, EclipseLink generates SQL that includes "JOIN" syntax as well
    • e.g. SELECT t1.ID, t1.NAME, t1.SALARY FROM EMPLOYEE t1 LEFT OUTER JOIN (EMPLOYEE_PROJECT t2 JOIN PROJECT t0 ON (t0.ID = t2.projects_ID))ON (t2.employees_ID = t1.ID)
    • the JOIN keyword above (without LEFT/RIGHT OUTER) is not supported by Symfoware

Table, Column Name Restrictions

  • The EclipseLink testing framework has tests that use reserved SQL keywords as table, column or sequence names. Symfoware does not allow the use of SQL keywords from SQL92, SQL95, SQL96, SQL2000 and SQL2007.
    • Symfoware does allow them if the keywords are enclosed in double-quotes.
    • Some of these tests have been changed to use another name, but not all. In particular, the use of keyword SEQUENCE as table sequence name is causing failures.

Column Precision Restrictions

  • The EclipseLink testing framework has tests that use hard-coded database column types with precision values that exceed Symfoware's supported range of its corresponding types. There is no suitable column type with a bigger range that can be mapped to instead.
    • In some of these tests the precision has been decreased to fall in Symfoware's supported range, but not all. For example, a column type of NUMBER or NUMERIC can have a maximum precision of 18 on Symfoware but some tests specify a value of 20 and 19/31 resp.

Back to the top