Here's the test case

CREATE TABLE FOO(ID INT);
CREATE VIEW BAR AS SELECT CAST(NULL AS INT) AS BAR_COL FROM FOO;
CREATE TABLE SNAFU AS SELECT CAST(NULL AS INT) AS SNAFU_COL FROM FOO;
SELECT * FROM FOO;
SELECT * FROM BAR;
SELECT * FROM SNAFU;

All seems to be ok except that view BAR and table SNAFU report as their type NULL.
It should be INT.

But there is more.
Close the database and open it.
Then make ANY select and you will get

Cause: org.h2.jdbc.JdbcSQLException: Unknown data type: "NULL"; SQL statement:
CREATE CACHED TABLE PUBLIC.SNAFU(
    SNAFU_COL NULL
) [50004-134]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:316)
    at org.h2.message.DbException.get(DbException.java:167)
    at org.h2.message.DbException.get(DbException.java:144)
    at org.h2.command.Parser.parseColumn(Parser.java:3411)
    at org.h2.command.Parser.parseColumnForTable(Parser.java:3265)
    at org.h2.command.Parser.parseCreateTable(Parser.java:4725)
    at org.h2.command.Parser.parseCreate(Parser.java:3517)
    at org.h2.command.Parser.parsePrepared(Parser.java:314)
    at org.h2.command.Parser.parse(Parser.java:278)
    at org.h2.command.Parser.parse(Parser.java:250)
    at org.h2.command.Parser.prepare(Parser.java:199)
    at org.h2.engine.Session.prepare(Session.java:405)
    at org.h2.engine.Session.prepare(Session.java:392)
    at org.h2.engine.MetaRecord.execute(MetaRecord.java:56)
    at org.h2.engine.Database.open(Database.java:584)
    at org.h2.engine.Database.openDatabase(Database.java:204)
    at org.h2.engine.Database.<init>(Database.java:199)
    at org.h2.engine.Engine.openSession(Engine.java:56)
    at org.h2.engine.Engine.openSession(Engine.java:141)
    at org.h2.engine.Engine.getSession(Engine.java:120)
    at org.h2.server.TcpServerThread.run(TcpServerThread.java:118)
    at java.lang.Thread.run(Thread.java:619)

You have just managed to make your database UNREADABLE!
Reason is the NULL datatype that h2 has erroneously set as the datatype of SNAFU_COL.

Cheers,
- Rami

--
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to