[ 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
