You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by "Sylvain Benoist (JIRA)" <ji...@apache.org> on 2007/10/31 16:50:51 UTC

[jira] Commented: (TORQUE-105) Column specification assumes NULL as implicit choice

    [ https://issues.apache.org/jira/browse/TORQUE-105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12539106 ] 

Sylvain Benoist commented on TORQUE-105:
----------------------------------------

Suggest overriding getNullString method in org.apache.torque.engine.platform.PlatformSybaseImpl,
or even DefaultPlatformImpl if this behavior should be applied consistently to all platforms.

public String getNullString(boolean notNull)
    {
        return (notNull ? "NOT NULL" : "NULL");
    }


What bothers me is that this implementation is no longer in sync with all the comments that I have seen that indicate that the method returns an empty string for 'NULL' - this may break code that tests for string length for example. 

> Column specification assumes NULL as implicit choice
> ----------------------------------------------------
>
>                 Key: TORQUE-105
>                 URL: https://issues.apache.org/jira/browse/TORQUE-105
>             Project: Torque
>          Issue Type: Bug
>          Components: Generator
>    Affects Versions: 3.3-RC2
>         Environment: Maven2 plugin, Torque 3.3-RC2 ; tested with Sybase 15.0.2 DEV Edition Windows - should affect all Sybase
>            Reporter: Sylvain Benoist
>
> When defining a column in a table with the Torque XML model, the assumption is that if the 'required' attribute is not present, or false, then the column is produced with no explicit NULL/ NOT NULL text. This leaves the door open to database specific behaviors.
> For example, Sybase... see http://manuals.sybase.com/onlinebooks/group-as/asg1250e/svrtsg/@Generic__BookTextView/15380.
> It says that by default, Sybase assumes that a column without an explicit NULL or NOT NULL will be translated into a  NOT NULL. 
> This means that from the following XML snippet :
> <table name="country" description="Country data">
>    <column name="country_id" domain="dm_CountryId" required="true" primaryKey="true" />
>    <column name="country_name" domain="dm_GenericName30" required="true" />
>    <column name="iso_source" domain="dm_Boolean" required="true" />
>    <column name="iso_threechar_code" type="CHAR" size="3" required="false" />
>    <column name="iso_numeric_code" type="INTEGER" required="false"/>
>    <column name="active" domain="dm_Boolean" required="true" />
> </table>
> I end up with the following DDL :
> CREATE TABLE country
> (
>                 country_id CHAR (2) NOT NULL,
>                 country_name VARCHAR (30) NOT NULL,
>                 iso_source CHAR (1) default 'Y' NOT NULL,
>                 iso_threechar_code CHAR (3),
>                 iso_numeric_code INT,
>                 active CHAR (1) default 'Y' NOT NULL,
>     CONSTRAINT country_PK PRIMARY KEY(country_id)
> )
> go
> And Sybase default this to have all columns as NOT NULL, which is not what I specified in my XML.
> To avoid being dependent on a database configuration option, it would be better to make things completely explicit, so that
> when the 'required' XML attribute is either absent or false, the generated DDL specifies 'NULL' instead of an empty string.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org