I created a via Squirrel.

CREATE VIEW duplicateTitle
AS
SELECT med.id, med.title
FROM medium med, medium med2, movie mov1, movie mov2
WHERE med.id <> med2.id
AND lower(med.title) = lower(med2.title)
AND med.id = mov1.id
AND med2.id = mov2.id
UNION
SELECT med.id, med.title
FROM medium med, medium med2, audio aud1, audio aud2
WHERE med.id <> med2.id
AND lower(med.title) = lower(med2.title)
AND med.id = aud1.id
AND med2.id = aud2.id;

Later I dumped the database via
Script.main("-url", getDatabaseURL(database), "-script", backUpFile, "-
user", null , "-password", null, "-options", "DROP");

Restoring the database via
RunScript.main("-url", getDatabaseURL(database), "-script",
backUpFile, "-user", null , "-password", null);

leads to an SQL-error:
2011-04-21 12:50:18,171 [AWT-EventQueue-0] ERROR database.db.Database:
org.h2.jdbc.JdbcSQLException: Syntax Fehler in SQL Befehl "
CREATE FORCE VIEW PUBLIC.DUPLICATETITLE(ID, TITLE) AS
(SELECT MED.ID, MED.TITLE
FROM PUBLIC.MOVIE MOV1
INNER JOIN PUBLIC.MOVIE MOV2                              ON 1=1
INNER JOIN PUBLIC.MEDIUM
MED[*]                                          ON
1=1
INNER JOIN PUBLIC.MEDIUM MED2
ON 1=1
WHERE (MED2.ID = MOV2.ID) AND ((MED.ID = MOV1.ID) AND ((MED.ID <>
MED2.ID) AND (LOWER(MED.TITLE) = LOWER(MED2.TITLE))))) UNION (SELECT
MED.ID, MED.TITLE
FROM PUBLIC.AUDIO AUD1
INNER JOIN PUBLIC.AUDIO AUD2                              ON 1=1
INNER JOIN PUBLIC.MEDIUM MED
ON 1=1
INNER JOIN PUBLIC.MEDIUM MED2
ON 1=1
WHERE (MED2.ID = AUD2.ID) AND ((MED.ID = AUD1.ID) AND ((MED.ID <>
MED2.ID) AND (LOWER(MED.TITLE) = LOWER(MED2.TITLE))))) "
Syntax error in SQL statement "
CREATE FORCE VIEW PUBLIC.DUPLICATETITLE(ID, TITLE) AS
(SELECT MED.ID, MED.TITLE
FROM PUBLIC.MOVIE MOV1
INNER JOIN PUBLIC.MOVIE MOV2                              ON 1=1
INNER JOIN PUBLIC.MEDIUM
MED[*]                                          ON
1=1
INNER JOIN PUBLIC.MEDIUM MED2
ON 1=1
WHERE (MED2.ID = MOV2.ID) AND ((MED.ID = MOV1.ID) AND ((MED.ID <>
MED2.ID) AND (LOWER(MED.TITLE) = LOWER(MED2.TITLE))))) UNION (SELECT
MED.ID, MED.TITLE
FROM PUBLIC.AUDIO AUD1
INNER JOIN PUBLIC.AUDIO AUD2                              ON 1=1
INNER JOIN PUBLIC.MEDIUM MED
ON 1=1
INNER JOIN PUBLIC.MEDIUM MED2
ON 1=1
WHERE (MED2.ID = AUD2.ID) AND ((MED.ID = AUD1.ID) AND ((MED.ID <>
MED2.ID) AND (LOWER(MED.TITLE) = LOWER(MED2.TITLE))))) "; SQL
statement:

CREATE FORCE VIEW PUBLIC.DUPLICATETITLE(ID, TITLE) AS
(SELECT MED.ID, MED.TITLE
FROM PUBLIC.MOVIE MOV1 /* PUBLIC.MOVIE.tableScan */
INNER JOIN PUBLIC.MOVIE MOV2 /* PUBLIC.MOVIE.tableScan */ ON 1=1
INNER JOIN PUBLIC.MEDIUM MED /* PUBLIC.PRIMARY_KEY_1: ID = MOV1.ID */
ON 1=1 /* WHERE MED.ID = MOV1.ID */
INNER JOIN PUBLIC.MEDIUM MED2 /* PUBLIC.PRIMARY_KEY_1: ID = MOV2.ID */
ON 1=1
WHERE (MED2.ID = MOV2.ID) AND ((MED.ID = MOV1.ID) AND ((MED.ID <>
MED2.ID) AND (LOWER(MED.TITLE) = LOWER(MED2.TITLE))))) UNION (SELECT
MED.ID, MED.TITLE
FROM PUBLIC.AUDIO AUD1 /* PUBLIC.AUDIO.tableScan */
INNER JOIN PUBLIC.AUDIO AUD2 /* PUBLIC.AUDIO.tableScan */ ON 1=1
INNER JOIN PUBLIC.MEDIUM MED /* PUBLIC.PRIMARY_KEY_1: ID = AUD1.ID */
ON 1=1 /* WHERE MED.ID = AUD1.ID */
INNER JOIN PUBLIC.MEDIUM MED2 /* PUBLIC.PRIMARY_KEY_1: ID = AUD2.ID */
ON 1=1
WHERE (MED2.ID = AUD2.ID) AND ((MED.ID = AUD1.ID) AND ((MED.ID <>
MED2.ID) AND (LOWER(MED.TITLE) = LOWER(MED2.TITLE))))) [42000-140]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:
327)
        at org.h2.message.DbException.get(DbException.java:167)
        at org.h2.message.DbException.get(DbException.java:144)
        at org.h2.message.DbException.getSyntaxError(DbException.java:179)
        at org.h2.command.Parser.getSyntaxError(Parser.java:471)
        at org.h2.command.Parser.prepareCommand(Parser.java:229)
        at org.h2.engine.Session.prepareLocal(Session.java:434)
        at org.h2.server.TcpServerThread.process(TcpServerThread.java:223)
        at org.h2.server.TcpServerThread.run(TcpServerThread.java:134)
        at java.lang.Thread.run(Unknown Source)

        at org.h2.engine.SessionRemote.done(SessionRemote.java:533)
        at org.h2.command.CommandRemote.prepare(CommandRemote.java:70)
        at org.h2.command.CommandRemote.<init>(CommandRemote.java:48)
        at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:411)
        at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:
1071)
        at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:163)
        at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:151)
        at org.h2.tools.RunScript.process(RunScript.java:249)
        at org.h2.tools.RunScript.process(RunScript.java:185)
        at org.h2.tools.RunScript.process(RunScript.java:310)
        at org.h2.tools.RunScript.runTool(RunScript.java:139)
        at org.h2.tools.RunScript.main(RunScript.java:67)

Resoring the database without any view in earlier versions of my
program worked very well, I never experienced any problesm. So what is
wrong ?

-- 
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