[ 
https://issues.apache.org/jira/browse/DERBY-3630?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mamta A. Satoor updated DERBY-3630:
-----------------------------------

    Urgency: Normal
     Labels: derby_triage10_10  (was: )
    
> Odd assymetry in interaction of unique and not null constraints
> ---------------------------------------------------------------
>
>                 Key: DERBY-3630
>                 URL: https://issues.apache.org/jira/browse/DERBY-3630
>             Project: Derby
>          Issue Type: Improvement
>          Components: SQL
>    Affects Versions: 10.4.1.3
>            Reporter: Rick Hillegas
>            Priority: Minor
>              Labels: derby_triage10_10
>
> If you constrain a column to be both "not null" and "unique", then Derby 
> creates an old-style unique index on the column. If you later remove the "not 
> null" constraint, Derby converts the index to be a new-style 
> unique-with-duplicate-nulls index.
> However, if you constrain a column to be "unique" and then later add a "not 
> null" constraint, then Derby does not convert the unique-with-duplicate-nulls 
> index into an old-style unique index.
> It seems that the order in which you add these constraints affects the 
> metadata. I don't know if these differences affect the optimizer's decisions.
> Here is a script which shows this behavior:
> drop table v;
> 0 rows inserted/updated/deleted
> ij> create table v
> (
>    a int,
>    unique ( a )
> );
> 0 rows inserted/updated/deleted
> ij> drop table w;
> 0 rows inserted/updated/deleted
> ij> create table w
> (
>    m int not null,
>    unique ( m )
> );
> 0 rows inserted/updated/deleted
> ij> select cast( t.tableName as varchar( 10 )), cast (c.conglomeratename as 
> varchar( 30 )), c.descriptor
> from sys.sysconglomerates c, sys.systables t
> where c.tableid = t.tableid
> and ( t.tablename = 'V'  or t.tablename='W')
> and c.isconstraint
> ;
> 1         |2                             |DESCRIPTOR     
> ---------------------------------------------------------
> V         |SQL080417133332230            |UNIQUE WITH DU&
> W         |SQL080417133332330            |UNIQUE BTREE (&
> 2 rows selected
> ij> alter table v
>   alter column a not null
> ;
> 0 rows inserted/updated/deleted
> ij> alter table w
>   alter column m null
> ;
> 0 rows inserted/updated/deleted
> ij> select cast( t.tableName as varchar( 10 )), cast (c.conglomeratename as 
> varchar( 30 )), c.descriptor
> from sys.sysconglomerates c, sys.systables t
> where c.tableid = t.tableid
> and ( t.tablename = 'V'  or t.tablename='W')
> and c.isconstraint
> ;
> 1         |2                             |DESCRIPTOR     
> ---------------------------------------------------------
> V         |SQL080417133332230            |UNIQUE WITH DU&
> W         |SQL080417133332330            |UNIQUE WITH DU&
> 2 rows selected

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to