DataNucleus JIRA is now in read-only mode. Raise any new issues in GitHub against the plugin that it applies to. DataNucleus JIRA will remain for the foreseeable future but will eventually be discontinued
Issue Details (XML | Word | Printable)

Type: Improvement Improvement
Status: Closed Closed
Resolution: Fixed
Priority: Minor Minor
Assignee: Andy Jefferson
Reporter: Yang ZHONG
Votes: 0
Watchers: 0

If you were logged in you would be able to see more operations.
DataNucleus Store RDBMS

Support use of CHECK constraint when Boolean field mapped as INT/TINYINT/SMALLINT

Created: 11/Sep/09 01:20 AM   Updated: 26/Apr/10 03:39 PM   Resolved: 06/Apr/10 06:50 PM
Component/s: Schema
Affects Version/s: 1.1.3, 1.1.4, 1.1.5
Fix Version/s: 2.1.0.m2

Environment: Java 5, Linux

Datastore: IBM DB2
Severity: Production

 Description  « Hide
Check Constraint is generated for Boolean mapping of char(1):
    field CHAR(1) CHECK (field IN ('Y','N') OR field IS NULL)

Recommend similar Check Constraint other Boolean mappings such as SmallInt.

Test Case was attached @

Only for the only purpose of Proof of Concept, changing from

            // Valid Values
            if (getJavaTypeMapping() instanceof SingleFieldMapping)


            // Valid Values
            JavaTypeMapping javaTypeMapping = getJavaTypeMapping();
            if (javaTypeMapping instanceof SingleFieldMapping)
            if (Boolean.class == javaTypeMapping.getJavaType()) // Boolean is final and "==" is faster than isAssignableFrom
            {// NumericRDBMSMapping
                Object identifier = column.getIdentifier();
                StringBuilder constraints = new StringBuilder("CHECK (")
                    .append(" IN (1,0)");
                if (column.isNullable())
                    constraints.append(" OR ")
                        .append(" IS NULL");

will generate

    field SMALLINT CHECK (field IN (1,0) OR field IS NULL)


Sort Order: Ascending order - Click to sort in descending order
Yang ZHONG added a comment - 15/Oct/09 04:42 PM
Same fix is also applicable to 1.1.6.

Andy Jefferson added a comment - 06/Apr/10 06:50 PM
SVN trunk handles this for those JDBC types (tested for MySQL)