[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-4732?page=c...
]
David Repshas commented on HHH-4732:
------------------------------------
We have an alternate way to deal with the constraint problems.
Instead of dropping the additional tables when the constraint is dropped, we
could drop them when the constraint is created. This method has less impact
on the Hibernate core code and uses commands that can be added to a script file.
I've attached the diff files (constraintDiffs.zip), which were diffed against
Hibernate 3.5.3.
Here's the overview of what was done:
- Configuration.java:generateSchemaCreationScript
When generating the "alter table" SQL for a constraint, we call
dialect.constraintRequiresFunction() to determine if special processing is
needed. This would return false by default and be set to true in the TeradataDialect.
The "alter table" SQL is created. "generateConstraintFunctionSql" is
called to
create two SQL commands. The first will create a function which will handle
both the creation of the constraint and the removal of the additional error tables
caused by constraint creation.
The second SQL command will invoke the function we just created.
These commands are then added to the create script.
- Dialect.java
contains two new functions:
public boolean constraintRequiresFunction() { return false;}
public String[] generateConstraintFunctionSql(String alter, String tableName, String
constraint) {return null;}
- TeradataDialect:
- contains implementation of the new functions:
constraintRequiresFunction() and generateConstraintFunctionSql
Update Teradata Dialect for Teradata 13.0
-----------------------------------------
Key: HHH-4732
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-4732
Project: Hibernate Core
Issue Type: Improvement
Components: core
Affects Versions: 3.3.2
Environment: Hibernate 3.3.2/ Teradata JDBC Driver 13.0, Teradata Database 13.0
Reporter: David Repshas
Assignee: Strong Liu
Attachments: teradata.zip, teradataDiff.zip, testsuiteMods.zip
Would like to update Teradata Dialect to work with Teradata Database 13.0.
I've include the following files with changes as noted:
org.hibernate.dialect.dialect.java
- added include of java.sql.statement
- added code to support the removal of temporary
files created when using referential integrity
The three new methods are:
public boolean supportsDropPreProcess()
public String performDropPreProcess(Statement stmt, String dropSql) throws
SQLException
public void performDropPostProcess(Statement stmt, String dropSql) throws
SQLException
==================================
org.hibernate.dialect.TeradataDialect.java
- added new include files
- modified registerFunction calls for "current_time" and
"current_date"
- put registerKeyword list in alphabetical order and added keywords:
column,map,password,summary, type, value and year
- changed "getAddColumnString()" to return "Add"
- added new methods:
public ViolatedConstraintNameExtracter getViolatedConstraintNameExtracter()
public String extractConstraintName(SQLException sqlex)
public boolean supportsNotNullUnique()
public boolean supportsExpectedLobUsagePattern()
public boolean supportsUnboundedLobLocatorMaterialization()
public boolean supportsDropPreProcess()
public String performDropPreProcess(Statement stmt, String dropSql) throws
SQLException
public void performDropPostProcess(Statement stmt, String dropSql) throws SQLException
==================================
org.hibernate.tool.hbm2ddl.SchemaExport
- added hooks for new methods:
supportsDropPreProcess,performDropPreProcess and performDropPostProcess
==================================
Also made some changes to some of the files in testsuite:
=============================================
test/hql/astParserLoadingTest.java
- Add instance check of TeradataDialect to get correct behavior
=============================================
test/legacy/foobartest.java
- Add instance check of TeradataDialect to get correct behavior
- modified SQL: Teradata requires "<>" rather than "!="
=============================================
test/typeParameters\typeparametertest.java
-needed to disable these tests as Teradata locking was causing
a deadlock situation when they run
=============================================
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira