[ 
http://issues.apache.org/jira/browse/DERBY-2018?page=comments#action_12449050 ] 
            
Yip Ng commented on DERBY-2018:
-------------------------------

>Christian d'Heureuse wrote:
> Why does the statement CREATE VIEW v1 (f1) AS VALUES NULL have to be 
> forbidden? 

One reason is to stay consistent with the behavior with issuing VALUES NULL in 
Derby.  e.g.:

  ij> values null;
  ERROR 42X07: Null is only allowed in a VALUES clause within an INSERT 
statement.

  ij> create view v1 (c1) as values null;
  ERROR 42X07: Null is only allowed in a VALUES clause within an INSERT 
statement.

If CREATE VIEW v1 AS SELECT NULL as f1 executes successfully.  What is the data 
type for this 
view column?  Integer type? Character type or something else?  In any case, it 
is going to be an implementation defined which in my opinion is not very 
portable and it is better to declare this explicitly:

ij> values cast(null as integer);
1
-----------
NULL

1 row selected
ij> create view v1 (c1) as values cast(null as integer);
0 rows inserted/updated/deleted
ij> select * from v1;
C1
-----------
NULL

1 row selected

Of course, you may not agree with me.  So perhaps this issue can be further 
discuss in the Derby dev list to see how the community feels about it.  In any 
case, the current state is better than having a NPE to occur.  =)


> NullPointerException in CREATE VIEW ... VALUES NULL;
> ----------------------------------------------------
>
>                 Key: DERBY-2018
>                 URL: http://issues.apache.org/jira/browse/DERBY-2018
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.2.1.6
>         Environment: Java 1.5.0_06-b05
>            Reporter: Christian d'Heureuse
>         Assigned To: Yip Ng
>            Priority: Minor
>             Fix For: 10.3.0.0
>
>         Attachments: derby2018-trunk-diff01.txt, derby2018-trunk-stat01.txt
>
>
> The following statement produces a NullPointerException:
>    CREATE VIEW v1 (f1) AS VALUES NULL;
> Stack trace:
> ----------------------------------------------------------------
> 2006-10-30 12:39:31.750 GMT:
>  Booting Derby version The Apache Software Foundation - Apache Derby - 
> 10.2.1.6 - (452058): instance c013800d-010e-993b-512f-00000012f418
> on database directory C:\temp_sys\temp_Derby_TestErr_db
> Database Class Loader started - derby.database.classpath=''
> 2006-10-30 12:39:38.484 GMT Thread[main,5,main] (XID = 122), (SESSIONID = 0), 
> (DATABASE = c:\temp_sys\temp_Derby_TestErr_db), (DRDAID = null), Cleanup 
> action starting
> 2006-10-30 12:39:38.484 GMT Thread[main,5,main] (XID = 122), (SESSIONID = 0), 
> (DATABASE = c:\temp_sys\temp_Derby_TestErr_db), (DRDAID = null), Failed 
> Statement is: CREATE VIEW v1 (f1) AS VALUES NULL
> java.lang.NullPointerException
>         at 
> org.apache.derby.impl.sql.catalog.SYSCOLUMNSRowFactory.makeRow(Unknown Source)
>         at 
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.addDescriptorArray(Unknown
>  Source)
>         at 
> org.apache.derby.impl.sql.execute.CreateViewConstantAction.executeConstantAction(Unknown
>  Source)
>         at org.apache.derby.impl.sql.execute.MiscResultSet.open(Unknown 
> Source)
>         at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown 
> Source)
>         at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown 
> Source)
>         at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
>         at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
>         at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
>         at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
>         at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
>         at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
>         at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
>         at org.apache.derby.impl.tools.ij.Main14.main(Unknown Source)
>         at org.apache.derby.tools.ij.main(Unknown Source)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to