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/18 16:19:50 UTC

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

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


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

Posted by "Sylvain Benoist (JIRA)" <ji...@apache.org>.
    [ 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